Sdílet prostřednictvím


Vytváření a správa přiřazení rolí ve službě Azure Digital Twins

Důležité

Byla vydána nová verze služby Azure Digital Twins. Vzhledem k rozšířeným funkcím nové služby byla původní služba Azure Digital Twins (popsaná v této sadě dokumentace) vyřazena.

Pokud chcete zobrazit dokumentaci k nové službě, navštivte aktivní dokumentaci ke službě Azure Digital Twins.

Azure Digital Twins používá řízení přístupu na základě role (RBAC) ke správě přístupu k prostředkům.

Přehled přiřazení rolí

Každé přiřazení role odpovídá následující definici:

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

Následující tabulka popisuje jednotlivé atributy:

Atribut Name Požaduje se Typ Description
roleId Identifikátor definice role Ano Řetězec Jedinečné ID požadovaného přiřazení role. Vyhledejte definice rolí a jejich identifikátor dotazováním na rozhraní SYSTEM API nebo projděte si následující tabulku.
objectId Identifikátor objektu Ano Řetězec ID azure Active Directory, ID instančního objektu nebo název domény. Komu nebo komu je přiřazení role přiřazeno. Přiřazení role musí být naformátované podle jeho přidruženého typu. DomainName Pro objectIdType musí objectId začínat znakem“@”.
objectIdType Typ identifikátoru objektu Ano Řetězec Typ použitého identifikátoru objektu. Viz podporované typy ObjectIdTypes níže.
program Cesta mezery Ano Řetězec Úplná přístupová cesta k objektu Space . Příklad: /{Guid}/{Guid}. Pokud identifikátor potřebuje přiřazení role pro celý graf, zadejte "/". Tento znak určuje kořen, ale jeho použití se nedoporučuje. Vždy dodržujte zásadu nejnižších oprávnění.
id tenanta Identifikátor tenanta Různé Řetězec Ve většině případů ID tenanta Azure Active Directory. Nepovoleno pro DeviceId a TenantId ObjectIdTypes. Vyžaduje se pro UserId objekty ServicePrincipalId ObjectIdTypes. Volitelné pro ObjectIdType DomainName.

Podporované identifikátory definic rolí

Každé přiřazení role přidruží definici role k entitě ve vašem prostředí Azure Digital Twins.

Následující tabulka popisuje role, které jsou k dispozici ve službě Azure Digital Twins:

Role Popis Identifikátor
Správce prostoru OPRÁVNĚNÍ CREATE, READ, UPDATE a DELETE pro zadaný prostor a všechny uzly pod nimi. Globální oprávnění. 98e4ad7-28d4-4007-853b-b9968ad132d1
Správce uživatelů OPRÁVNĚNÍ CREATE, READ, UPDATE a DELETE pro uživatele a objekty související s uživatelem. Oprávnění ČÍST pro mezery dfaac54c-f583-4dd2-b45d-8d4bbc0aa1ac
Správce zařízení OPRÁVNĚNÍ CREATE, READ, UPDATE a DELETE pro zařízení a objekty související se zařízeními. Oprávnění ČÍST pro mezery 3cdfde07-bc16-40d9-bed3-66d49a8f52ae
Správce klíčů Oprávnění CREATE, READ, UPDATE a DELETE pro přístupové klíče Oprávnění ČÍST pro mezery 5a0b1afc-e118-4068-969f-b50efb8e5da6
Správce tokenů Oprávnění READ a UPDATE pro přístupové klíče Oprávnění ČÍST pro mezery 38a3bb21-5424-43b4-b0bf-78ee228840c3
Uživatel Oprávnění READ pro prostory, senzory a uživatele, které zahrnují odpovídající související objekty. b1ffdb77-c635-4e7e-ad25-948237d85b30
Specialista podpory Oprávnění ČÍST pro všechno kromě přístupových klíčů. 6e46958b-dc62-4e7c-990c-c3da2e030969
Instalační program zařízení Oprávnění READ a UPDATE pro zařízení a senzory, které zahrnují odpovídající související objekty. Oprávnění ČÍST pro mezery b16dd9fe-4efe-467b-8c8c-720e2ff8817c
Zařízení brány OPRÁVNĚNÍ CREATE pro senzory. Oprávnění READ pro zařízení a senzory, které zahrnují odpovídající související objekty. d4c69766-e9bd-4e61-bfc1-d8b6e686c7a8

