Freigeben über


Erstellen und Verwalten von Rollenzuweisungen in Azure Digital Twins

Wichtig

Eine neue Version des Azure Digital Twins-Diensts wurde veröffentlicht. Angesichts der erweiterten Funktionen des neuen Diensts wurde der ursprüngliche Azure Digital Twins-Dienst (in diesem Dokumentationssatz beschrieben) eingestellt.

Um die Dokumentation für den neuen Dienst anzuzeigen, besuchen Sie die aktive Azure Digital Twins-Dokumentation.

In Azure Digital Twins wird rollenbasierte Zugriffssteuerung (Role-Based Access Control, RBAC) verwendet, um Zugriffe auf Ressourcen zu verwalten.

Übersicht der Rollenzuweisungen

Jede Rollenzuweisung entspricht der folgenden Definition:

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

In der folgenden Tabelle werden die einzelnen Attribute beschrieben:

attribute Name Erforderlich type Beschreibung
roleId Bezeichner der Rollendefinition Ja String Die eindeutige ID der gewünschten Rollenzuweisung. Sie können Rollendefinitionen und deren Bezeichner (IDs) durch das Abfragen der System-API ermitteln, oder die unten stehende Tabelle überprüfen.
objectId Objektbezeichner Ja String Eine Azure Active Directory-ID, eine Dienstprinzipalobjekt-ID oder ein Domänenname. Wem die Rollenzuweisung zugewiesen ist (Objekt oder Person). Die Rollenzuweisung muss gemäß ihrem zugeordneten Typ formatiert sein. Für den DomainName-objectIdType muss objectId mit dem “@”-Zeichen beginnen.
objectIdType Objektbezeichnertyp Ja String Die Art des verwendeten Objektbezeichners. Siehe unten unter Unterstützte ObjektIdTypes.
path Raumpfad Ja String Der vollständige Zugriffspfad für das Space-Objekt. z. B. /{Guid}/{Guid}. Wenn für einen Bezeichner die Rollenzuweisung für den gesamten Graphen erforderlich ist, geben Sie "/" an. Mit diesem Zeichen wird der Stamm angegeben, aber von der Verwendung wird abgeraten. Befolgen Sie immer das Prinzip der geringsten Rechte.
tenantId Mandanten-ID Varies String In den meisten Fällen eine Azure Active Directory-Mandanten-ID. Nicht zulässig für den DeviceId- und den TenantId-objectIdType. Erforderlich für den UserId- und den ServicePrincipalId-objectIdType. Optional für den DomainName-objectIdType.

Unterstützte Rollendefinitionsbezeichner

Jede Rollenzuweisung ordnet einer Entität in Ihrer Azure Digital Twins-Umgebung eine Rollendefinition zu.

Die folgende Tabelle beschreibt die in Azure Digital Twins verfügbaren Rollen:

Rolle Beschreibung Identifier
Space Administrator ERSTELLEN-, LESEN-, AKTUALISIEREN- und LÖSCHEN-Berechtigung für den angegebenen Raum und alle Knoten darunter. Globale Berechtigung. 98e44ad7-28d4-4007-853b-b9968ad132d1
Benutzeradministrator ERSTELLEN-, LESEN-, AKTUALISIEREN- und LÖSCHEN-Berechtigung für Benutzer und benutzerbezogene Objekte. LESEN-Berechtigung für Räume. dfaac54c-f583-4dd2-b45d-8d4bbc0aa1ac
Device Administrator ERSTELLEN-, LESEN-, AKTUALISIEREN- und LÖSCHEN-Berechtigung für Geräte und gerätebezogene Objekte. LESEN-Berechtigung für Räume. 3cdfde07-bc16-40d9-bed3-66d49a8f52ae
Key Administrator ERSTELLEN, LESEN, AKTUALISIEREN und LÖSCHEN-Berechtigung für Zugriffsschlüssel. LESEN-Berechtigung für Räume. 5a0b1afc-e118-4068-969f-b50efb8e5da6
Token Administrator ERSTELLEN- und AKTUALISIEREN-Berechtigung für Zugriffsschlüssel. LESEN-Berechtigung für Räume. 38a3bb21-5424-43b4-b0bf-78ee228840c3
Benutzer LESEN-Berechtigung für Räume, Sensoren und Benutzer, einschließlich der dazugehörigen Objekte. b1ffdb77-c635-4e7e-ad25-948237d85b30
Support Specialist LESEN-Berechtigung für alle Objekte außer Zugriffsschlüsseln. 6e46958b-dc62-4e7c-990c-c3da2e030969
Device Installer LESEN- und AKTUALISIEREN-Berechtigung für Geräte und Sensoren, einschließlich der dazugehörigen Objekte. LESEN-Berechtigung für Räume. b16dd9fe-4efe-467b-8c8c-720e2ff8817c
Gatewaygerät ERSTELLEN-Berechtigung für Sensoren. READ-Berechtigung für Geräte und Sensoren, die ihre entsprechenden verwandten Objekte enthalten. d4c69766-e9bd-4e61-bfc1-d8b6e686c7a8

