Udostępnij za pośrednictwem


Tworzenie przypisań ról i zarządzanie nimi w usłudze Azure Digital Twins

Ważne

Wydano nową wersję usługi Azure Digital Twins. W świetle rozszerzonych możliwości nowej usługi oryginalna usługa Azure Digital Twins (opisana w tym zestawie dokumentacji) została wycofana.

Aby wyświetlić dokumentację nowej usługi, odwiedź aktywną dokumentację usługi Azure Digital Twins.

Usługa Azure Digital Twins używa kontroli dostępu opartej na rolach (RBAC) do zarządzania dostępem do zasobów.

Omówienie przypisań ról

Każde przypisanie roli jest zgodne z następującą definicją:

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

W poniższej tabeli opisano każdy atrybut:

Atrybut Nazwa Wymagany Typ Opis
roleId Identyfikator definicji roli Tak Ciąg Unikatowy identyfikator żądanego przypisania roli. Znajdź definicje ról i ich identyfikator, wysyłając zapytanie do interfejsu API systemu lub przeglądając poniższą tabelę.
objectId Identyfikator obiektu Tak Ciąg Identyfikator usługi Azure Active Directory, identyfikator obiektu jednostki usługi lub nazwa domeny. Do czego lub do kogo przypisano przypisanie roli. Przypisanie roli musi być sformatowane zgodnie z skojarzonym typem. DomainName Dla objectIdType, objectId musi zaczynać się od “@” znaku.
objectIdType Typ identyfikatora obiektu Tak Ciąg Używany rodzaj identyfikatora obiektu. Zobacz obsługiwane identyfikatory ObjectIdTypes poniżej.
path Ścieżka spacji Tak Ciąg Pełna ścieżka dostępu do Space obiektu. Może to być na przykład /{Guid}/{Guid}. Jeśli identyfikator wymaga przypisania roli dla całego grafu, określ "/"wartość . Ten znak wyznacza katalog główny, ale jego użycie jest zniechęcone. Zawsze przestrzegaj zasady najniższych uprawnień.
tenantId Identyfikator dzierżawy Różnie Ciąg W większości przypadków identyfikator dzierżawy usługi Azure Active Directory. Niedozwolone dla DeviceId i TenantId ObjectIdTypes. Wymagane dla UserId i ServicePrincipalId ObjectIdTypes. Opcjonalnie dla atrybutu DomainName ObjectIdType.

Obsługiwane identyfikatory definicji roli

Każde przypisanie roli kojarzy definicję roli z jednostką w środowisku usługi Azure Digital Twins.

W poniższej tabeli opisano role dostępne w usłudze Azure Digital Twins:

Role Opis Identyfikator
Administrator obszaru UPRAWNIENIA CREATE, READ, UPDATE i DELETE dla określonego miejsca i wszystkich węzłów poniżej. Uprawnienia globalne. 98e44ad7-28d4-4007-853b-b9968ad132d1
Administrator użytkowników Uprawnienia CREATE, READ, UPDATE i DELETE dla użytkowników i obiektów związanych z użytkownikami. Uprawnienie DO ODCZYTU dla spacji. dfaac54c-f583-4dd2-b45d-8d4bbc0aa1ac
Administrator urządzenia UPRAWNIENIA CREATE, READ, UPDATE i DELETE dla urządzeń i obiektów związanych z urządzeniami. Uprawnienie DO ODCZYTU dla spacji. 3cdfde07-bc16-40d9-bed3-66d49a8f52ae
Administrator klucza UPRAWNIENIA CREATE, READ, UPDATE i DELETE dla kluczy dostępu. Uprawnienie DO ODCZYTU dla spacji. 5a0b1afc-e118-4068-969f-b50efb8e5da6
Administrator tokenu Uprawnienia DO ODCZYTU i AKTUALIZACJI dla kluczy dostępu. Uprawnienie DO ODCZYTU dla spacji. 38a3bb21-5424-43b4-b0bf-78ee228840c3
Użytkownik Uprawnienie do odczytu dla przestrzeni, czujników i użytkowników, które obejmują odpowiednie powiązane obiekty. b1ffdb77-c635-4e7e-ad25-948237d85b30
Specjalista ds. pomocy technicznej Uprawnienie DO ODCZYTU dla wszystkich elementów z wyjątkiem kluczy dostępu. 6e46958b-dc62-4e7c-990c-c3da2e030969
Instalator urządzenia Uprawnienia DO ODCZYTU i AKTUALIZACJI dla urządzeń i czujników, które obejmują odpowiednie powiązane obiekty. Uprawnienie DO ODCZYTU dla spacji. b16dd9fe-4efe-467b-8c8c-720e2ff8817c
Urządzenie bramy Uprawnienie CREATE dla czujników. Uprawnienie do odczytu dla urządzeń i czujników, które obejmują odpowiednie powiązane obiekty. d4c69766-e9bd-4e61-bfc1-d8b6e686c7a8

