REST API를 사용하여 Azure 역할 할당 조건 추가 또는 편집

Azure 역할 할당 조건은 더 세분화된 액세스 제어를 제공하기 위해 선택적으로 역할 할당에 추가할 수 있는 추가 검사입니다. 예를 들어 개체를 읽을 특정 태그를 포함하는 개체를 필요로 하는 조건을 추가할 수 있습니다. 이 문서에서는 REST API를 사용하여 역할 할당에 대한 조건을 추가, 편집, 나열 또는 삭제하는 방법을 설명합니다.

필수 조건

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

  • 2020-03-01-preview 이상
  • 역할 할당에 description 속성을 활용하려는 경우 2020-04-01-preview 이상
  • 2022-04-01는 안정적인 첫 번째 버전입니다.

역할 할당 조건을 추가하거나 편집하기 위한 사전 요구 사항의 자세한 내용은 조건 및 사전 요구 사항을 참조하세요.

조건 추가

역할 할당 조건을 추가하려면 역할 할당 - 만들기 REST API를 사용합니다. 역할 할당 - 만들기에는 조건과 관련된 다음 매개 변수가 포함됩니다.

매개 변수 형식 Description
condition 문자열 사용자에게 사용 권한을 부여할 수 있는 조건입니다.
conditionVersion 문자열 조건 구문의 버전입니다. conditionVersion 없이 condition을 지정하면 버전이 기본값인 2.0으로 설정됩니다.

다음 요청 및 본문을 사용합니다.

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}",
        "condition": "{condition}",
        "conditionVersion": "2.0",
        "description": "{description}"
    }
}

다음 예제에서는 조건을 사용하여 스토리지 Blob 데이터 읽기 권한자 역할을 할당하는 방법을 보여줍니다. 조건은 컨테이너 이름이 'blobs-example-container'와 같은지 여부를 확인합니다.

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}?api-version=2022-04-01
{
    "properties": {
        "roleDefinitionId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
        "principalId": "{principalId}",
        "condition": "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container'))",
        "conditionVersion": "2.0",
        "description": "Read access if container name equals blobs-example-container"
    }
}

다음은 출력 예제입니다.

{
    "properties": {
        "roleDefinitionId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
        "principalId": "{principalId}",
        "principalType": "User",
        "scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}",
        "condition": "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container'))",
        "conditionVersion": "2.0",
        "createdOn": "2022-07-20T06:20:44.0205560Z",
        "updatedOn": "2022-07-20T06:20:44.2955371Z",
        "createdBy": null,
        "updatedBy": "{updatedById}",
        "delegatedManagedIdentityResourceId": null,
        "description": "Read access if container name equals blobs-example-container"
    },
    "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
    "type": "Microsoft.Authorization/roleAssignments",
    "name": "{roleAssignmentId}"
}

조건 편집

기존 역할 할당 조건을 편집하려면 역할 할당 조건을 추가하는 데 사용한 것과 동일한 역할 할당 - REST API 만들기를 사용합니다. 다음은 conditiondescription이 업데이트되는 예제 JSON을 보여줍니다. condition, conditionVersiondescription 속성만 편집할 수 있습니다. 기존 역할 할당과 일치하도록 다른 속성을 지정해야 합니다.

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}?api-version=2022-04-01
{
    "properties": {
        "roleDefinitionId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
        "principalId": "{principalId}",
        "condition": "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container' OR @Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container2'))",
        "conditionVersion": "2.0",
        "description": "Read access if container name equals blobs-example-container or blobs-example-container2"
    }
}

조건 나열

역할 할당 조건을 나열하려면 역할 할당 Get 또는 List REST API를 사용합니다. 자세한 내용은 REST API를 사용하여 Azure 역할 할당 나열을 참조하세요.

조건 삭제

역할 할당 조건을 삭제하려면 역할 할당 조건을 편집하고 조건 및 조건 버전을 빈 문자열 또는 null로 설정합니다.

또는 역할 할당과 조건을 모두 삭제하려는 경우 역할 할당 - 삭제 API를 사용할 수 있습니다. 자세한 내용은 Azure 역할 할당 제거를 참조하세요.

다음 단계