Unterstützte Objektbezeichnertypen

Zuvor wurde das Attribut objectIdType eingeführt.

objectIdType (oder Objektbezeichnertyp) bezieht sich auf den Typ der Identität, der einer Rolle zugewiesen wird. Mit Ausnahme der Typen DeviceId und UserDefinedFunctionId entsprechen Objektbezeichnertypen Eigenschaften von Azure Active Directory-Objekten.

Die folgende Tabelle enthält die unterstützten Objektbezeichnertypen in Azure Digital Twins:

type BESCHREIBUNG
UserId Weist einem Benutzer eine Rolle zu.
deviceId Weist einem Gerät eine Rolle zu.
DomainName Weist einem Domänennamen eine Rolle zu. Jeder Benutzer mit dem angegebenen Domänennamen hat die Zugriffsrechte der entsprechenden Rolle.
TenantId Weist einem Mandanten eine Rolle zu. Jeder Benutzer, der zu der angegebenen Azure AD-Mandanten-ID gehört, hat die Zugriffsrechte der entsprechenden Rolle.
ServicePrincipalId Weist einer Dienstprinzipalobjekt-ID eine Rolle zu.
UserDefinedFunctionId Weist einer benutzerdefinierten Funktion (User-defined Function, UDF) eine Rolle zu.

Rollenzuweisungsvorgänge

Azure Digital Twins unterstützt vollständige ERSTELLEN, LESEN und LÖSCHEN-Vorgänge für Rollenzuweisungen. AKTUALISIEREN-Vorgänge werden verarbeitet, indem Rollenzuweisungen hinzugefügt oder entfernt werden oder der Knoten Raumintelligenzgraph, auf den Rollenzuweisungen Zugriff gewähren, geändert wird.

Rollenzuweisungsendpunkte

Die bereitgestellte Swagger-Referenzdokumentation enthält weitere Informationen zu allen verfügbaren API-Endpunkten, Anforderungsvorgängen und Definitionen.

Tipp

Es wird eine Swagger-Vorschau bereitgestellt, um den API-Funktionsumfang zu veranschaulichen. Diese Vorschau finden Sie unter docs.westcentralus.azuresmartspaces.net/management/swagger.

Ihre eigene generierte Dokumentation von Verwaltungs-API-Swagger finden Sie unter:

https://YOUR_INSTANCE_NAME.YOUR_LOCATION.azuresmartspaces.net/management/swagger
Name Ersetzen durch
YOUR_INSTANCE_NAME Den Namen Ihrer Azure Digital Twins-Instanz
YOUR_LOCATION Die Serverregion, in der Ihre Instanz gehostet wird

In den folgenden Beispielen bezieht sich YOUR_MANAGEMENT_API_URL auf den URI der Digital Twins-APIs:

https://YOUR_INSTANCE_NAME.YOUR_LOCATION.azuresmartspaces.net/management/api/v1.0
Name Ersetzen durch
YOUR_INSTANCE_NAME Den Namen Ihrer Azure Digital Twins-Instanz
YOUR_LOCATION Die Region, in der Ihre Instanz gehostet wird

Gewähren von Berechtigungen für Ihren Dienstprinzipal

Das Gewähren von Berechtigungen für Ihren Dienstprinzipal ist häufig einer der ersten Schritte, die Sie bei der Arbeit mit Azure Digital Twins ausführen. Er umfasst:

  1. Anmelden bei Ihrer Azure-Instanz über die Azure CLI oder PowerShell.
  2. Abrufen Ihrer Dienstprinzipalinformationen.
  3. Zuweisen der gewünschten Rolle zu Ihrem Dienstprinzipal.

Ihre Anwendungs-ID wird Ihnen von Azure Active Directory bereitgestellt. Weitere Informationen zum Konfigurieren und Bereitstellen eines Azure Digital Twins in Active Directory finden Sie im Schnellstart.

Nachdem Sie über die Anwendungs-ID verfügen, führen Sie einen der folgenden Befehle aus: In Azure CLI:

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

In PowerShell:

Login-AzAccount
Get-AzADServicePrincipal -ApplicationId <ApplicationId>

