Partager via


Exemple : Sécurité au niveau de la colonne à l’aide de Dataverse SDK for .NET

Cet exemple montre comment exécuter les opérations de sécurité au niveau de la colonne à l’aide de Dataverse SDK for .NET.

Prérequis

  • Microsoft Visual Studio 2022
  • Accédez à Dataverse avec les privilèges d’administrateur système.

Comment exécuter cet exemple

  1. Télécharger ou cloner le référentiel Exemples pour en avoir une copie locale.
  2. Procédez selon les indications de la section Configurer les utilisateurs pour créer un deuxième compte utilisateur d’application sans le rôle d’administrateur système.
  3. Modifiez le fichier /ColumnLevelSecurity/appsettings.json pour définir une chaîne de connexion spécifiant l’instance Microsoft Dataverse à laquelle vous souhaitez vous connecter pour l’administrateur système et le deuxième utilisateur d’application.
  4. Ouvrez l’exemple de solution dans Visual Studio et appuyez sur F5 pour exécuter l’exemple.

En quoi consiste cet exemple

Cet exemple illustre les fonctionnalités décrites dans Sécurité au niveau de la colonne avec du code :

  • Découvrir quelles colonnes peuvent être sécurisées dans un environnement Dataverse
  • Découvrir quelles colonnes sont actuellement sécurisées
  • Sécuriser les colonnes dans un environnement Dataverse
  • Accorder un accès en lecture ou en écriture aux champs sélectionnés à des utilisateurs individuels
  • Modifier l’accès aux champs sécurisés pour les utilisateurs individuels
  • Révoquer l’accès aux champs sélectionnés pour des utilisateurs individuels
  • Fournir un accès en lecture et en écriture à des groupes d’utilisateurs spécifiques
  • Activer le masquage des colonnes sécurisées
  • Récupérer les valeurs non masquées pour les colonnes sécurisées

Exemples de fichiers

Le code de cet exemple se trouve dans les fichiers suivants :

File Description
Program.cs Contrôle le flux de l’exemple. Contient la définition des méthodes Setup, Run, et Cleanup et les appelle dans la méthode Main.
Examples.cs Contient des méthodes qui illustrent les opérations de sécurité au niveau de la colonne.
Helpers.cs Contient les méthodes utilisées par l’exemple pour gérer la configuration et l’exécution de l’exemple. Ces méthodes ne font pas l’objet de cet exemple.

Cet exemple est conçu pour être résilient lorsque des erreurs se produisent, vous devriez donc être en mesure de réexécuter l’exemple s’il a échoué précédemment.

Utiliser cet exemple

Afin de créer le scénario décrit dans En quoi consiste cet exemple, l′exemple procède comme suit :

Configuration

La méthode Setup statique de cet exemple effectue les opérations suivantes :

  1. Créez un éditeur de solutions nommé ColumnLevelSecuritySamplePublisher avec le préfixe de personnalisation sample s’il n’existe pas.

  2. Créez une solution nommée ColumnLevelSecuritySampleSolution associée à l’éditeur si elle n’existe pas.

    Tous les éléments prenant en charge la solution suivants sont créés dans le contexte de cette solution.

  3. Créez une table nommée sample_Example si elle n’existe pas.

  4. Créez quatre colonnes de chaîne dans la table sample_Example si elles n’existent pas. Les noms de schéma de table sont les suivants :

    • sample_Email
    • sample_GovernmentId
    • sample_TelephoneNumber
    • sample_DateOfBirth
  5. Supprimez tous les exemples de données existants dans la table sample_Example.

  6. Ajoutez trois lignes d’exemples de données avec des informations dans chaque colonne de la table sample_Example.

  7. Créez un nouveau rôle de sécurité nommé Exemple de rôle de sécurité au niveau de la colonne.

  8. Ajoutez des privilèges pour la table sample_Example au rôle de sécurité.

  9. Associez l’utilisateur au rôle de sécurité.

  10. Créez un enregistrement Profil de sécurité du champ nommé Exemple de profil de sécurité du champ qui est utilisé dans la section Gérer l’accès aux données de colonne sécurisées des groupes de l’exemple.

  11. Associez l’utilisateur de l’application au profil de sécurité du champ.

  12. Attendez 30 secondes que le cache rattrape les nouveaux objets créés.

Démontrer

