Partager via


Créer et gérer des attributions de rôle dans Azure Digital Twins

Important

Une nouvelle version du service Azure Digital Twins a été publiée. En fonction des fonctionnalités étendues du nouveau service, le service Azure Digital Twins d’origine (décrit dans ce jeu de documentation) a été supprimé.

Pour afficher la documentation du nouveau service, consultez la documentation Azure Digital Twins active.

Azure Digital Twins utilise le contrôle d’accès en fonction du rôle (RBAC) pour gérer l’accès aux ressources.

Vue d’ensemble des attributions de rôle

Chaque attribution de rôle est conforme à la définition suivante :

{
  "roleId": "00e00ad7-00d4-4007-853b-b9968ad000d1",
  "objectId": "be2c6daa-a3a0-0c0a-b0da-c000000fbc5f",
  "objectIdType": "ServicePrincipalId",
  "path": "/",
  "tenantId": "00f000bf-86f1-00aa-91ab-2d7cd000db47"
}

Le tableau suivant décrit chaque attribut :

Attribut Nom Obligatoire Type Description
roleId Identificateur de la définition de rôle Oui String ID unique de l’attribution de rôle souhaitée. Pour connaître les définitions de rôles et leurs identificateurs, interrogez l’API système ou reportez-vous au tableau ci-dessous.
objectId Identificateur d'objet Oui String ID Azure Active Directory, ID objet de principal de service ou nom de domaine. À quoi ou à qui le rôle est attribué. L’attribution de rôle doit être mise en forme en fonction du type qui lui est associé. Pour l’objectIdType DomainName, objectId doit commencer par le caractère “@”.
objectIdType Type d’identificateur d’objet Oui String Type d’identificateur d’objet utilisé. Consultez ObjectIdTypes pris en charge ci-dessous.
path Chemin d’espace Oui String Chemin complet de l’objet Space. par exemple /{Guid}/{Guid}. Si l’identificateur a besoin de l’attribution de rôle pour l’intégralité du graphe, spécifiez "/". Ce caractère désigne la racine. Cependant, il est déconseillé de l’utiliser. Suivez toujours le principe des privilèges minimum.
tenantId Identificateur de locataire Variable String Dans la plupart des cas, un ID de locataire Azure Active Directory. Interdit pour les ObjectIdTypes DeviceId et TenantId. Obligatoire pour les ObjectIdTypes UserId et ServicePrincipalId. Facultatif pour l’ObjectIdType DomainName.

Identificateurs de définition de rôle pris en charge

Chaque attribution de rôle associe une définition de rôle à une entité dans votre environnement Azure Digital Twins.

Le tableau suivant décrit les rôles qui sont disponibles dans Azure Digital Twins :

Rôle Description Identificateur
Administrateur de l’espace Autorisation CRÉER, LIRE, METTRE À JOUR et SUPPRIMER pour l’espace spécifié et tous les nœuds en dessous. Autorisation globale. 98e44ad7-28d4-4007-853b-b9968ad132d1
Administrateur d'utilisateurs Autorisation CRÉER, LIRE, METTRE À JOUR et SUPPRIMER pour les utilisateurs et leurs objets connexes. Autorisation LIRE pour les espaces. dfaac54c-f583-4dd2-b45d-8d4bbc0aa1ac
Administrateur de l’appareil Autorisations CRÉER, LIRE, METTRE À JOUR et SUPPRIMER pour les appareils et leurs objets connexes. Autorisation LIRE pour les espaces. 3cdfde07-bc16-40d9-bed3-66d49a8f52ae
Administrateur des clés Autorisation CREATE, READ, UPDATE et DELETE pour les clés d’accès. Autorisation LIRE pour les espaces. 5a0b1afc-e118-4068-969f-b50efb8e5da6
Administrateur des jetons Autorisation LIRE et METTRE À JOUR pour les clés d’accès. Autorisation LIRE pour les espaces. 38a3bb21-5424-43b4-b0bf-78ee228840c3
Utilisateur Autorisation LIRE pour les espaces, les capteurs et les utilisateurs, incluant leurs objets connexes. b1ffdb77-c635-4e7e-ad25-948237d85b30
Spécialiste du support Autorisation LIRE pour tout sauf pour les clés d’accès. 6e46958b-dc62-4e7c-990c-c3da2e030969
Installateur des appareils Autorisation LIRE et METTRE À JOUR pour les appareils et les capteurs, incluant leurs objets connexes. Autorisation LIRE pour les espaces. b16dd9fe-4efe-467b-8c8c-720e2ff8817c
Appareil de passerelle Autorisation CRÉER pour les capteurs. Autorisation READ pour les appareils et les capteurs, qui inclut leurs objets associés correspondants. d4c69766-e9bd-4e61-bfc1-d8b6e686c7a8

