Partager via


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

Cet exemple montre comment exécuter les opérations de sécurité au niveau de la colonne à l’aide de l’API web Dataverse avec PowerShell.

Prérequis

Avant d’exécuter cet exemple, vous devez lire ces articles qui expliquent les concepts et les modèles utilisés par les exemples Dataverse PowerShell :

Cet exemple nécessite :

Comment exécuter cet exemple

  1. Télécharger ou cloner le référentiel Exemples pour en avoir une copie locale.

  2. Ouvrez le dossier ColumnLevelSecurity à l’aide de Visual Studio Code.

  3. Créez un fichier nommé .env à l’aide des données trouvées dans le fichier .env.example.

  4. Dans le fichier .env, remplacez les valeurs d’espace réservé :

    # The environment this application will connect to.
    BASE_URL=https://<yourorg>.api.crm.dynamics.com/
    # The application user application id
    CLIENT_ID=00001111-aaaa-2222-bbbb-3333cccc4444
    # The application user secret
    CLIENT_SECRET=Aa1Bb~2Cc3.-Dd4Ee5Ff6Gg7Hh8Ii9_Jj0Kk1Ll2
    # The Entra tenant id
    TENANT_ID=aaaabbbb-0000-cccc-1111-dddd2222eeee
    
  5. Définissez BASE_URL sur l’URL de l’environnement sur lequel vous souhaitez exécuter l’exemple

  6. Reportez-vous à la section Configurer les utilisateurs pour obtenir des instructions sur la définition des valeurs de CLIENT_ID, CLIENT_SECRET, et TENANT_ID.

  7. Appuyez sur F5 pour exécuter l’exemple. Le fichier .vscode/launch.json est configuré pour exécuter le fichier ColumnLevelSecurity.ps1.

Lors de l’exécution de l’exemple, vous serez invité dans le navigateur par défaut à sélectionner un compte d’utilisateur de l’environnement et à saisir un mot de passe.

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
ColumnLevelSecurity.ps1 Contrôle le flux de l’exemple. Contient la définition des fonctions Setup, Run, et Cleanup et les appelle à la fin.
Examples.ps1 Contient 12 fonctions qui illustrent les opérations de sécurité au niveau de la colonne.
Helpers.ps1 Contient les constantes et les fonctions utilisées par l’exemple pour gérer la configuration et l’exécution de l’exemple. Ces fonctions ne sont 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 fonction Setup 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 fonction Run de cet exemple effectue les opérations suivantes :

Récupérer des informations à propos des colonnes

  1. Utilisez la fonction Dump-ColumnSecurityInfo-Example 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 fonction Get-SecuredColumnList-Example 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. Utilisez la fonction Set-ColumnIsSecured-Example 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 fonction Grant-ColumnAccess-Example 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 fonction Modify-ColumnAccess-Example 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 fonction Revoke-ColumnAccess-Example 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 requête GET sur la collection sample_examples pour renvoyer plusieurs enregistrements 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 requête GET pour récupérer un enregistrement unique 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 fonction Cleanup statique de cet exemple effectue les opérations suivantes :

Lorsque le paramètre $DELETE_CREATED_OBJECTS dans Helpers.ps1 est true, la fonction 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 Dataverse SDK for .NET