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.
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 :
- Connexion à votre instance Azure via Azure CLI ou PowerShell.
- Acquisition de vos informations de principal de service.
- 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
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
Pour passer en revue le contrôle d’accès en fonction du rôle Azure Digital Twins, lisez Contrôle d’accès en fonction du rôle.
Pour plus d’informations sur l’authentification de l’API Azure Digital Twins, lisez Authentification des API.