Outils pour utilisateurs

Outils du site


securite_postgres

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
securite_postgres [2020/05/07 11:10] – [Accès limité au connecteur à postgresql pour l'application openAssociation] fraynaudsecurite_postgres [2020/06/08 15:50] (Version actuelle) fraynaud
Ligne 1: Ligne 1:
-===== Permissions sous postgresql =====+====== Permissions sous postgresql =====
 + --- //[[f.raynaud@arles-linux.org|François Raynaud]] 2020/06/08 15:50// 
  
 Ces commandes fonctionnent avec la version postgresql 11. Ces commandes fonctionnent avec la version postgresql 11.
Ligne 5: Ligne 7:
 Nous allons modifier l'installation de postgresql  accéder en local avec psql et apache. Ensuite nous essaierons une connexion distante. Enfin nous formaliserons un utilisateur limité pour accéder à l'application openAssociation. Nous allons modifier l'installation de postgresql  accéder en local avec psql et apache. Ensuite nous essaierons une connexion distante. Enfin nous formaliserons un utilisateur limité pour accéder à l'application openAssociation.
  
-Nous allons travailler essentiellement sur le fichier pg_hba.conf+Nous allons travailler essentiellement sur le fichier [[https://docs.postgresql.fr/8.2/client-authentication.html#auth-pg-hba-conf|pg_hba.conf]]
  
-[[http://www.i3s.unice.fr/~rueher/Cours/BD/DocPostgresSQL9-5_HTML/client-authentication.html#auth-pg-hba-conf|source sur pg_pga.conf]]+[[http://www.i3s.unice.fr/~rueher/Cours/BD/DocPostgresSQL9-5_HTML/client-authentication.html#auth-pg-hba-conf|source sur pg_pha.conf]]
  
 Avant toute modification, il est conseillé de recopier le fichier Avant toute modification, il est conseillé de recopier le fichier
Ligne 51: Ligne 53:
 psql -U postgres psql -U postgres
    authentification par mot de passe échouée pour l'utilisateur postgres     authentification par mot de passe échouée pour l'utilisateur postgres 
-# method=peer +# method=peer l utilisateur linux doit être postgres 
-psql -U postgres +su postgres 
-   authentification peer échouée pour l'utilisateur postgres+psql 
 +postgres 
 +   authentification peer ok 
 # method trust -> ok # method trust -> ok
 psql -U postgres psql -U postgres
Ligne 59: Ligne 63:
 </code> </code>
  
-Il est proposé de mettre la méthode trust et redémarrer apache:+Il est proposé de mettre la méthode trust et redémarrer apache :
  
 <code> <code>
Ligne 115: Ligne 119:
 L'objectif est de pouvoir connecter apache/php avec la base : L'objectif est de pouvoir connecter apache/php avec la base :
  
-Le script ci dessous permet de tester la connexion php_pgsql:+Le script ci dessous permet de tester la connexion php_pgsql avec la commande php [[https://www.php.net/manual/fr/function.pg-connect.php|pg_connect]]
  
 <code> <code>
Ligne 174: Ligne 178:
  
 ====accès avec une ip externe (contrôle IP)==== ====accès avec une ip externe (contrôle IP)====
- +{{ :connexion_pgadmin.png?400|}} 
-Il faut autoriser des IP externes dans les cas suivants :+Il faut autoriser des IP externes dans les cas suivants (tests avec un raspberry et postgres 9.4) :
   * le serveur web apache est sur un autre serveur que celui de postgres   * le serveur web apache est sur un autre serveur que celui de postgres
-  * les développeurs accèdent via un client comme pgadmin sur le serveur postgres+  * les développeurs accèdent via un client comme pgadmin sur le serveur postgres (image ci contre)
  
 +Rajouter la ligne suivante dans /etc/postgresql/9.4/main/pg_hba.conf pour que les adresses en 192.168 se connectent à la base 
  
 +<code>
 +# IPv4 local connections:
 +host    all             all             192.168.0.0/16          md5
 +</code>
 +
 +Mettre * (ou l'adresseIP autorisé) à la place de localhost dans la directive listen_addresses  de /etc/postgresql/11/main/postgresql.conf
 +
 +<code>
 +listen_addresses = '*'
 +</code>
 +
 +redémarrer postgresql
 +
 +<code>
 +service postgresql restart
 +</code>
  
 <note> <note>
-Il faut paramétrer listen adresse 
   * TYPE host : intercepte les tentatives de connexion TCPIP   * TYPE host : intercepte les tentatives de connexion TCPIP
   * TYPE hostnossl : intercepte les tentatives de connexion TCPIP qui ne sont pas ssl   * TYPE hostnossl : intercepte les tentatives de connexion TCPIP qui ne sont pas ssl
Ligne 195: Ligne 215:
 L'objectif est de limiter les privilèges du connecteur strictement au besoin de l'application openAssociation. L'objectif est de limiter les privilèges du connecteur strictement au besoin de l'application openAssociation.
  
-[[https://sqlpro.developpez.com/cours/sqlaz/dcl/#L2.1|sources pour les privilèges standard QL2]]+[[https://sqlpro.developpez.com/cours/sqlaz/dcl/#L2.1|sources pour les privilèges standard SQL2]]
  
 Création d'un utilisateur Création d'un utilisateur
Ligne 236: Ligne 256:
 </code> </code>
  
-Affichage des privilèges sous postgres+Affichage des privilèges sous postgres. voir [[psql_commande|raccourci commandes en ligne]]
  
-<code> 
- 
- openstock=> \du 
-                                              Liste des rôles 
- Nom du rôle |                                    Attributs                                    | Membre  
--------------+---------------------------------------------------------------------------------+------- 
- deb         | Superutilisateur, Créer un rôle, Créer une base                                 | {} 
- deb_asso    |                                                                                 | {} 
- postgres    | Superutilisateur, Créer un rôle, Créer une base, Réplication, Contournement RLS | {} 
- 
-openstock=> \dp  openstock_association.* 
-       OU 
-openstock=> \z  openstock_association.* 
-                                                           Droits d'accès 
-        Schéma                    Nom            |   Type        Droits d'accès       | Droits d'accès à la colonne | Politiques  
------------------------+---------------------------+----------+---------------------------+------------ openstock_association  | archive_entre             | table    | postgres=arwdDxt/postgres+|                               
-                                                          | deb_asso=arwd/postgres    |                               
-openstock_association  | archive_entre_seq         | séquence | postgres=rwU/postgres    +|                              
-                                                          | deb_asso=rw/postgres      |  
- 
-openstock=> SELECT GRANTOR, GRANTEE, TABLE_NAME, ' <TABLE>' AS COLUMN_NAME, PRIVILEGE_TYPE,   IS_GRANTABLE FROM   INFORMATION_SCHEMA.TABLE_PRIVILEGES 
-WHERE  GRANTEE IN ('deb_asso'); 
- 
- grantor  | grantee  |       table_name        | column_name | privilege_type | is_grantable  
-----------+----------+-------------------------+-------------+----------------+-------------- 
- postgres | deb_asso | om_permission            <TABLE>    | INSERT         | NO 
- postgres | deb_asso | om_permission            <TABLE>    | SELECT         | NO 
- postgres | deb_asso | om_permission            <TABLE>    | UPDATE         | NO 
- postgres | deb_asso | om_permission            <TABLE>    | DELETE         | NO 
- postgres | deb_asso | om_lettretype            <TABLE>    | INSERT         | NO 
- postgres | deb_asso | om_lettretype            <TABLE>    | SELECT         | NO 
- postgres | deb_asso | om_lettretype            <TABLE>    | UPDATE         | NO 
- 
-... 
-</code> 
  
 On peut enlever des permissions avec la commande REVOKE. On peut enlever des permissions avec la commande REVOKE.
Ligne 303: Ligne 288:
 Le super utilisateur "deb" peut continuer à le faire Le super utilisateur "deb" peut continuer à le faire
  
-Nous vous proposons pour mémoire la liste des raccourcis d'instructions courtes pour les lignes de commandes psql+[[structure_postgres|la structure de postgres]]
  
-<code> 
-\l  liste des bases 
-\c [nombase] changer de base 
-\d [nomschema.*] liste des relations 
-\dt liste des tables 
-\dv liste des vues 
-\ds liste des séquences 
-\du liste des utilisateur 
-\dt liste des droits utilisateurs 
-\da liste des fonctions d aggregation 
-\dA liste des méthodes d'accès 
-\db liste des tablespaces 
-\dc liste des conversions 
-\ddp liste des droits par défaut 
-\df liste des triggers 
-\dg liste des rôles 
-\di liste des index 
-\dn liste des schémas 
-\dp ou \z  droit d accès a une table 
-\dy liste des triggers 
-\dx liste extension 
-\e edite le tampon de la requête avec un éditeur externe 
-\ef edite la définition de la fonction 
-\ev édite la définition de la vue 
-\w ecrit dans un fichier 
-\o [fichier] envoie dans un fichier le résultat de la requête 
-\s historique 
-\h aide 
-\a mode d affichage 
-\q quitter 
-</code> 
  
securite_postgres.1588849825.txt.gz · Dernière modification : 2020/05/07 11:10 de fraynaud