Przypisywanie ról platformy Azure przy użyciu interfejs 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 przypisać role do użytkowników, grup, jednostek usług lub tożsamości zarządzanych 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ć:

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

  • 2015-07-01 lub nowsze w celu przypisania roli platformy Azure
  • 2018-09-01-preview lub nowsze, aby przypisać rolę platformy Azure do nowej jednostki usługi

Aby uzyskać więcej informacji, zobacz Wersje interfejsów API rest kontroli dostępu opartej na rolach platformy Azure.

Przypisywanie roli platformy Azure

Aby przypisać rolę, użyj przypisań ról — utwórz interfejs API REST i określ podmiot zabezpieczeń, definicję roli i zakres. Aby wywołać ten interfejs API, musisz mieć dostęp do Microsoft.Authorization/roleAssignments/write akcji, takiej jak kontrola dostępu oparta na rolach Administracja istrator.

  1. Użyj interfejsu API REST definicji ról — lista 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 element {scope} zakresem przypisania roli.

    Scope 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 odwołuje się do wystąpienia usługi 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 element {principalId} 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. Jednostka usługi jest tworzona w jednym regionie; Jednak przypisanie roli może wystąpić w innym regionie, który jeszcze nie zreplikował jednostki usługi.

Aby rozwiązać ten scenariusz, użyj przypisań ról — utwórz interfejs API REST i ustaw principalType właściwość na ServicePrincipal. Należy również ustawić wartość na 2018-09-01-preview lub nowsząapiVersion. 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