Ajout d'utilisateurs à une base de données PostgreSQL
PostgreSQL utilise des rôles pour se connecter au cluster de bases de données et aux bases de données. Vous pouvez ajouter des rôles au cluster de bases de données PostgreSQL.
Les utilisateurs de base de données individuels sont connus sous le nom de rôles de connexion. Pour tous les rôles de connexion qui possèdent des objets dans la géodatabase, vous devez également créer une structure dans cette base de données. La structure doit avoir le même nom que le rôle de connexion et appartenir à celui-ci.
Vous pouvez également créer des rôles de groupe auxquels des rôles de connexion peuvent être ajoutés. Vous pouvez ensuite spécifier des autorisations sur le groupe qui seront appliquées à tous les rôles de connexion associés.
![Remarque Remarque](rsrc/note.png)
Vous devez créer une structure correspondante pour chaque rôle de connexion dans le groupe qui possède des objets dans la géodatabase. Vous ne pouvez pas créer de structure pour le rôle de groupe.
Vous pouvez utiliser une application cliente PostgreSQL, telle que pgAdmin III ou PL/pgSQL, pour créer un rôle dans le cluster de bases de données PostgreSQL. Les instructions suivantes vous indiquent comment créer un rôle, une structure et un groupe à l'aide de PL/pgSQL et octroyer des autorisations au rôle ou au groupe.
![Astuce Astuce](rsrc/tip.png)
Un script SQL nommé roles_schemas_privileges.sql est installé dans SDEHOME > outils > postgres. Vous pouvez modifier et utiliser ce script pour créer des utilisateurs et leurs structures et accorder des autorisations dans la base de données.
- Connectez-vous à PL/pgSQL en tant qu'utilisateur avec les autorisations requises pour créer d'autres rôles dans le SGBD. Il s'agit en général du super-utilisateur postgres.
-
Exécutez la commande CREATE ROLE.
Dans cet exemple, un rôle de connexion, role4u, est créé avec un mot de passe chiffré. Le rôle peut créer des objets dans la base de données. Cependant, il n'est pas un super-utilisateur, il n'hérite pas d'autorisations des groupes et il ne peut pas créer de rôles dans le cluster de bases de données.
CREATE ROLE role4u LOGIN ENCRYPTED PASSWORD 'super.secret' NOSUPERUSER NOINHERIT CREATEDB NOCREATEROLE;
Astuce :
Si vous avez l'intention d'attribuer cette connexion à un groupe, vous pouvez d'ores et déjà la créer avec des autorisations INHERIT.
-
Exécutez la commande CREATE SCHEMA pour créer une structure pour le rôle de connexion dans la base de données où est stockée la géodatabase.
Dans cet exemple, la structure role4u correspondante est créée et l'autorisation sur la structure est octroyée à la connexion role4u :
CREATE SCHEMA role4u AUTHORIZATION role4u;
- Octroyez les autorisations USAGE et CREATE sur la structure au rôle de connexion.
Ces autorisations sont requises pour permettre à l'utilisateur de créer des tables de fichiers journaux. Reportez-vous à la rubrique Options de configuration des tables de fichiers journaux ArcSDE pour PostgreSQL pour plus d'informations sur les tables de fichiers journaux.
GRANT USAGE ON SCHEMA role4u TO role4u; GRANT CREATE ON SCHEMA role4u TO role4u;
-
Octroyez des autorisations USAGE sur la structure à tout autre rôle de connexion ou rôle de groupe devant accéder aux données dans la structure de l'utilisateur. Dans cet exemple, l'autorisation USAGE est accordée au groupe public afin que tous les utilisateurs qui se connectent à la base de données puissent accéder aux données de la structure role4u :
GRANT USAGE ON SCHEMA role4u TO public;
-
Si vous souhaitez placer la connexion dans un groupe afin de contrôler les autorisations, créez un rôle de groupe.
Par exemple, vous pouvez créer un groupe pour toutes les connexions qui créent des données dans la géodatabase. Dans le cas présent, le nom du rôle de groupe est dataowner :
CREATE ROLE dataowner NOSUPERUSER NOINHERIT CREATEDB NOCREATEROLE;
-
Octroyez les privilèges de rôle de groupe à tous les rôles de connexion concernés.
Dans cet exemple, le groupe est octroyé à la connexion role4u. Vous devrez exécuter cette instruction pour toutes les autres connexions à ajouter au groupe.
GRANT dataowner TO role4u;
-
Si le rôle de connexion a été créé sans la possibilité d'hériter d'un groupe (comme c'est le cas dans les exemples de cette rubrique), autorisez le rôle de connexion à hériter des privilèges de groupe des groupes auxquels il est attribué.
ALTER ROLE role4u INHERIT;
-
Si vous utilisez des groupes, vous pouvez leur accorder des autorisations sur d'autres jeux de données. Dans le cas contraire, octroyez des autorisations à chaque rôle de connexion.
Dans cet exemple, une autorisation est accordée au groupe dataowner sur les tables geometry_columns et spatial_ref_sys dans la structure publique. Ces autorisations sont requises pour tous les utilisateurs qui créent des données qui utilisent le stockage de géométries PostGIS.
GRANT SELECT, INSERT, UPDATE, DELETE ON public.geometry_columns TO dataowner; GRANT SELECT ON public.spatial_ref_sys TO dataowner;