Types d’identificateur d’objet pris en charge

L’attribut objectIdType a été présenté précédemment.

Le objectIdType (ou le type d’identificateur d’objet) fait référence au type d’identité auquel un rôle est attribué. En dehors des types DeviceId et UserDefinedFunctionId, les types d’identificateur d’objet correspondent à des propriétés d’objets Azure Active Directory.

Le tableau suivant contient les types d’identificateurs d’objet pris en charge dans Azure Digital Twins :

Type Description
UserId Attribue un rôle à un utilisateur.
deviceId Attribue un rôle à un appareil.
DomainName Attribue un rôle à un nom de domaine. Chaque utilisateur avec le nom de domaine spécifié a les droits d’accès du rôle correspondant.
TenantId Attribue un rôle à un locataire. Chaque utilisateur qui appartient à l’ID de locataire Azure AD spécifié a les droits d’accès du rôle correspondant.
ServicePrincipalId Attribue un rôle à un ID d’objet de principal de service.
UserDefinedFunctionId Attribue un rôle à une fonction définie par l’utilisateur.

Opérations d’attribution de rôle

Azure Digital Twins prend en charge les opérations CREATE, READ et DELETE pour les attributions de rôle. Les opérations UPDATE sont gérées par l’ajout d’attributions de rôle, la suppression d’attributions de rôle ou la modification des nœuds de graphique d’intelligence spatiale auxquels les attributions de rôle donnent accès.

Points de terminaison d’attribution de rôle

La documentation de référence Swagger fournie contient des informations complémentaires sur tous les point de terminaison d’API disponibles, les opérations de requête et les définitions.

Conseil

Vous pouvez obtenir un premier aperçu de Swagger qui illustre le jeu de fonctionnalités de l’API. Pour ce faire, rendez-vous à l’adresse docs.westcentralus.azuresmartspaces.net/management/swagger.

Vous pouvez accéder à votre propre documentation Swagger générée pour l’API Gestion à l’adresse suivante :

https://YOUR_INSTANCE_NAME.YOUR_LOCATION.azuresmartspaces.net/management/swagger
Nom Remplacer par
YOUR_INSTANCE_NAME Nom de votre instance Azure Digital Twins
YOUR_LOCATION Région de serveur dans laquelle votre instance est hébergée

Dans les exemples ci-dessous, YOUR_MANAGEMENT_API_URL fait référence à l’URI des API Digital Twins :

https://YOUR_INSTANCE_NAME.YOUR_LOCATION.azuresmartspaces.net/management/api/v1.0
Nom Remplacer par
YOUR_INSTANCE_NAME Nom de votre instance Azure Digital Twins
YOUR_LOCATION Région dans laquelle votre instance est hébergée

Accorder des autorisations à votre principal de service

L’octroi d’autorisations à votre principal de service est souvent l’une des premières étapes à franchir lorsque vous utilisez Azure Digital Twins. Cela implique les opérations suivantes :

  1. Connexion à votre instance Azure via Azure CLI ou PowerShell.
  2. Acquisition de vos informations de principal de service.
  3. Attribution du rôle souhaité à votre principal de service.