Podporované typy identifikátorů objektů

Dříve byl zaveden atribut objectIdType .

Typ objectIdType (nebo typ identifikátoru objektu) odkazuje na typ identity, která je udělena roli. DeviceId Kromě typů a UserDefinedFunctionId typů typy identifikátorů objektů odpovídají vlastnostem objektů Azure Active Directory.

Následující tabulka obsahuje podporované typy identifikátorů objektů ve službě Azure Digital Twins:

Typ Description
UserId Přiřadí uživateli roli.
DeviceId Přiřadí k zařízení roli.
DomainName Přiřadí roli k názvu domény. Každý uživatel se zadaným názvem domény má přístupová práva odpovídající role.
TenantId Přiřadí roli tenantovi. Každý uživatel, který patří do zadaného Azure AD ID tenanta, má přístupová práva odpovídající role.
ServicePrincipalId Přiřadí roli k ID objektu instančního objektu.
UserDefinedFunctionId Přiřadí roli k uživatelem definované funkci (UDF).

Operace přiřazení role

Azure Digital Twins podporuje úplné operace CREATE, READ a DELETE pro přiřazení rolí. Operace AKTUALIZACE se zpracovávají přidáním přiřazení rolí, odebráním přiřazení rolí nebo úpravou uzlů graphu prostorové inteligence, ke kterým přiřazení rolí poskytují přístup.

Koncové body přiřazení rolí

Zadaná referenční dokumentace ke Swaggeru obsahuje další informace o všech dostupných koncových bodech rozhraní API, operacích požadavků a definicích.

Tip

K předvedení sady funkcí rozhraní API se poskytuje Swagger sneak Preview. Hostuje se v docs.westcentralus.azuresmartspaces.net/management/swagger.

Můžete získat přístup k vlastní vygenerované dokumentaci k rozhraní API pro správu Swaggeru na adrese:

https://YOUR_INSTANCE_NAME.YOUR_LOCATION.azuresmartspaces.net/management/swagger
Name Nahradit hodnotou
YOUR_INSTANCE_NAME Název instance služby Azure Digital Twins
YOUR_LOCATION Na které oblasti serveru je vaše instance hostovaná

V následujících YOUR_MANAGEMENT_API_URL příkladech se odkazuje na identifikátor URI rozhraní API služby Digital Twins:

https://YOUR_INSTANCE_NAME.YOUR_LOCATION.azuresmartspaces.net/management/api/v1.0
Name Nahradit hodnotou
YOUR_INSTANCE_NAME Název instance služby Azure Digital Twins
YOUR_LOCATION Oblast, ve které je vaše instance hostovaná

Udělení oprávnění instančnímu objektu

Udělení oprávnění instančnímu objektu je často jedním z prvních kroků, které provedete při práci s Azure Digital Twins. Zahrnuje:

  1. Přihlaste se k instanci Azure prostřednictvím Azure CLI nebo PowerShellu.
  2. Získání informací o instančním objektu
  3. Přiřazení požadované role k instančnímu objektu

ID vaší aplikace se zadává v Azure Active Directory. Další informace o konfiguraci a zřízení služby Azure Digital Twins ve službě Active Directory najdete v rychlém startu.

Jakmile budete mít ID aplikace, spusťte jeden z následujících příkazů. V Azure CLI:

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

V PowerShellu:

Login-AzAccount
Get-AzADServicePrincipal -ApplicationId <ApplicationId>

Uživatel s rolí Správa pak může uživateli přiřadit roli Správce prostoru provedením ověřeného požadavku HTTP POST na adresu URL:

YOUR_MANAGEMENT_API_URL/roleassignments

S následujícím textem JSON:

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

Načtení všech rolí

Systémové role

