REST API를 사용하여 Azure 역할 할당

Azure RBAC(Azure 역할 기반 액세스 제어)는 Azure 리소스에 대한 액세스를 관리하는 데 사용하는 권한 부여 시스템입니다. 액세스 권한을 부여하려면 역할을 특정 범위의 사용자, 그룹, 서비스 주체 또는 관리 ID에 할당합니다. 이 문서에서는 REST API를 사용하여 역할을 할당하는 방법을 설명합니다.

필수 조건

Azure 역할을 할당하려면 다음이 있어야 합니다.

다음 버전을 사용해야 합니다.

  • Azure 역할을 할당하는 2015-07-01 이상의 버전
  • 새 서비스 사용자에게 Azure 역할을 할당할 수 있는 2018-09-01-preview 이상

자세한 내용은 Azure RBAC REST API의 API 버전을 참조하세요.

Azure 역할 할당

역할을 할당하려면 역할 할당 - 만들기 REST API를 사용하고 보안 주체, 역할 정의 및 범위를 지정합니다. 이 API를 호출하려면 역할 기반 Access Control 관리자와 같은 Microsoft.Authorization/roleAssignments/write 작업에 대한 액세스 권한이 있어야 합니다.

  1. 할당하려는 역할 정의에 대한 식별자를 가져오려면 역할 정의 - 나열 REST API를 사용하거나 기본 제공 역할을 참조하세요.

  2. GUID 도구를 사용하여 역할 할당 식별자에 사용할 고유 식별자를 생성합니다. 식별자의 형식은 00000000-0000-0000-0000-000000000000입니다.

  3. 다음 요청 및 본문으로 시작합니다.

    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. URI 내에서 {scope}를 역할 할당에 대한 범위로 바꿉니다.

    범위 Type
    providers/Microsoft.Management/managementGroups/{groupId1} 관리 그룹
    subscriptions/{subscriptionId1} Subscription
    subscriptions/{subscriptionId1}/resourceGroups/myresourcegroup1 Resource group
    subscriptions/{subscriptionId1}/resourceGroups/myresourcegroup1/providers/microsoft.web/sites/mysite1 리소스

    이전 예제에서 microsoft.web은 App Service 인스턴스를 참조하는 리소스 공급자입니다. 마찬가지로 다른 리소스 공급자를 사용하여 범위를 지정할 수 있습니다. 자세한 내용은 Azure 리소스 공급자 및 형식 및 지원되는 Azure 리소스 공급자 작업을 참조하세요.

  5. {roleAssignmentId}를 역할 할당의 GUID 식별자로 바꿉니다.

  6. 요청 본문 내에서 {scope} 를 URI와 동일한 범위로 바꿉니다.

  7. {roleDefinitionId}를 역할 정의 식별자로 바꿉니다.

  8. {principalId}를 역할이 할당될 사용자, 그룹 또는 서비스 주체의 개체 식별자로 바꿉니다.

다음 요청 및 본문은 구독 범위에서 사용자에게 Backup Reader 역할을 할당합니다.

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

다음은 출력 예제입니다.

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

새 서비스 주체

새 서비스 주체를 만들고 해당 서비스 주체에 역할을 즉시 할당하려고 하면 경우에 따라 해당 역할 할당이 실패할 수 있습니다. 예를 들어 새 관리 ID를 만든 다음, 해당 서비스 주체에 역할을 할당하려고 하면 역할 할당이 실패할 수 있습니다. 이 오류가 발생하는 이유는 복제 지연 때문일 수 있습니다. 서비스 주체는 한 지역에 생성됩니다. 그러나 서비스 주체를 아직 복제하지 않은 다른 지역에서 역할 할당이 발생할 수 있습니다.

이 시나리오를 해결하려면 역할 할당 - 만들기 REST API를 사용하고 principalType 속성을 ServicePrincipal로 설정합니다. 또한 apiVersion2018-09-01-preview 이상으로 설정해야 합니다. 2022-04-01은 첫 번째 안정된 버전입니다.

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

다음 단계