serveurs:installation:db-srv:postgresql-ssh-tunnel

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édentes Révision précédente
Prochaine révision
Révision précédente
serveurs:installation:db-srv:postgresql-ssh-tunnel [2021/10/06 08:32] – [Configuration de l'accès avec DBeaver] jpmilcentserveurs:installation:db-srv:postgresql-ssh-tunnel [2023/10/31 09:06] (Version actuelle) – [Création de l'utilisateur et définition des droits] jpmilcent
Ligne 42: Ligne 42:
  
   * Se connecter à la base avec un compte superadmin : '' psql -h "localhost" -U "admin" -d "geonature2db" ''    * Se connecter à la base avec un compte superadmin : '' psql -h "localhost" -U "admin" -d "geonature2db" '' 
-  * Exécuter les requêtes suivantes :<code sql>+  * Pour attribuer les droits de lecture seule à un utilisateur, si les droits ont été révoqué sur le schéma ''public'' des bases de données, il suffit depuis Postgresql 14 d’attribuer l'utilisateur lecteur au rôle par défaut ''pg_read_all_data'' et d'autoriser sa connexion à la base. Exécuter les requêtes suivantes :<code sql>
 -- Créer l'utilisateur "gnreader" -- Créer l'utilisateur "gnreader"
 CREATE USER gnreader WITH ENCRYPTED PASSWORD '<mot-de-passe>' ; CREATE USER gnreader WITH ENCRYPTED PASSWORD '<mot-de-passe>' ;
Ligne 49: Ligne 49:
 GRANT CONNECT ON DATABASE geonature2db TO gnreader ;  GRANT CONNECT ON DATABASE geonature2db TO gnreader ; 
 GRANT CONNECT ON DATABASE gnatlas TO gnreader ;  GRANT CONNECT ON DATABASE gnatlas TO gnreader ; 
 +
 +-- Associer l'utilisateur gnreader au rôle par défaut pg_read_all_data
 +GRANT pg_read_all_data TO gnreader;
 </code> </code>
 +    * Pour révoquer les droits d'accès en lecture seule à une base de données : <code sql>REVOKE CONNECT ON DATABASE <nom-base> FROM <nom-utilisateur-lecteur>;</code>
  
-=== Base "geonature2db" ===+=== 🗑️ Base "geonature2db" (avant Postgresql 14) ===
   * Se connecter à la base "//geonature2db//" avec un compte superadmin : '' psql -h "localhost" -U "admin" -d "geonature2db" ''    * Se connecter à la base "//geonature2db//" avec un compte superadmin : '' psql -h "localhost" -U "admin" -d "geonature2db" '' 
   * Exécuter les requêtes suivantes :<code sql>   * Exécuter les requêtes suivantes :<code sql>
Ligne 80: Ligne 84:
 -- Ajouter l'accès en lecture sur les futures tables : -- Ajouter l'accès en lecture sur les futures tables :
 -- Réutiliser la requête précédente et remplacer la première et la dernière ligne : -- Réutiliser la requête précédente et remplacer la première et la dernière ligne :
-ALTER DEFAULT PRIVILEGES FOR USER geonatadmin IN SCHEMA+ALTER DEFAULT PRIVILEGES FOR USER gnreader IN SCHEMA
 pg_toast, pg_temp_1, pg_toast_temp_1, pg_catalog, public, information_schema, gn_commons, gn_exports, gn_imports, gn_meta, gn_monitoring, gn_permissions, gn_sensitivity, gn_synthese, ref_geo, ref_habitats, ref_nomenclatures, taxonomie, utilisateurs  pg_toast, pg_temp_1, pg_toast_temp_1, pg_catalog, public, information_schema, gn_commons, gn_exports, gn_imports, gn_meta, gn_monitoring, gn_permissions, gn_sensitivity, gn_synthese, ref_geo, ref_habitats, ref_nomenclatures, taxonomie, utilisateurs 
     GRANT SELECT ON TABLES TO gnreader ;     GRANT SELECT ON TABLES TO gnreader ;
Ligne 86: Ligne 90:
 -- Ajouter l'accès en lecture sur les futures sequences : -- Ajouter l'accès en lecture sur les futures sequences :
 -- Réutiliser la requête précédente et remplacer la dernière ligne : -- Réutiliser la requête précédente et remplacer la dernière ligne :
