Udostępnij za pośrednictwem


Przypisywanie ról platformy Azure przy użyciu interfejsu API REST

Kontrola dostępu oparta na rolach (RBAC) platformy Azure to system autoryzacji używany do zarządzania dostępem do zasobów platformy Azure. Aby udzielić dostępu, należy przydzielić role użytkownikom, grupom, jednostkom usługowym lub tożsamościom zarządzanym w określonym zakresie. W tym artykule opisano sposób przypisywania ról przy użyciu interfejsu API REST.

Wymagania wstępne

Aby przypisać role platformy Azure, musisz mieć następujące elementy:

Należy użyć następujących wersji:

  • 2015-07-01 lub później, aby przypisać rolę Azure
  • 2018-09-01-preview lub nowsza wersja, aby przypisać rolę Azure do nowego głównego składnika usługi

Aby uzyskać więcej informacji, zobacz wersje interfejsów API REST RBAC platformy Azure.

Przypisywanie roli platformy Azure

Aby przypisać rolę, użyj interfejsu API REST Role Assignments - Create i określ podmiot zabezpieczeń, definicję roli oraz zakres. Aby wywołać ten interfejs API, musisz mieć dostęp do Microsoft.Authorization/roleAssignments/write akcji, takiej jak Administrator kontroli dostępu opartej na rolach.

  1. Użyj Role Definitions - List API REST lub zobacz Wbudowane role, aby uzyskać identyfikator definicji roli, którą chcesz przypisać.

  2. Użyj narzędzia GUID, aby wygenerować unikatowy identyfikator, który będzie używany dla identyfikatora przypisania roli. Identyfikator ma format: 00000000-0000-0000-0000-000000000000

  3. Zacznij od następującego żądania i treści:

    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. W identyfikatorze URI zastąp #B0 {scope} #C1 zakresem przypisania roli.

    Zakres Typ
    providers/Microsoft.Management/managementGroups/{groupId1} Grupa zarządzania
    subscriptions/{subscriptionId1} Subskrypcja
    subscriptions/{subscriptionId1}/resourceGroups/myresourcegroup1 Grupa zasobów
    subscriptions/{subscriptionId1}/resourceGroups/myresourcegroup1/providers/microsoft.web/sites/mysite1 Zasób

    W poprzednim przykładzie microsoft.web jest dostawcą zasobów, który odnosi się do instancji App Service. Podobnie można użyć dowolnego innego dostawcy zasobów i określić zakres. Aby uzyskać więcej informacji, zobacz Dostawcy i typy zasobów platformy Azure oraz obsługiwane operacje dostawcy zasobów platformy Azure.

  5. Zastąp element {roleAssignmentId} identyfikatorem GUID przypisania roli.

  6. W treści żądania zastąp element {scope} tym samym zakresem co w identyfikatorze URI.

  7. Zastąp element {roleDefinitionId} identyfikatorem definicji roli.

  8. Zastąp #B0 {principalId} #C1 identyfikatorem obiektu użytkownika, grupy lub jednostki usługi, która zostanie przypisana do roli.

Następujące żądanie i treść przypisuje użytkownikowi rolę Czytelnik kopii zapasowych w zakresie subskrypcji:

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}"
  }
}

Poniżej przedstawiono przykład danych wyjściowych:

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

Nowa jednostka usługi

Jeśli tworzysz nową jednostkę usługi i natychmiast spróbujesz przypisać rolę do tej jednostki usługi, przypisanie tej roli może zakończyć się niepowodzeniem w niektórych przypadkach. Jeśli na przykład utworzysz nową tożsamość zarządzaną, a następnie spróbujesz przypisać rolę do tej jednostki usługi, przypisanie roli może zakończyć się niepowodzeniem. Przyczyną tego błędu jest prawdopodobnie opóźnienie replikacji. Główna jednostka usługi jest tworzona w jednym regionie, ale przypisanie roli może zostać dokonane w innym regionie, gdzie jednostka usługi nie została jeszcze zreplikowana.

Aby rozwiązać ten scenariusz, użyj interfejsu API REST Role Assignments - Create i ustaw właściwość principalType na ServicePrincipal. Trzeba również ustawić apiVersion na 2018-09-01-preview lub później. 2022-04-01 jest pierwszą stabilną wersją.

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"
  }
}

Następne kroki