Votre ID d’application vous est attribué dans Azure Active Directory. Pour en savoir plus sur la configuration et l’approvisionnement d’Azure Digital Twins dans Active Directory, consultez le guide de Démarrage rapide.

Une fois que vous disposez de l'ID d'application, exécutez l'une des commandes suivantes. Dans Azure CLI :

az login
az ad sp show --id <ApplicationId>

Dans PowerShell :

Login-AzAccount
Get-AzADServicePrincipal -ApplicationId <ApplicationId>

Un utilisateur ayant le rôle Admin peut alors assigner le rôle Administrateur d’espace à un autre utilisateur en soumettant une requête HTTP POST authentifiée à l’URL :

YOUR_MANAGEMENT_API_URL/roleassignments

Avec le corps JSON suivant :

{
  "roleId": "98e44ad7-28d4-4007-853b-b9968ad132d1",
  "objectId": "YOUR_SERVICE_PRINCIPLE_OBJECT_ID",
  "objectIdType": "ServicePrincipalId",
  "path": "YOUR_PATH",
  "tenantId": "YOUR_TENANT_ID"
}

Récupérer tous les rôles

Rôles de système

Pour dresser la liste de tous les rôles disponibles (définitions de rôles), exécutez une requête HTTP GET authentifiée dans :

YOUR_MANAGEMENT_API_URL/system/roles

Une requête réussie renvoie un tableau JSON répertoriant les rôles pouvant être attribués :

[
    {
        "id": "3cdfde07-bc16-40d9-bed3-66d49a8f52ae",
        "name": "DeviceAdministrator",
        "permissions": [
            {
                "notActions": [],
                "actions": [
                    "Read",
                    "Create",
                    "Update",
                    "Delete"
                ],
                "condition": "@Resource.Type Any_of {'Device', 'DeviceBlobMetadata', 'DeviceExtendedProperty', 'Sensor', 'SensorBlobMetadata', 'SensorExtendedProperty'} || ( @Resource.Type == 'ExtendedType' && (!Exists @Resource.Category || @Resource.Category Any_of { 'DeviceSubtype', 'DeviceType', 'DeviceBlobType', 'DeviceBlobSubtype', 'SensorBlobSubtype', 'SensorBlobType', 'SensorDataSubtype', 'SensorDataType', 'SensorDataUnitType', 'SensorPortType', 'SensorType' } ) )"
            },
            {
                "notActions": [],
                "actions": [
                    "Read"
                ],
                "condition": "@Resource.Type == 'Space' && @Resource.Category == 'WithoutSpecifiedRbacResourceTypes' || @Resource.Type Any_of {'ExtendedPropertyKey', 'SpaceExtendedProperty', 'SpaceBlobMetadata', 'SpaceResource', 'Matcher'}"
            }
        ],
        "accessControlPath": "/system",
        "friendlyPath": "/system",
        "accessControlType": "System"
    }
]

Contrôler une attribution de rôle spécifique

Pour contrôler une attribution de rôle spécifique, exécutez une requête HTTP GET authentifiée dans :

YOUR_MANAGEMENT_API_URL/roleassignments/check?userId=YOUR_USER_ID&path=YOUR_PATH&accessType=YOUR_ACCESS_TYPE&resourceType=YOUR_RESOURCE_TYPE
Valeur du paramètre Obligatoire Type Description
YOUR_USER_ID True String ID d’objet pour l’objectIdType UserId.
YOUR_PATH True String Chemin dont l’accès est contrôlé.
YOUR_ACCESS_TYPE True String Lire, Créer, Mettre à jour ou Supprimer
YOUR_RESOURCE_TYPE True String Device, DeviceBlobMetadata, DeviceExtendedProperty, ExtendedPropertyKey, ExtendedType, Endpoint, KeyStore, Matcher, Ontology, Report, RoleDefinition, Sensor, SensorExtendedProperty, Space, SpaceBlobMetadata, SpaceExtendedProperty, SpaceResource, SpaceRoleAssignment, System, UerDefinedFunction, User, UserBlobMetadata ou UserExtendedProperty