-ALTER DEFAULT PRIVILEGES FOR USER geonatadmin IN SCHEMA+ALTER DEFAULT PRIVILEGES FOR USER gnreader IN SCHEMA
 pg_toast, pg_temp_1, pg_toast_temp_1, pg_catalog, public, information_schema, gn_commons, gn_exports, gn_imports, gn_meta, gn_monitoring, gn_permissions, gn_sensitivity, gn_synthese, ref_geo, ref_habitats, ref_nomenclatures, taxonomie, utilisateurs  pg_toast, pg_temp_1, pg_toast_temp_1, pg_catalog, public, information_schema, gn_commons, gn_exports, gn_imports, gn_meta, gn_monitoring, gn_permissions, gn_sensitivity, gn_synthese, ref_geo, ref_habitats, ref_nomenclatures, taxonomie, utilisateurs 
     GRANT SELECT ON SEQUENCES TO gnreader ;     GRANT SELECT ON SEQUENCES TO gnreader ;
 </code> </code>
  
-=== Base "gnatlas" ===+=== 🗑️ Base "gnatlas" (avant Postgresql 14) ===
   * Se connecter à la base avec un compte superadmin : '' psql -h "localhost" -U "admin" -d "gnatlas" ''    * Se connecter à la base avec un compte superadmin : '' psql -h "localhost" -U "admin" -d "gnatlas" '' 
   * Exécuter les requêtes suivantes :<code sql>   * Exécuter les requêtes suivantes :<code sql>
Ligne 120: Ligne 124:
 -- Ajouter l'accès en lecture sur les futures tables : -- Ajouter l'accès en lecture sur les futures tables :
 -- Réutiliser la requête précédente et remplacer la première et la dernière ligne : -- Réutiliser la requête précédente et remplacer la première et la dernière ligne :
-ALTER DEFAULT PRIVILEGES FOR USER geonatadmin IN SCHEMA+ALTER DEFAULT PRIVILEGES FOR USER gnreader IN SCHEMA
 pg_toast, pg_temp_1, pg_toast_temp_1, pg_catalog, public, information_schema, taxonomie, synthese, ref_geo, atlas, pg_temp_22, pg_toast_temp_22, pg_temp_24, pg_toast_temp_24, pg_temp_45, pg_toast_temp_45, pg_temp_37, pg_toast_temp_37  pg_toast, pg_temp_1, pg_toast_temp_1, pg_catalog, public, information_schema, taxonomie, synthese, ref_geo, atlas, pg_temp_22, pg_toast_temp_22, pg_temp_24, pg_toast_temp_24, pg_temp_45, pg_toast_temp_45, pg_temp_37, pg_toast_temp_37 
     GRANT SELECT ON TABLES TO gnreader ;     GRANT SELECT ON TABLES TO gnreader ;
Ligne 126: Ligne 130:
 -- Ajouter l'accès en lecture sur les futures sequences : -- Ajouter l'accès en lecture sur les futures sequences :
 -- Réutiliser la requête précédente et remplacer la dernière ligne : -- Réutiliser la requête précédente et remplacer la dernière ligne :
-ALTER DEFAULT PRIVILEGES FOR USER geonatadmin IN SCHEMA+ALTER DEFAULT PRIVILEGES FOR USER gnreader IN SCHEMA
 pg_toast, pg_temp_1, pg_toast_temp_1, pg_catalog, public, information_schema, taxonomie, synthese, ref_geo, atlas, pg_temp_22, pg_toast_temp_22, pg_temp_24, pg_toast_temp_24, pg_temp_45, pg_toast_temp_45, pg_temp_37, pg_toast_temp_37  pg_toast, pg_temp_1, pg_toast_temp_1, pg_catalog, public, information_schema, taxonomie, synthese, ref_geo, atlas, pg_temp_22, pg_toast_temp_22, pg_temp_24, pg_toast_temp_24, pg_temp_45, pg_toast_temp_45, pg_temp_37, pg_toast_temp_37 
     GRANT SELECT ON SEQUENCES TO gnreader ;     GRANT SELECT ON SEQUENCES TO gnreader ;
