Disponible avec une licence Standard ou Advanced.
Si vous voulez permettre à d'autres utilisateurs de la base de données d'afficher ou de modifier le contenu des données dans une base de données, vous devez leur accorder les privilèges correspondants.
Vous pouvez utiliser la boîte de dialogue Privilèges dans ArcMap, l'outil de géotraitement Modifier les privilèges dans ArcMap ou ArcGIS Pro, ou la fonction ChangePrivileges_management dans un script Python pour spécifier les privilèges qu'un utilisateur ou un groupe détient sur un jeu de données spécifique.
Vous pouvez accorder uniquement des privilèges SELECT, c'est-à-dire que l'utilisateur peut lire et sélectionner, mais ne peut pas modifier le contenu d'un jeu de données. Vous pouvez également accorder des privilèges de mise à jour, d'insertion et de suppression qui permettent à l'utilisateur de modifier le contenu d'un jeu de données.
Les règles suivantes s'appliquent à l'accord et à la révocation de privilèges sur les données d'une base de données ou d'une géodatabase dans ArcGIS :
- Seul le propriétaire de la table peut en modifier les privilèges.
- Seul le propriétaire de la table peut la supprimer ou modifier sa définition ; par conséquent, même si des privilèges d'insertion, de mise à jour et de suppression ont été accordés à un autre utilisateur sur un jeu de données, cet utilisateur ne peut pas modifier la structure.
- Si vous comptez accorder des privilèges d'insertion, de mise à jour ou de suppression à un utilisateur, vous devez également accorder le privilège de sélection ; l'utilisateur doit être en mesure de lire le jeu de données avant de le modifier.
- Les rôles db_owner et dbo n'apparaissent pas dans la liste Utilisateur/Rôle de la boîte de dialogue Privilèges pour les bases de données SQL Server. Des privilèges sont automatiquement accordés à ces utilisateurs sur toutes les données de la base de données. Les privilèges dépendent du rôle et vous ne pouvez pas les révoquer.
- Les rôles ou groupes de connexion PostgreSQL qui disposent du statut de super-utilisateur dans la base de données n'apparaissent pas dans la liste Utilisateur/Rôle de la boîte de dialogue Privilèges. Ces utilisateurs bénéficient automatiquement des privilèges complets sur toutes les données, et vous ne pouvez pas révoquer ces privilèges.
- Vous ne pouvez modifier les privilèges d'un utilisateur que sur un seul jeu de données à la fois avec la boîte de dialogue Privilèges. Pour modifier les privilèges sur plusieurs jeux de données à la fois, utilisez plutôt l'outil de géotraitement Modifier les privilèges ou la fonction Python.
- La révocation des privilèges nécessite un verrouillage exclusif sur le jeu de données. Par conséquent, si un utilisateur est connecté au jeu de données, vous ne pouvez pas révoquer les privilèges des utilisateurs sur le jeu de données.
Les règles suivantes s'appliquent à l'octroi et à la révocation de privilèges sur les jeux de données d'une géodatabase uniquement :
- Toutes les classes d'entités contenues dans un jeu de données d'entité doivent disposer des mêmes privilèges appliqués.
- Lorsque des privilèges sont accordés à une classe ou table d'entités qui participe à une classe de relations, les privilèges doivent être accordés à la classe de destination et à la classe d’origine. Si les classes d'entités d’origine et de destination se trouvent dans le même jeu de classes d'entités, ils ont le même ensemble de privilèges, puisque ces derniers sont accordés au niveau du jeu de classes d'entités. Toutefois, lorsque les classes d’origine et de destination ne sont pas dans le même jeu de données d'entité, vous devez vous assurer qu'elles bénéficient toutes deux des privilèges appropriés. Si la classe de relations est associée à la valeur Attribué ou à la cardinalité Plusieurs vers plusieurs, les privilèges sont automatiquement propagés à la table intermédiaire, dans laquelle vous attribuez les privilèges à la classe d'origine.
- Si le jeu de données n'est pas versionné, vous pouvez accorder et révoquer individuellement les privilèges de mise à jour, d'insertion et de suppression dans la boîte de dialogue Privilèges. Par exemple, vous pouvez accorder à un utilisateur des privilèges de sélection et de mise à jour, qui lui permettent de se connecter au jeu de données et de modifier des entités existantes, mais qui ne lui permettent pas d'ajouter de nouvelles entités ou de supprimer des entités existantes.
- Si le jeu de données est inscrit comme versionné, les privilèges qui permettent à un utilisateur de modifier un jeu de données (mise à jour, insertion et suppression) doivent être accordés et révoqués en tant que groupe.
- Si le jeu de données est inscrit comme versionné, l'administrateur de géodatabase doit disposer des privilèges complets sur ce jeu de données. Par conséquent, vous ne pouvez pas révoquer les privilèges de l'administrateur de géodatabase sur les jeux de données versionnés.
Faites appel à l'une des méthodes suivantes pour octroyer ou révoquer des privilèges sur les jeux de données qui vous appartiennent :
- Boîte de dialogue Privilèges : vous pouvez voir les privilèges détenus par un utilisateur ou un groupe sur un jeu de données spécifique dans la boîte de dialogue Privilèges. Vous pouvez également accorder des privilèges sur un jeu de données à plusieurs utilisateurs ou groupes à la fois.
- Outil Modifier les privilèges : vous pouvez accorder à un utilisateur ou un groupe des privilèges sur plusieurs jeux de données à l'aide de l'outil Modifier les privilèges.
- Script Python : les scripts Python peuvent être exécutés à partir de machines Linux dotées d'ArcGIS Server. Les privilèges peuvent être modifiés sur plusieurs jeux de données.
Utiliser la boîte de dialogue Privilèges
Dans l'arborescence du Catalogue, ouvrez la boîte de dialogue Privilèges à partir du menu contextuel d'une connexion à une base de données. Vous pouvez y sélectionner les utilisateurs et groupes auxquels vous souhaitez accorder des privilèges. Vous pouvez également accorder individuellement des privilèges d'insertion, de mise à jour et de suppression (INSERT, UPDATE, DELETE) sur un jeu de données, à condition qu'il ne soit pas inscrit comme versionné.
- Démarrez ArcMap ou ArcCatalog et double-cliquez sur le dossier Connexions aux bases de données dans l'arborescence du Catalogue.
- Connectez-vous à la base de données ou à la géodatabase contenant vos données, pour laquelle vous souhaitez accorder ou révoquer des privilèges.
- Cliquez avec le bouton droit sur le jeu de données, pointez sur Organiser, puis cliquez sur Privilèges.
La boîte de dialogue Privilèges s'affiche.
- Si l'utilisateur ou le rôle dont vous souhaitez modifier les privilèges figure déjà dans la liste, cochez ou décochez les cases pour accorder ou révoquer les privilèges voulus. Cliquez ensuite sur OK pour appliquer vos modifications.
- Si l'utilisateur ou le rôle ne figure pas encore dans la liste, procédez comme suit :
- Cliquez sur Ajouter pour ouvrir la boîte de dialogue Utilisateur/Rôle.
- Si vous possédez les privilèges dans la base de données permettant d'afficher la table système qui répertorie tous les utilisateurs et rôles de la base de données, vous pouvez choisir les utilisateurs ou rôles de la base de données que vous souhaitez ajouter dans la liste en cochant la case figurant en regard de leurs noms. Sinon, saisissez le nom de l'utilisateur de base de données, le rôle de base de données, la session de système d'exploitation ou le groupe Windows auquel vous souhaitez accorder des privilèges. Pour saisir plusieurs utilisateurs ou groupes, séparez les noms par des virgules (sans espace).
- Cliquez sur OK pour fermer la boîte de dialogue Utilisateur/Rôle.
- Cochez les cases des privilèges que vous souhaitez accorder à chaque nouvel utilisateur ou rôle et cliquez sur OK.
Utiliser l'outil Modifier les privilèges
Vous pouvez utiliser l'outil Modifier les privilèges pour accorder ou révoquer des privilèges sur les jeux de données vous appartenant. L'outil se trouve dans le jeu d'outils Administration de géodatabase de la boîte à outils Gestion des données.
Il permet également de modifier les privilèges d'un utilisateur ou d'un groupe sur plusieurs jeux de données à la fois. Veuillez noter que l'outil Modifier les privilèges n'affiche pas les privilèges dont l'utilisateur dispose déjà sur les jeux de données. En outre, vous devez accorder les privilèges d'insertion, mise à jour et de suppression (INSERT, UPDATE et DELETE) globalement, et non pas individuellement.
- Connectez-vous à la base de données ou à la géodatabase en tant que propriétaire des jeux de données pour lesquels vous voulez accorder ou révoquer des privilèges.
- Ouvrez l'outil Modifier les privilèges.
- Accédez à votre connexion à une base de données et choisissez les jeux de données dont vous souhaitez modifier les privilèges.
- Tapez le nom de l'utilisateur ou du groupe dont vous voulez modifier les privilèges.
- Utilisez les listes déroulantes Affichage et Edition pour choisir les privilèges que vous souhaitez accorder à l'utilisateur ou au groupe spécifié :
Pour accorder des privilèges de modification, des privilèges d'affichage doivent également être accordés.
- Cliquez sur OK pour exécuter l'outil.
Utiliser un script Python
Si vous voulez utiliser un script Python pour octroyer ou révoquer des privilèges sur un jeu de données vous appartenant, vous pouvez utiliser la fonction ChangePrivileges_management dans un script Python.
- Commencez par créer une connexion à une base de données à l'aide de la fonction CreateDatabaseConnection_management. Vous devez vous connecter en tant que propriétaire des jeux de données et enregistrer le nom d'utilisateur avec le fichier.
Dans cet exemple, le fichier de connexion gdb.sde est créé dans le répertoire /usr/connections. La connexion à l'instance REEF/ORCL est établie en tant qu'utilisateur eng1.
import arcpy arcpy.CreateDatabaseConnection_management (r'/usr/connections', "gdb.sde", "ORACLE", "reef/ORCL", "DATABASE_AUTH", "eng1", "T!i569", "SAVE_USERNAME")
- Exécutez la fonction ChangePrivileges_management.
Dans cet exemple, des privilèges d'affichage (VIEW) sont accordés au groupe readers sur trois jeux de données.
arcpy.ChangePrivileges_management ("/usr/connections/gdb.sde/eng1.properties,eng1.routes,eng1.demo", "readers", "GRANT", "AS_IS")