Sdílet prostřednictvím


Přiřazení rolí Azure pomocí rozhraní REST API

Řízení přístupu na základě role v Azure (Azure RBAC) je autorizační systém, který používáte ke správě přístupu k prostředkům Azure. Pokud chcete udělit přístup, přiřaďte role uživatelům, skupinám, instančním objektům nebo spravovaným identitám v určitém oboru. Tento článek popisuje, jak přiřadit role pomocí rozhraní REST API.

Požadavky

Pokud chcete přiřazovat role Azure, musíte mít:

Musíte použít následující verze:

  • 2015-07-01 nebo novější pro přiřazení role Azure
  • 2018-09-01-preview or later to assign an Azure role to a new service principal

Další informace najdete v tématu Verze rozhraní API Azure RBAC REST API.

Přiřaďte roli Azure

Pokud chcete přiřadit roli, použijte přiřazení rolí – Vytvořte rozhraní REST API a zadejte objekt zabezpečení, definici role a obor. To call this API, you must have access to the Microsoft.Authorization/roleAssignments/write action, such as Role Based Access Control Administrator.

  1. Use the Role Definitions - List REST API or see Built-in roles to get the identifier for the role definition you want to assign.

  2. Pomocí nástroje GUID vygenerujte jedinečný identifikátor, který se použije pro identifikátor přiřazení role. Identifikátor má formát: 00000000-0000-0000-0000-000000000000

  3. Začněte následujícím požadavkem a textem:

    PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}?api-version=2022-04-01
    
    {
      "properties": {
        "roleDefinitionId": "/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}",
        "principalId": "{principalId}"
      }
    }
    
  4. V rámci identifikátoru URI nahraďte {scope} rozsahem přiřazení role.

    Scope Typ
    providers/Microsoft.Management/managementGroups/{groupId1} Skupina pro správu
    subscriptions/{subscriptionId1} Předplatné
    subscriptions/{subscriptionId1}/resourceGroups/myresourcegroup1 Skupina zdrojů
    subscriptions/{subscriptionId1}/resourceGroups/myresourcegroup1/providers/microsoft.web/sites/mysite1 Zdroj

    V předchozím příkladu je microsoft.web poskytovatelem prostředků, který odkazuje na instanci služby App Service. Podobně můžete použít libovolné jiné poskytovatele prostředků a zadat rozsah. Další informace najdete v tématu Poskytovatelé prostředků Azure a typy a podporované operace poskytovatele prostředků Azure.

  5. Nahraďte {roleAssignmentId} identifikátorem GUID přiřazení role.

  6. Within the request body, replace {scope} with the same scope as in the URI.

  7. Nahraďte {roleDefinitionId} identifikátorem definice role.

  8. Nahraďte {principalId} identifikátorem objektu uživatele, skupiny nebo instančního objektu, který bude přiřazen roli.

The following request and body assigns the Backup Reader role to a user at subscription scope:

PUT https://management.azure.com/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId1}?api-version=2022-04-01
{
  "properties": {
    "roleDefinitionId": "/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleDefinitions/a795c7a0-d4a2-40c1-ae25-d81f01202912",
    "principalId": "{objectId1}"
  }
}

Následuje příklad výstupu:

{
    "properties": {
        "roleDefinitionId": "/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleDefinitions/a795c7a0-d4a2-40c1-ae25-d81f01202912",
        "principalId": "{objectId1}",
        "principalType": "User",
        "scope": "/subscriptions/{subscriptionId1}",
        "condition": null,
        "conditionVersion": null,
        "createdOn": "2022-05-06T23:55:23.7679147Z",
        "updatedOn": "2022-05-06T23:55:23.7679147Z",
        "createdBy": null,
        "updatedBy": "{updatedByObjectId1}",
        "delegatedManagedIdentityResourceId": null,
        "description": null
    },
    "id": "/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId1}",
    "type": "Microsoft.Authorization/roleAssignments",
    "name": "{roleAssignmentId1}"
}

New service principal

Pokud vytvoříte nový instanční objekt a okamžitě se pokusíte přiřadit roli k danému instančnímu objektu, přiřazení této role může v některých případech selhat. Pokud například vytvoříte novou spravovanou identitu a pak se pokusíte přiřadit roli k tomuto správci služeb, přiřazení role může selhat. Důvodem tohoto selhání je pravděpodobně zpoždění replikace. The service principal is created in one region; however, the role assignment might occur in a different region that hasn't replicated the service principal yet.

Pokud chcete tento scénář vyřešit, použijte přiřazení rolí – Vytvořte rozhraní REST API a nastavte vlastnost principalType na ServicePrincipal. You must also set the apiVersion to 2018-09-01-preview or later. 2022-04-01 je první stabilní verze.

PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}?api-version=2022-04-01
{
  "properties": {
    "roleDefinitionId": "/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}",
    "principalId": "{principalId}",
    "principalType": "ServicePrincipal"
  }
}

Další kroky