La méthode Run statique de cet exemple effectue les opérations suivantes :

Récupérer des informations à propos des colonnes

  1. Utilisez la méthode Examples.DumpColumnSecurityInfo pour télécharger un fichier CSV contenant des données sur les colonnes du système qui peuvent être sécurisées.
  2. Utilisez la méthode Examples.GetSecuredColumnList pour récupérer et afficher une liste des colonnes d’environnement déjà sécurisées.

Sécuriser les colonnes

  1. Démontrez que l’utilisateur de l’application peut récupérer les données de toutes les colonnes de la table sample_Example.
  2. Utiliser la méthode Examples.SetColumnIsSecured pour sécuriser les quatre colonnes
  3. Démontrez que l’utilisateur de l’application peut récupérer les données de toutes les colonnes sécurisées de la table sample_Example.

Accorder l’accès aux données de colonne sécurisées aux personnes

  1. Utilisez la méthode Examples.GrantColumnAccess pour accorder aux utilisateurs de l’application un accès en lecture à des valeurs de champ d’enregistrement spécifiques en créant un enregistrement Partage de champ (PrincipalObjectAttributeAccess).
  2. Démontrez que l’utilisateur de l’application peut désormais récupérer les données de tous les champs d’enregistrement sécurisés spécifiques dans la table sample_Example.
  3. Démontrez que l’utilisateur de l’application n’est pas autorisé à écrire des données dans les colonnes sécurisées.
  4. Utilisez la méthode Examples.ModifyColumnAccess pour accorder un accès en écriture à un champ d’enregistrement spécifique.
  5. Démontrez que l’utilisateur de l’application est désormais autorisé à écrire des données dans le champ d’enregistrement spécifique.
  6. Utilisez la méthode Examples.RevokeColumnAccess pour supprimer les enregistrements PrincipalObjectAttributeAccess qui donnaient à l’utilisateur de l’application l’accès aux colonnes sécurisées.

Gérer l’accès aux données de colonne sécurisées pour les groupes

  1. Ajouter des autorisations de champ à l’enregistrement Exemple de profil de sécurité du champ créé dans Setup en créant des enregistrements d’autorisation de champ (FieldPermission)
  2. Démontrez que l’utilisateur de l’application ne peut afficher que les colonnes sécurisées spécifiées dans les enregistrements d’autorisation de champ.
  3. Démontrez que l’utilisateur de l’application n’est pas autorisé à écrire des données dans le champ d’enregistrement spécifique non activé avec les autorisations de champ.

Masquage

  1. Récupérez les valeurs d’ID des règles de masquage existantes. Créez des enregistrements Colonne de Masquage Sécurisée (AttributeMaskingRule) pour spécifier les règles de masquage des colonnes de la table sample_Example.
  2. Mettez à jour les valeurs de colonne canreadunmasked des enregistrements d’autorisation de champ (FieldPermission) créés précédemment.
  3. Attendez 30 secondes que le cache rattrape les nouveaux objets créés.
  4. Démontrez que l’utilisateur de l’application peut désormais récupérer des données avec des valeurs masquées.
  5. Démontrez que l’utilisateur de l’application peut désormais récupérer des valeurs non masquées avec une Classe RetrieveMultipleRequest lors de l’utilisation du paramètre facultatif UnMaskedData.
  6. Démontrez que l’utilisateur de l’application peut désormais récupérer des valeurs non masquées avec une Classe RetrieveRequest lors de l’utilisation du paramètre facultatif UnMaskedData.

Exporter la solution

Utilisez une solution exportée pour tester la fonctionnalité des exemples de configuration en dehors de cet exemple.

  1. Exportez la solution créée avec toutes les configurations en tant que solution non gérée.
  2. Exporter la solution créée avec toutes les configurations en tant que solution gérée

Nettoyer

La méthode Cleanup statique de cet exemple effectue les opérations suivantes :

Lorsque le paramètre SampleSettings.DeleteCreatedObjects dans appsettings.json est true, la méthode Cleanup tente de supprimer tous les composants créés pendant Setup ou Run. L’objectif est de ramener l’environnement à son état d’origine. Si vous ne souhaitez pas que les éléments soient supprimés, vous pouvez modifier le paramètre sur false.

Exemple : Sécurité au niveau de la colonne à l’aide de l’API web Dataverse (PowerShell)