Octroyer et supprimer des privilèges sur le jeu de données dans des bases de données et des géodatabases d’entreprise

Disponible avec une licence Standard ou Advanced.

Pour 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 ou une géodatabase d’entreprise, vous devez leur accorder les privilèges correspondants.

Approfondissement :
Pour les bases de données et les géodatabases d’entreprise, le propriétaire des données correspond à l’utilisateur spécifié dans la connexion à la base de données qui est utilisée lorsque la table ou la classe d’entités est créée à l’aide d’outils dans des clients ArcGIS.

En tant que propriétaire du jeu de données, vous pouvez utiliser la boîte de dialogue Privileges (Privilèges), l’outil de géotraitement Modifier les privilèges, 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 d’entreprise dans ArcGIS :

  • Seul le propriétaire de la table peut modifier les privilèges sur le jeu de données.
  • Seul le propriétaire de la table peut supprimer le jeu de données ou modifier sa définition de structure. 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.
  • Lorsque vous accordez des privilèges d’insertion, de mise à jour ou de suppression à un utilisateur, vous devez également lui donner le privilège de sélection. Les utilisateurs doivent être en mesure de lire le jeu de données pour pouvoir le mettre à jour.
  • Les rôles db_owner et dbo n’apparaissent pas dans la liste User/Role (Utilisateur/Rôle) de la boîte de dialogue Privileges (Privilèges) pour les bases de données Microsoft 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 User/Role (Utilisateur/Rôle) de la boîte de dialogue Privileges (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. Vous ne pouvez pas révoquer les privilèges si un utilisateur est connecté au 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 d’entreprise 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 données d’entités, elles bénéficient du même ensemble de privilèges, puisque ces derniers sont accordés au niveau du jeu de données 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 a une cardinalité de type Plusieurs vers plusieurs, les privilèges sont automatiquement propagés à la table intermédiaire lorsque vous attribuez les privilèges à la classe d'origine.
  • Si le jeu de données n'est pas enregistré comme 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 Privileges (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 pour versionnement traditionnel, 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 de façon groupée.
  • Si le jeu de données est inscrit comme versionné de manière traditionnelle, 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 ces jeux de données.
  • Les jeux de données inscrits pour versionnement de branche peuvent seulement être mis à jour par l’intermédiaire de couches d’entités Web ; l’accès aux données est géré par les paramètres figurant sur la couche d’entités Web. Comme seul le propriétaire des données peut publier les données de branche versionnée, il n’y a aucune raison d’accorder des privilèges eu égard aux données de la géodatabase aux autres utilisateurs.

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 :

  • Outil Modifier les privilèges : vous pouvez accorder des privilèges sur plusieurs jeux de données à un utilisateur ou groupe à l’aide de l’outil de géotraitement Modifier les privilèges.
  • Script Python : vous pouvez exécuter un script Python à partir des machines sur lesquelles ArcGIS Server est installé. Les privilèges peuvent être modifiés sur plusieurs jeux de données.

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. Il 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. L’outil Modifier les privilèges n’affiche pas les éventuels privilèges dont l’utilisateur dispose sur les jeux de données. En outre, les privilèges d'insertion, mise à jour et de suppression doivent être accordés globalement, et non pas individuellement.

  1. 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.
  2. Ouvrez l'outil Modifier les privilèges.
  3. Accédez à votre connexion à une base de données et choisissez les jeux de données dont vous souhaitez modifier les privilèges.
  4. Tapez le nom de l’utilisateur ou du groupe dont vous voulez modifier les privilèges.
  5. Utilisez les listes déroulantes View (Affichage) et Edit (Modifier) 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.

  6. Cliquez sur OK pour exécuter l'outil.

Utiliser un script Python

Pour 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.

  1. Créez 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.
  2. Exécutez la fonction ChangePrivileges_management.