Ein Benutzer mit der Rolle Administrator kann einem Benutzer die Rolle „Raumadministrator“ zuweisen, indem er eine authentifizierte HTTP-POST-Anforderung an folgende URL stellt:

YOUR_MANAGEMENT_API_URL/roleassignments

Mit folgendem JSON-Text:

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

Abrufen aller Rollen

Systemrollen

Um alle verfügbaren Rollen (Rollendefinitionen) aufzulisten, stellen Sie eine authentifizierte HTTP-GET-Anforderung an:

YOUR_MANAGEMENT_API_URL/system/roles

Eine erfolgreiche Anforderung gibt ein JSON-Array mit Einträgen für jede Rolle zurück, die zugewiesen werden kann:

[
    {
        "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"
    }
]

Überprüfen einer bestimmten Rollenzuweisung

Um eine bestimmte Rollenzuweisung zu überprüfen, stellen Sie eine authentifizierte HTTP-GET-Anforderung an:

YOUR_MANAGEMENT_API_URL/roleassignments/check?userId=YOUR_USER_ID&path=YOUR_PATH&accessType=YOUR_ACCESS_TYPE&resourceType=YOUR_RESOURCE_TYPE
Parameterwert Erforderlich Typ Beschreibung
YOUR_USER_ID True String Die objectId für objectIdType „UserId“.
YOUR_PATH True String Der ausgewählte Pfad, für den der Zugriff überprüft werden solle.
YOUR_ACCESS_TYPE True String Read, Create, Update oder Delete
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 oder UserExtendedProperty

Eine erfolgreiche Anforderung gibt einen booleschen true- oder false-Wert zurück, um anzuzeigen, ob dem Benutzer der Zugriffstyp für den angegebenen Pfad und die Ressource zugewiesen wurde.

Abrufen von Rollenzuweisungen nach Pfad

Um alle Rollenzuweisungen für einen Pfad abzurufen, stellen Sie eine authentifizierte HTTP-GET-Anforderung an:

YOUR_MANAGEMENT_API_URL/roleassignments?path=YOUR_PATH
Wert Ersetzen durch
YOUR_PATH Der vollständige Pfad zum Raum

Eine erfolgreiche Anforderung gibt ein JSON-Array mit jeder Rollenzuweisung zurück, die dem ausgewählten Parameter Pfad zugeordnet ist:

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

Widerrufen einer Berechtigung

Um eine Berechtigung eines Empfängers zu widerrufen, löschen Sie die Rollenzuweisung, indem Sie eine authentifizierte HTTP-DELETE-Anforderung ausführen:

YOUR_MANAGEMENT_API_URL/roleassignments/YOUR_ROLE_ASSIGNMENT_ID
Parameter Ersetzen durch
YOUR_ROLE_ASSIGNMENT_ID Die ID der zu entfernenden Rollenzuweisung

Eine erfolgreicher DELETE-Anforderung gibt einen Antwortstatus „204“ zurück. Überprüfen Sie das Entfernen der Rollenzuweisung, indem Sie überprüfen, ob die Rollenzuweisung noch gültig ist.

Erstellen einer Rollenzuweisung

Um eine Rollenzuweisung zu erstellen, stellen Sie eine authentifizierte HTTP-POST-Anforderung an folgende URL:

YOUR_MANAGEMENT_API_URL/roleassignments

Überprüfen Sie, ob der JSON-Text das folgende Schema einhält:

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

Eine erfolgreiche Anforderung gibt einen Antwortstatus „201“ zurück, zusammen mit der ID der neu erstellten Rollenzuweisung:

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

Konfigurationsbeispiele

Die folgenden Beispiele veranschaulichen, wie Sie Ihren JSON-Text in verschiedenen, häufig auftretenden Rollenzuweisungsszenarios konfigurieren sollten.

  • Beispiel: Ein Benutzer benötigt administrativen Zugriff auf einen Boden eines Mandantenraums.

    {
      "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"
    }
    
  • Beispiel: Eine Anwendung führt Testszenarien aus, die Geräte und Sensoren simuliert.

    {
      "roleId": "98e44ad7-28d4-0007-853b-b9968ad132d1",
      "objectId" : "cabf7aaa-af0b-41c5-000a-ce2f4c20000b",
      "objectIdType" : "ServicePrincipalId",
      "tenantId": " a0c20ae6-e000-4c60-993d-a91ce6000724",
      "path": "/"
    }
    
  • Beispiel: Alle Benutzer, die Teil einer Domäne sind, erhalten Lesezugriff für Leerzeichen, Sensoren und Benutzer. Dieser Zugriff umfasst auch die entsprechenden zugehörigen Objekte.

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

Nächste Schritte