Obsługiwane typy identyfikatorów obiektów

Wcześniej wprowadzono atrybut objectIdType .

Typ objectIdType (lub typ identyfikatora obiektu) odnosi się do typu tożsamości, która jest przyznawana roli. DeviceId Oprócz typów i UserDefinedFunctionId typy typy identyfikatorów obiektów odpowiadają właściwościom obiektów usługi Azure Active Directory.

Poniższa tabela zawiera obsługiwane typy identyfikatorów obiektów w usłudze Azure Digital Twins:

Typ Opis
UserId Przypisuje rolę użytkownikowi.
DeviceId Przypisuje rolę do urządzenia.
DomainName Przypisuje rolę do nazwy domeny. Każdy użytkownik o określonej nazwie domeny ma prawa dostępu do odpowiedniej roli.
TenantId Przypisuje rolę do dzierżawy. Każdy użytkownik należący do określonego identyfikatora dzierżawy Azure AD ma prawa dostępu odpowiadającej mu roli.
ServicePrincipalId Przypisuje rolę do identyfikatora obiektu jednostki usługi.
UserDefinedFunctionId Przypisuje rolę do funkcji zdefiniowanej przez użytkownika (UDF).

Operacje przypisywania ról

Usługa Azure Digital Twins obsługuje pełne operacje CREATE, READ i DELETE na potrzeby przypisań ról. Operacje AKTUALIZACJI są obsługiwane przez dodawanie przypisań ról, usuwanie przypisań ról lub modyfikowanie węzłów programu Graph analizy przestrzennej, do których przypisanie ról zapewniają dostęp.

Punkty końcowe przypisania roli

W podanej dokumentacji referencyjnej struktury Swagger znajdują się dodatkowe informacje o wszystkich dostępnych punktach końcowych interfejsu API, operacjach żądań i definicjach.

Porada

Dostępna jest wersja zapoznawcza programu Swagger w celu zademonstrowania zestawu funkcji interfejsu API. Jest on hostowany w docs.westcentralus.azuresmartspaces.net/management/swagger.

Dostęp do własnej wygenerowanej dokumentacji programu Swagger interfejsu API zarządzania można uzyskać pod adresem:

https://YOUR_INSTANCE_NAME.YOUR_LOCATION.azuresmartspaces.net/management/swagger
Nazwa Zamień na
YOUR_INSTANCE_NAME Nazwa wystąpienia usługi Azure Digital Twins
YOUR_LOCATION Region serwera, w którym jest hostowane używane wystąpienie

W poniższych YOUR_MANAGEMENT_API_URL przykładach odwołuje się do identyfikatora URI interfejsów API usługi Digital Twins:

https://YOUR_INSTANCE_NAME.YOUR_LOCATION.azuresmartspaces.net/management/api/v1.0
Nazwa Zamień na
YOUR_INSTANCE_NAME Nazwa wystąpienia usługi Azure Digital Twins
YOUR_LOCATION Region, w którym jest hostowane twoje wystąpienie

Udzielanie uprawnień jednostce usługi

Udzielanie uprawnień jednostce usługi jest często jednym z pierwszych kroków, które należy wykonać podczas pracy z usługą Azure Digital Twins. Wiąże się to z:

  1. Logowanie się do wystąpienia platformy Azure za pomocą interfejsu wiersza polecenia platformy Azure lub programu PowerShell.
  2. Uzyskiwanie informacji o jednostce usługi.
  3. Przypisywanie żądanej roli do jednostki usługi.

Identyfikator aplikacji jest dostarczany w usłudze Azure Active Directory. Aby dowiedzieć się więcej na temat konfigurowania i aprowizowania usługi Azure Digital Twins w usłudze Active Directory, przeczytaj przewodnik Szybki start.

Po utworzeniu identyfikatora aplikacji wykonaj jedno z następujących poleceń. W interfejsie wiersza polecenia platformy Azure:

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

W programie PowerShell:

Login-AzAccount
Get-AzADServicePrincipal -ApplicationId <ApplicationId>

Użytkownik z rolą Administracja może następnie przypisać rolę Administrator obszaru do użytkownika, wysyłając uwierzytelnione żądanie HTTP POST do adresu URL:

YOUR_MANAGEMENT_API_URL/roleassignments

Z następującą treścią JSON:

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

Pobieranie wszystkich ról

Role systemowe

Aby wyświetlić listę wszystkich dostępnych ról (definicji ról), wykonaj uwierzytelnione żądanie HTTP GET w celu:

YOUR_MANAGEMENT_API_URL/system/roles

Pomyślne żądanie zwróci tablicę JSON z wpisami dla każdej roli, którą można przypisać:

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

Sprawdzanie określonego przypisania roli

Aby sprawdzić określone przypisanie roli, wykonaj uwierzytelnione żądanie HTTP GET w celu:

YOUR_MANAGEMENT_API_URL/roleassignments/check?userId=YOUR_USER_ID&path=YOUR_PATH&accessType=YOUR_ACCESS_TYPE&resourceType=YOUR_RESOURCE_TYPE
Wartość parametru Wymagane Typ Opis
YOUR_USER_ID Prawda Ciąg ObjectId identyfikatora objectId UserIdType.
YOUR_PATH Prawda Ciąg Wybrana ścieżka do sprawdzania dostępu.
YOUR_ACCESS_TYPE Prawda Ciąg Odczyt, tworzenie, aktualizowanie lub usuwanie
YOUR_RESOURCE_TYPE Prawda Ciąg Device, DeviceBlobMetadata, DeviceExtendedProperty, ExtendedPropertyKey, ExtendedType, Endpoint, KeyStore, Matcher, Ontology, Report, RoleDefinition, Sensor,SensorExtendedProperty, Space, SpaceBlobMetadata, SpaceExtendedProperty, SpaceExtendedProperty, SpaceResource, SpaceRoleAssignment, System, UerDefinedFunction, User, UserBlobMetadata lub UserExtendedProperty

Pomyślne żądanie zwróci wartość logiczną true lub false wskaże, czy typ dostępu został przypisany do użytkownika dla danej ścieżki i zasobu.

Pobieranie przypisań ról według ścieżki

Aby uzyskać wszystkie przypisania ról dla ścieżki, wykonaj uwierzytelnione żądanie HTTP GET w celu:

YOUR_MANAGEMENT_API_URL/roleassignments?path=YOUR_PATH
Wartość Zamień na
YOUR_PATH Pełna ścieżka do obszaru

Pomyślne żądanie zwróci tablicę JSON z każdym przypisaniem roli skojarzonym z wybranym parametrem ścieżki :

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

Odwoływanie uprawnienia

Aby odwołać uprawnienie od adresata, usuń przypisanie roli, wysyłając uwierzytelnione żądanie HTTP DELETE:

YOUR_MANAGEMENT_API_URL/roleassignments/YOUR_ROLE_ASSIGNMENT_ID
Parametr Zamień na
YOUR_ROLE_ASSIGNMENT_ID Identyfikator przypisania roli do usunięcia

Pomyślne żądanie DELETE zwróci stan odpowiedzi 204. Sprawdź usunięcie przypisania roli, sprawdzając , czy przypisanie roli nadal jest przechowywane.

Tworzenie przypisania roli

Aby utworzyć przypisanie roli, utwórz uwierzytelnione żądanie HTTP POST do adresu URL:

YOUR_MANAGEMENT_API_URL/roleassignments

Sprawdź, czy treść JSON jest zgodna z następującym schematem:

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

Pomyślne żądanie zwróci stan odpowiedzi 201 wraz z identyfikatorem nowo utworzonego przypisania roli:

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

Przykłady konfiguracji

W poniższych przykładach pokazano, jak skonfigurować treść JSON w kilku często napotykanych scenariuszach przypisywania ról.

  • Przykład: użytkownik musi mieć dostęp administracyjny do podłogi przestrzeni dzierżawy.

    {
      "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"
    }
    
  • Przykład: Aplikacja uruchamia scenariusze testowe pozorujące urządzenia i czujniki.

    {
      "roleId": "98e44ad7-28d4-0007-853b-b9968ad132d1",
      "objectId" : "cabf7aaa-af0b-41c5-000a-ce2f4c20000b",
      "objectIdType" : "ServicePrincipalId",
      "tenantId": " a0c20ae6-e000-4c60-993d-a91ce6000724",
      "path": "/"
    }
    
  • Przykład: wszyscy użytkownicy, którzy są częścią domeny, otrzymują dostęp do odczytu dla przestrzeni, czujników i użytkowników. Ten dostęp obejmuje odpowiednie powiązane obiekty.

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

Następne kroki