Pokud chcete zobrazit seznam všech dostupných rolí (definice rolí), proveďte ověřený požadavek HTTP GET na:

YOUR_MANAGEMENT_API_URL/system/roles

Úspěšný požadavek vrátí pole JSON s položkami pro každou roli, která může být přiřazena:

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

Kontrola konkrétního přiřazení role

Pokud chcete zkontrolovat konkrétní přiřazení role, proveďte ověřený požadavek HTTP GET na:

YOUR_MANAGEMENT_API_URL/roleassignments/check?userId=YOUR_USER_ID&path=YOUR_PATH&accessType=YOUR_ACCESS_TYPE&resourceType=YOUR_RESOURCE_TYPE
Hodnota parametru Povinné Typ Popis
YOUR_USER_ID Ano Řetězec Id objektu objektu UserId ObjectIdType.
YOUR_PATH Ano Řetězec Zvolená cesta ke kontrole přístupu.
YOUR_ACCESS_TYPE Ano Řetězec Čtení, vytváření, aktualizace nebo odstranění
YOUR_RESOURCE_TYPE Ano Řetězec Device, DeviceBlobMetadata, DeviceExtendedProperty, ExtendedPropertyKey, ExtendedType, Endpoint, KeyStore, Matcher, Ontology, Report, RoleDefinition, Sensor, SensorExtendedProperty, SpaceBlobMetadata, SpaceExtendedProperty, SpaceResource, SpaceRoleAssignment, System, UerDefinedFunction, User, UserBlobMetadata nebo UserExtendedProperty

Úspěšný požadavek vrátí logickou hodnotu true nebo false určí, jestli byl typ přístupu přiřazen uživateli pro danou cestu a prostředek.

Získání přiřazení rolí podle cesty

Pokud chcete získat všechna přiřazení rolí pro cestu, proveďte ověřený požadavek HTTP GET na:

YOUR_MANAGEMENT_API_URL/roleassignments?path=YOUR_PATH
Hodnota Nahradit hodnotou
YOUR_PATH Úplná cesta k prostoru

Úspěšný požadavek vrátí pole JSON s každým přiřazením role přidruženým k vybranému parametru cesty :

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

Odvolání oprávnění

Pokud chcete odvolat oprávnění od příjemce, odstraňte přiřazení role provedením ověřeného požadavku HTTP DELETE:

YOUR_MANAGEMENT_API_URL/roleassignments/YOUR_ROLE_ASSIGNMENT_ID
Parametr Nahradit hodnotou
YOUR_ROLE_ASSIGNMENT_ID ID přiřazení role k odebrání

Úspěšný požadavek DELETE vrátí stav odpovědi 204. Ověřte odebrání přiřazení role tak, že zkontrolujte , jestli přiřazení role stále drží.

Vytvoření přiřazení role

Pokud chcete vytvořit přiřazení role, proveďte ověřený požadavek HTTP POST na adresu URL:

YOUR_MANAGEMENT_API_URL/roleassignments

Ověřte, že tělo JSON odpovídá následujícímu schématu:

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

Úspěšný požadavek vrátí stav odpovědi 201 spolu s ID nově vytvořeného přiřazení role:

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

Příklady konfigurace

Následující příklady ukazují, jak nakonfigurovat tělo JSON v několika běžně používaných scénářích přiřazení role.

  • Příklad: Uživatel potřebuje přístup správce k podstavci prostoru tenanta.

    {
      "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"
    }
    
  • Příklad: Aplikace spouští testovací scénáře napodobování zařízení a senzorů.

    {
      "roleId": "98e44ad7-28d4-0007-853b-b9968ad132d1",
      "objectId" : "cabf7aaa-af0b-41c5-000a-ce2f4c20000b",
      "objectIdType" : "ServicePrincipalId",
      "tenantId": " a0c20ae6-e000-4c60-993d-a91ce6000724",
      "path": "/"
    }
    
  • Příklad: Všichni uživatelé, kteří jsou součástí domény, dostávají přístup pro čtení pro prostory, senzory a uživatele. Tento přístup zahrnuje odpovídající související objekty.

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

Další kroky