Disponible avec une licence Standard ou Advanced.
PostgreSQL utilise des rôles pour se connecter à l’agrégat de bases de données et aux bases de données. Les utilisateurs individuels sont appelés des rôles de connexion. Pour tous les rôles de connexion qui posséderont des objets dans la géodatabase, vous devez également créer une structure dans cette base de données. Pour que PostgreSQL puisse être utilisé avec ArcGIS, la structure doit porter le même nom que le rôle de connexion et appartenir à ce dernier.
Vous pouvez utiliser l’outil Créer un utilisateur de base de données pour ajouter un rôle de connexion qui peut créer des tables et des classes d’entités. L’outil crée un rôle de connexion authentifiée à la base de données dans l’agrégat de bases de données PostgreSQL, ainsi qu’une structure correspondante pour l’utilisateur dans la base de données que vous spécifiez, et accorde au public des privilèges usage sur la nouvelle structure.
Pour créer un rôle de connexion qui ne possède pas de structure et ne peut donc pas créer d’objets dans la géodatabase, ou pour créer un rôle de connexion mappé à une connexion SSPI (Security Support Provider Interface) ou LDAP (Lightweight Directory Access Protocol), utilisez une application cliente PostgreSQL telle que pgAdmin ou PL/pgSQL pour créer un rôle dans l’agrégat de bases de données PostgreSQL.
Vous pouvez également créer des rôles de groupe auxquels des rôles de connexion peuvent être ajoutés. Vous pouvez ensuite attribuer des autorisations au groupe, qui s’appliqueront à tous les rôles de connexion associés. Vous pouvez utiliser l’outil Créer un rôle ou un script pour créer des rôles de groupe, ou utiliser SQL.
Remarque :
Vous devez créer une structure correspondante pour chaque rôle de connexion dans le groupe qui possédera des objets dans la géodatabase. Vous ne pouvez pas créer une structure pour le rôle de groupe.
Ajouter un utilisateur qui peut créer des objets de base de données
Vous pouvez exécuter l’outil Créer un utilisateur de base de données à partir d’ArcGIS Pro ou appeler la fonction ArcPy management.CreateDatabaseUser dans un script Python pour créer un utilisateur de base de données pouvant créer des tables, des classes d’entités et des vues.
Vous devez être connecté à la base de données avec un rôle de superutilisateur pour exécuter l’outil Créer un utilisateur de base de données ou la fonction ArcPy management.CreateDatabaseUser.
Utiliser l’outil Créer un utilisateur de base de données
Pour créer un utilisateur de base de données dans PostgreSQL à l’aide de l’outil Créer un utilisateur de base de données, procédez comme suit :
- Démarrez ArcGIS Pro.
- Connectez-vous à la base de données ou à la géodatabase à l’aide d’un rôle doté de l’autorité de superutilisateur PostgreSQL.
- Ouvrez l’outil Créer un utilisateur de base de données.
Il se trouve dans le jeu d’outils Administration de géodatabase de la boîte à outils Gestion des données.
- Identifiez la connexion à la base de données pour la Connexion à la base de données en entrée.
- Attribuez un nom au rôle de connexion et à la structure que l’outil va créer.
- Fournissez un mot de passe pour l’utilisateur de base de données.
- Si vous disposez déjà d’un rôle de groupe auquel vous souhaitez ajouter cet utilisateur en tant que membre, indiquez ce rôle de groupe.
- Cliquez sur Run (Exécuter).
Exécuter un script Python
Pour générer un script de création d’utilisateur, procédez comme suit :
- Créez un fichier texte sur l’ordinateur d’un client ArcGIS, puis copiez-y un des blocs de code suivants.
Modifiez le code avec les informations spécifiques à votre site.
Les exemples supposent que vous disposez d’un fichier de connexion à une base de données existant qui vous permet de vous connecter en tant qu’utilisateur doté de l’autorité de superutilisateur dans l’agrégat de bases de données PostgreSQL. Si vous ne disposez pas d’un fichier de connexion, créez-en un avant d’exécuter le script.
# Name: createdatabaseuser_exampleW.py # Description: Uses existing database connection file # on a Windows computer to create a database user in PostgreSQL. # Import arcpy module import arcpy # Provide a database connection file for the PostgreSQL administrator user. connection = "C:\\ArcGIS\connection_files\<Connection file>.sde" # Process: Create database user that can create data. arcpy.CreateDatabaseUser_management(connection, "DATABASE_USER", "dbuser", "t3mpor@rypL@ceholder1")
# Name: createdatabaseuser_exampleL.py # Description: Uses existing database connection file # on a Linux computer to create a database user in PostgreSQL. # Import arcpy module import arcpy # Provide a database connection file for the PostgreSQL administrator user. connection = "<user>/connections/<Connection_file>.sde" # Process: Create database user that can create data. arcpy.CreateDatabaseUser_management(connection, "DATABASE_USER", "dbuser", "t3mpor@rypL@ceholder1")
- Enregistrez le fichier avec l’extension .py.
- Exécutez le script à partir d’un ordinateur sur lequel ArcGIS Pro (Standard ou Advanced) ou ArcGIS Server est installé.
Pour plus d’informations sur l’exécution de Python à partir d’une machine ArcGIS Server, reportez-vous à la rubrique ArcGIS Server et ArcPy.
Votre base de données contient désormais un utilisateur qui peut créer des tables et des classes d’entités.
Lorsque les tables et les classes d’entités ont été créées, le propriétaire des données peut accorder aux autres utilisateurs des privilèges sur les jeux de données. Pour obtenir des instructions, reportez-vous à la rubrique Octroyer et supprimer des privilèges sur le jeu de données dans des bases de données et des géodatabases d’entreprise.
Créer des identifiants de connexion pour afficher et modifier des données
Vous pouvez utiliser SQL pour créer des rôles de connexion pour les utilisateurs qui ne vont pas créer de données. Si vous procédez ainsi pour votre géodatabase dans PostgreSQL, vérifiez toutefois que le groupe public ou l’utilisateur spécifique dispose des privilèges requis pour créer des tables temporaires.
Vous pouvez également créer des groupes de connexion pour faciliter l’octroi de privilèges sur des jeux de données individuels à ces utilisateurs.
Créer des rôles
Les étapes suivantes expliquent comment utiliser psql pour créer des rôles de groupe simplifiant la gestion des privilèges sur les données et pour créer des rôles de connexion appartenant à des rôles de groupes.
- Connectez-vous à psql en tant qu’utilisateur autorisé à créer d’autres rôles dans l’agrégat de bases de données.
Vous pouvez utiliser un identifiant de connexion de superutilisateur ou un identifiant de connexion qui détient le privilège createrole.
- Utilisez la commande create role pour créer deux groupes de connexion : un groupe pour les utilisateurs qui peuvent modifier des jeux de données (éditeurs) et un groupe pour ceux qui peuvent seulement afficher les données (consultation).
CREATE ROLE editors NOSUPERUSER NOCREATEDB NOCREATEROLE NOINHERIT; CREATE ROLE viewers NOSUPERUSER NOCREATEDB NOCREATEROLE NOINHERIT;
- Créez ensuite des rôles de connexion membres du groupe d’éditeurs.
Dans cet exemple, un rôle de connexion (editor1) est créé avec un mot de passe chiffré. Le rôle n’a pas le statut de superutilisateur et ne peut pas créer de base de données ni de rôles dans l’agrégat de bases de données. Toutefois, il a été ajouté au rôle de groupe éditeurs et héritera des privilèges de ce rôle de groupe.
Modifiez le nom du rôle de connexion et réexécutez l’instruction pour créer des rôles de connexion supplémentaires qui pourront modifier les données de la géodatabase.CREATE ROLE editor1 LOGIN ENCRYPTED PASSWORD 'sooper.secret' NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT IN ROLE editors;
- Créez ensuite des rôles de connexion membres du groupe de visualiseurs.
Dans cet exemple, un rôle de connexion (reader1) est créé avec un mot de passe chiffré. Le rôle n’a pas le statut de superutilisateur et ne peut pas créer de base de données ni de rôles dans l’agrégat de bases de données. Toutefois, il a été ajouté au rôle de groupe visualiseurs et héritera des privilèges de ce rôle de groupe.
Modifiez le nom du rôle de connexion et réexécutez l’instruction pour créer des rôles de connexion supplémentaires qui pourront uniquement visualiser les données de la géodatabase.CREATE ROLE reader1 LOGIN ENCRYPTED PASSWORD 'almostas.secret' NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT IN ROLE viewers;
- Accordez le privilège usage sur la structure geodata à chaque groupe de connexion.
Le privilège usage autorise les éditeurs et les utilisateurs ayant un accès en consultation à accéder aux données de la structure geodata. Sinon, les géodonnées ne pourraient pas accorder de privilèges sur des jeux de données individuels aux membres des rôles de groupe visualiseurs et éditeurs.
GRANT USAGE ON SCHEMA geodata TO editors; GRANT USAGE ON SCHEMA geodata TO viewers;
- Si vous créez ces identifiants de connexion pour une géodatabase et que vous avez modifié les privilèges de la structure sde pour que le groupe public ne bénéficie pas du privilège usage, accordez le privilège usage aux éditeurs et aux utilisateurs ayant un accès en consultation sur la structure sde.
GRANT USAGE ON SCHEMA sde TO editors; GRANT USAGE ON SCHEMA sde TO viewers;
Votre base de données comporte désormais un ou plusieurs utilisateurs autorisés à modifier les données et un ou plusieurs utilisateurs autorisés à les visualiser.
Lorsque la base de données ou la géodatabase contient des jeux de données, le propriétaire peut utiliser les outils ArcGIS pour accorder le privilège select sur ces derniers au groupe d’utilisateurs ayant un accès en consultation et les privilèges select, insert, update et delete aux éditeurs sur les jeux de données. Pour obtenir des instructions, reportez-vous à la rubrique Octroyer et supprimer des privilèges sur le jeu de données dans des bases de données et des géodatabases d’entreprise.
Vous avez un commentaire à formuler concernant cette rubrique ?