Azure API Management에서 역할 기반 액세스 제어를 사용하는 방법

적용 대상: 모든 API Management 계층

Azure API Management는 Azure RBAC(Azure 역할 기반 액세스 제어)를 사용하여 API Management 서비스 및 엔터티(예: API 및 정책)에 대한 세분화된 액세스 관리를 가능하게 합니다. 이 문서에서는 API Management에서 기본 제공 및 사용자 지정 역할에 대한 개요를 제공합니다. Azure Portal에서 액세스 관리에 대한 자세한 내용은 Azure Portal에서 액세스 관리 시작을 참조하세요.

참고 항목

Azure Az PowerShell 모듈을 사용하여 Azure와 상호 작용하는 것이 좋습니다. 시작하려면 Azure PowerShell 설치를 참조하세요. Az PowerShell 모듈로 마이그레이션하는 방법에 대한 자세한 내용은 Azure PowerShell을 AzureRM에서 Azure로 마이그레이션을 참조하세요.

기본 제공 서비스 역할

API Management는 현재 3가지 기본 제공 역할을 제공하며 곧 2가지 역할을 추가할 예정입니다. 이러한 역할은 구독, 리소스 그룹 및 개별 API Management 인스턴스를 포함하여 서로 다른 범위에서 할당될 수 있습니다. 예를 들어 'API Management 서비스 읽기 권한자' 역할을 리소스 그룹 수준의 사용자에게 할당한 경우 사용자는 리소스 그룹 내의 모든 API Management 인스턴스에 대한 읽기 권한을 가지게 됩니다.

다음 테이블은 기본 제공 역할을 간략하게 설명합니다. Azure Portal 또는 Azure PowerShell, Azure CLIREST API를 비롯한 다른 도구를 사용하여 이러한 역할을 할당할 수 있습니다. 기본 제공 역할을 할당하는 방법에 대한 자세한 내용은 Azure 역할을 할당하여 Azure 구독 리소스에 대한 액세스 관리를 참조하세요.

역할 읽기 액세스[1] 쓰기 액세스[2] 서비스 만들기, 삭제, 크기 조정, VPN 및 사용자 지정 도메인 구성 기존 게시자 포털에 대한 액세스 권한 설명
API Management 서비스 참가자 슈퍼 사용자입니다. API Management 서비스 및 엔터티(예: API 및 정책)에 대한 전체 CRUD 액세스 권한을 보유합니다. 기존 게시자 포털에 대한 액세스 권한을 보유합니다.
API Management 읽기 권한자 API Management 서비스 및 엔터티에 대한 읽기 전용 액세스 권한을 보유합니다.
API Management 서비스 운영자 엔터티가 아닌 API Management 서비스를 관리할 수 있습니다.

[1] API Management 서비스 및 엔터티(예: API 및 정책)에 대한 읽기 권한을 보유합니다.

[2] 다음 작업을 제외한 API Management 서비스 및 엔터티에 대한 쓰기 권한: 인스턴스 생성, 삭제 및 확장, VPN 구성 및 사용자 지정 도메인 설정.

기본 제공 작업 영역 역할

API Management는 API Management 인스턴스에서 작업 영역의 협업자를 위해 다음 기본 제공 역할을 제공합니다.

작업 영역 협업자에게는 작업 영역 범위 역할과 서비스 범위 역할을 모두 할당해야 합니다.