Une requête réussie renvoie un booléen true ou false pour indiquer si le type d’accès a été attribué à l’utilisateur pour le chemin et la ressource donnés.

Obtenir des attributions de rôle en fonction du chemin d’accès

Pour obtenir toutes les attributions de rôle pour un chemin d’accès, exécutez une requête HTTP GET authentifiée dans :

YOUR_MANAGEMENT_API_URL/roleassignments?path=YOUR_PATH
Valeur Remplacer par
YOUR_PATH Chemin complet de l’espace

Une requête réussie renvoie un tableau JSON avec chaque attribution de rôle associée au paramètre path sélectionné :

[
    {
        "id": "0000c484-698e-46fd-a3fd-c12aa11e53a1",
        "roleId": "98e44ad7-28d4-4007-853b-b9968ad132d1",
        "objectId": "0de38846-1aa5-000c-a46d-ea3d8ca8ee5e",
        "objectIdType": "UserId",
        "path": "/"
    }
]

Révoquer une autorisation

Pour révoquer l'autorisation d'un destinataire, supprimez l'attribution de rôle en effectuant une requête HTTP DELETE authentifiée :

YOUR_MANAGEMENT_API_URL/roleassignments/YOUR_ROLE_ASSIGNMENT_ID
Paramètre Remplacer par
YOUR_ROLE_ASSIGNMENT_ID id de l’attribution de rôle à supprimer

Une requête de suppression réussie renvoie l’état de réponse 204. Vérifiez la suppression de l’attribution de rôle en contrôlant si l’attribution de rôle est toujours valable.

Création d'une affectation de rôle

Pour créer une attribution de rôle spécifique, exécutez une requête HTTP POST authentifiée dans l’URL :

YOUR_MANAGEMENT_API_URL/roleassignments

Vérifiez que le corps JSON est conforme au schéma suivant :

{
  "roleId": "YOUR_ROLE_ID",
  "objectId": "YOUR_OBJECT_ID",
  "objectIdType": "YOUR_OBJECT_ID_TYPE",
  "path": "YOUR_PATH",
  "tenantId": "YOUR_TENANT_ID"
}

Une requête réussie retourne l’état de réponse 201 avec l’id de l’attribution de rôle nouvellement créée :

"d92c7823-6e65-41d4-aaaa-f5b32e3f01b9"

Exemples de configuration

Les exemples suivants montrent comment configurer le corps JSON dans plusieurs scénarios d’attribution de rôles couramment rencontrés.

  • Exemple : un utilisateur a besoin d’un accès administratif à un étage d’un espace client.

    {
      "roleId": "98e44ad7-28d4-4007-853b-b9968ad132d1",
      "objectId" : " 0fc863aa-eb51-4704-a312-7d635d70e000",
      "objectIdType" : "UserId",
      "tenantId": " a0c20ae6-e830-4c60-993d-a00ce6032724",
      "path": "/ 000e349c-c0ea-43d4-93cf-6b00abd23a44/ d84e82e6-84d5-45a4-bd9d-006a000e3bab"
    }
    
  • Exemple : une application exécute des scénarios de test qui fictivent des appareils et des capteurs.

    {
      "roleId": "98e44ad7-28d4-0007-853b-b9968ad132d1",
      "objectId" : "cabf7aaa-af0b-41c5-000a-ce2f4c20000b",
      "objectIdType" : "ServicePrincipalId",
      "tenantId": " a0c20ae6-e000-4c60-993d-a91ce6000724",
      "path": "/"
    }
    
  • Exemple : tous les utilisateurs qui font partie d’un domaine reçoivent un accès en lecture pour les espaces, les capteurs et les utilisateurs. Cet accès inclut les objets connexes correspondants.

    {
      "roleId": " b1ffdb77-c635-4e7e-ad25-948237d85b30",
      "objectId" : "@microsoft.com",
      "objectIdType" : "DomainName",
      "path": "/000e349c-c0ea-43d4-93cf-6b00abd23a00"
    }
    

Étapes suivantes