Ligne 137: Ligne 141:
 CREATE USER MAPPING FOR gnreader SERVER geonaturedbserver OPTIONS (user 'gnreader', password '<mot-de-passe-de-gnreader>'); CREATE USER MAPPING FOR gnreader SERVER geonaturedbserver OPTIONS (user 'gnreader', password '<mot-de-passe-de-gnreader>');
 </code> </code>
 +
 +=== Ajout d'un espace permetant la création de table/VM pour gnreader ===
 +
 +//gnreader// est un utilisateur en lecture seule sur les schémas de GeoNature mais nous lui créons un schéma où il aura un accès en écriture.
 +Cela permettra la création de table ou VM pour des requêtes d'extraction sur les tables de GeoNature.
 +
 +<code sql>
 +-- Création du schéma "playground"
 +CREATE SCHEMA playground AUTHORIZATION geonatadmin;
 +
 +-- Ajout des droits d'écriture sur schéma à l'utilisateur gnreader
 +GRANT USAGE, CREATE ON SCHEMA playground TO gnreader;
 +</code>
 +
 +
  
 ==== Modification des autorisations d'accès au serveur Postgresql ==== ==== Modification des autorisations d'accès au serveur Postgresql ====
Ligne 142: Ligne 161:
     * Ajouter le contenu suivant : <code properties>     * Ajouter le contenu suivant : <code properties>
 # GeoNature : access by gnreader (read only) # GeoNature : access by gnreader (read only)
-host    geonature2db    gnreader        10.0.1.20/32            md5 +host    geonature2db    gnreader        10.0.1.20/32            scram-sha-256 
-host    gnatlas         gnreader        10.0.1.20/32            md5+host    gnatlas         gnreader        10.0.1.20/32            scram-sha-256
 </code> </code>
   * Recharger la configuration //Postgresql// : '' systemctl reload postgresql ''   * Recharger la configuration //Postgresql// : '' systemctl reload postgresql ''
  
 ==== Configuration de l'accès avec DBeaver ==== ==== Configuration de l'accès avec DBeaver ====
-  * Tester la connexion en lecture seule depuis Dbeaver en créant une nouvelle connexion avec ces paramètres : +Vous pouvez configurer votre accès avec [[|DBeaver]] comme indiqué sur [[serveurs:installation:dbeaver|la page spécifique à cet outil]].
-    * Onglet Général : +
-      * Host : localhost (tester aussi 10.0.1.20 en cas de problème) +
-      * Port : 5432 +
-      * Database : geonature2db +
-      * Authentification : Database Native +
-      * Nom d'utilisateur : gnreader +
-      * Mot de passe : <gnreader-password> +
-      * Cocher "Save password locally" +
-      * Driver name : PostgreSQL +
-    * Onglet Postgresql : +
-      * Cocher "Show all databases" +
-      * Laisser les autres champs avec les valeurs par défaut. +
-    * Onglet SSH : +
-      * Cocher "Utiliser le tunnel SSH" +
-      * Hôte/IP : <ip-db-srv> +
-      * Port : <port-ssh-db-srv> +
-      * Nom d'utilisateur : dbreader +
-      * Pour une connexion via le mot de passe : +
-        * Méthode d'authentification : "Mot de passe" +
-        * Mot de passe : <dbeader-unix-password> +
-        * Cocher "Enregistrer le mot de passe" +
-      * Pour une connexion via une clé SSH : +
-        * Méthode d'authentification : "Clef publique" +
-        * Clé privée : indiquer le chemin vers votre clé SSH privée (Ex. : ''/home/${USER}/.ssh/id_rsa''+
-        * Phrase passe : indiquer votre "passe phrase" associé à votre clé SSH ou laisser vide si vous n'en avez pas associé. +
-        * Cocher "Enregistrer le mot de passe" +
-  * Cliquer en bas à gauche sur "Test de la connexion..."+
  
-===== Configuration d'un accès en édition avec DBeaver ===== 
-  * Pour créer **un accès en édition** aux bases de données vous pouvez prendre exemple sur la connexion de l'utilisateur en lecture seule ''gnreader'' 
-  * Pour sécurisé les manipulations réalisées avec une connexion sur les bases de données de production, vous pouvez l'indiquer à Dbeaver.  
-    * Lors de l'édition d'une connexion, dans le menu de gauche de la modale "Configuration de la connexion...", cliquer sur "Général". 
-    * Dans la section "Général", pour le champ "Type de connexion" choisir "Production" ! 
-      * Dbeaver demandera une confirmation pour l'exécution de SQL, pour chaque modification des données et arrêtera automatiquement les requête en attente trop longue dans les transactions. 
  
  • serveurs/installation/db-srv/postgresql-ssh-tunnel.1633509154.txt.gz
  • Dernière modification : 2021/10/06 08:32
  • de jpmilcent