역할 범위 설명
API Management 작업 영역 Contributor 작업 영역 작업 영역 및 뷰를 관리할 수 있지만 해당 멤버를 수정할 수는 없습니다. 이 역할은 작업 영역 범위에서 할당되어야 합니다.
API Management 작업 영역 Reader 작업 영역 작업 영역의 엔터티에 대한 읽기 전용 액세스 권한이 있습니다. 이 역할은 작업 영역 범위에서 할당되어야 합니다.
API Management 작업 영역 API 개발자 작업 영역 작업 영역의 엔터티에 대한 읽기 액세스 권한과 API 편집을 위한 엔터티에 대한 읽기 및 쓰기 액세스 권한이 있습니다. 이 역할은 작업 영역 범위에서 할당되어야 합니다.
API Management 작업 영역 API 제품 관리자 작업 영역 작업 영역의 엔터티에 대한 읽기 액세스 권한과 API 게시를 위한 엔터티에 대한 읽기 및 쓰기 액세스 권한이 있습니다. 이 역할은 작업 영역 범위에서 할당되어야 합니다.
API Management 서비스 작업 영역 API 개발자 서비스 태그 및 제품에 대한 읽기 액세스 권한과 다음을 허용하는 쓰기 액세스 권한이 있습니다.

▪️ 제품에 API 할당
▪️ 제품 및 API에 태그 할당

이 역할은 서비스 범위에서 할당되어야 합니다.
API Management 서비스 작업 영역 API 제품 관리자 서비스 API Management 서비스 작업 영역 API 개발자와 동일한 액세스 권한을 가지며 사용자에 대한 읽기 액세스 권한과 사용자를 그룹에 할당할 수 있는 쓰기 액세스 권한이 있습니다. 이 역할은 서비스 범위에서 할당되어야 합니다.

사용자 지정 역할

기본 제공 역할이 사용자의 특정 요구 사항을 충족시키지 못하면 API Management 엔터티에 대한 보다 세분화된 액세스 관리를 제공하는 사용자 지정 역할을 작성할 수 있습니다. 예를 들어 API Management 서비스에 대해서는 읽기 전용 액세스 권한을 보유하지만 하나의 특정 API에 대해서는 쓰기 권한만 보유하는 사용자 지정 역할을 만들 수 있습니다. 사용자 지정 역할에 대한 자세한 내용은 Azure RBAC에서 사용자 지정 역할을 참조하세요.

참고 항목

Azure Portal에서 API Management 인스턴스를 보려면 사용자 지정 역할이 Microsoft.ApiManagement/service/read 작업을 포함해야 합니다.

사용자 지정 역할을 만들 때는 기본 제공 역할 중 하나로 시작하는 것이 쉽습니다. 속성을 편집하여 Actions, NotActions 또는 AssignableScopes를 추가한 다음 변경 사항을 새 역할로 저장합니다. 다음 예제에서는 "API Management 서비스 읽기 권한자" 역할로 시작하고 "계산기 API 편집기"라는 사용자 지정 역할을 만듭니다. 특정 API의 범위에서 사용자 지정 역할을 할당할 수 있습니다. 따라서 이 역할만 해당 API에 대한 액세스 권한을 보유합니다.

$role = Get-AzRoleDefinition "API Management Service Reader Role"
$role.Id = $null
$role.Name = 'Calculator API Contributor'
$role.Description = 'Has read access to Contoso APIM instance and write access to the Calculator API.'
$role.Actions.Add('Microsoft.ApiManagement/service/apis/write')
$role.Actions.Add('Microsoft.ApiManagement/service/apis/*/write')
$role.AssignableScopes.Clear()
$role.AssignableScopes.Add('/subscriptions/<Azure subscription ID>/resourceGroups/<resource group name>/providers/Microsoft.ApiManagement/service/<APIM service instance name>/apis/<API name>')
New-AzRoleDefinition -Role $role
New-AzRoleAssignment -ObjectId <object ID of the user account> -RoleDefinitionName 'Calculator API Contributor' -Scope '/subscriptions/<subscription ID>/resourceGroups/<resource group name>/providers/Microsoft.ApiManagement/service/<APIM service instance name>/apis/<API name>'

Azure Resource Manager 리소스 공급자 작업 문서에는 API Management 수준에서 부여할 수 있는 사용 권한 목록이 들어 있습니다.

다음 단계

Azure의 역할 기반 액세스 제어에 대한 자세한 내용은 다음 문서를 참조하세요.