REST API를 사용하여 Azure 역할 할당
Azure RBAC(Azure 역할 기반 액세스 제어)는 Azure 리소스에 대한 액세스를 관리하는 데 사용하는 권한 부여 시스템입니다. 액세스 권한을 부여하려면 역할을 특정 범위의 사용자, 그룹, 서비스 주체 또는 관리 ID에 할당합니다. 이 문서에서는 REST API를 사용하여 역할을 할당하는 방법을 설명합니다.
필수 조건
Azure 역할을 할당하려면 다음이 있어야 합니다.
- 역할 기반 Access Control 관리자 또는 사용자 액세스 관리자와 같은
Microsoft.Authorization/roleAssignments/write
권한
다음 버전을 사용해야 합니다.
- Azure 역할을 할당하는
2015-07-01
이상의 버전 - 새 서비스 사용자에게 Azure 역할을 할당할 수 있는
2018-09-01-preview
이상
자세한 내용은 Azure RBAC REST API의 API 버전을 참조하세요.
Azure 역할 할당
역할을 할당하려면 역할 할당 - 만들기 REST API를 사용하고 보안 주체, 역할 정의 및 범위를 지정합니다. 이 API를 호출하려면 역할 기반 Access Control 관리자와 같은 Microsoft.Authorization/roleAssignments/write
작업에 대한 액세스 권한이 있어야 합니다.
할당하려는 역할 정의에 대한 식별자를 가져오려면 역할 정의 - 나열 REST API를 사용하거나 기본 제공 역할을 참조하세요.
GUID 도구를 사용하여 역할 할당 식별자에 사용할 고유 식별자를 생성합니다. 식별자의 형식은
00000000-0000-0000-0000-000000000000
입니다.다음 요청 및 본문으로 시작합니다.
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}" } }
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 리소스 공급자 작업을 참조하세요.
{roleAssignmentId}를 역할 할당의 GUID 식별자로 바꿉니다.
요청 본문 내에서 {scope} 를 URI와 동일한 범위로 바꿉니다.
{roleDefinitionId}를 역할 정의 식별자로 바꿉니다.
{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
로 설정합니다. 또한 apiVersion
을 2018-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"
}
}