Azure의 Resouce 권한 관리는 Role을 기반으로 이루어진다. 특정 Resource에 대한 접근은 해당 Identity에 Role이 부여가 되었는지 아닌지에 따라 결정된다는 뜻이다. 굳이 Azure뿐만이 아닌 다른 CSP(AWS, GCP)나 K8s 등에서도 보편적으로 사용하는 방식이다.
Azure의 RBAC을 이해하기 위해선 Role, Security Principal, Scope에 대한 이해가 먼저 필요하다.
Role
Action은 특정 Resource 및 해당 속성에 대해 수행할 수 있는 작업(Read, Write 등)을 의미한다. 예를 들어 Virtual Machine 인스턴스를 가동에 대한 Action은 'Microsoft.Compute/virtualMachines/start/action'로 정의되어 있다.
Role은 여러개의 Action을 취사선택한, '무엇을 할 수 있는가(What can be done?)'에 대해 정의된 일종의 Collection으로 생각할 수 있다. Azure는 각 Resource 유형마다 Owner, Contributor, Reader와 같은 사전 정의된 Role을 제공하고 있으며 이를 BuiltInRole이라고 한다.
사용자가 직접 정의하는 CustomRole도 있으나, Azure AD Premium(P1, P2)의 경우만 사용할 수 있는 제한사항이 있다. 특수한 Role을 직접 정의해야 하는 경우, 고려해볼 만한 선택지이다.
Security Principal
User, Group, Application과 같이 Identity를 구분할 수 있는 개체이며, Azure AD에 의해 관리된다. User는 말그대로 Azure 사용자이며, Group은 여러 사용자를 목적 또는 성질에 따라 하나로 묶어놓은 그룹이다. Application을 구분하는 Identity의 경우 Service Principal과 Managed Identity로 나눌 수 있는데, Service Principal은 Application이나 직접 hosting하는 서비스 그리고 Jenkins나 Terraform과 같은 자동화 툴에 대한 Identity를 의미한다. Managed Identity는 VM, App Service와 같이 Azure에서 제공하는 서비스에만 부여할 수 있는 특수한 Service Principal이다.
Role Assignment
어떤 Security Principal(Identity)에 어떤 Role을 할당하는지에 따라, 해당 Identity가 접근할 수 있는 리소스와 작업이 결정된다. 위 그림처럼 Jane이라는 User에게 Web Developer라는 Role을 할당하면, 해당 User(Jane)은 App Service를 배포하고 설정을 변경할 수 있는 권한을 갖게 된다.
Scope
Scope는 Role Assignment가 어디까지 적용되는지에 대한 범위를 뜻한다. Azure의 Resource는 위 그림과 같은 계층구조(Management Group > Subscription > Resource Group > Resource)를 갖는데, 상위 개체에 지정된 Role Assignment는 하위 개체에도 그대로 상속된다. 만약 어떤 Management Group에 Owner Role을 할당받은 User가 있다면 해당 Management Group에 속한 모든 개체에 대해 동일하게 Owner Role을 갖는다. 반대로 특정 Resource(ex: VM 인스턴스)에만 설정된 Role Assignment는 다른 Resource나 상위개체에 적용되지 않는다.
참고
'Cloud' 카테고리의 다른 글
Azure - Routes (0) | 2022.03.08 |
---|---|
Azure - Virtual Network Peering (0) | 2022.03.04 |
Container 101 - (1) Introduction (0) | 2022.01.10 |
Amazon RDS - Read Replica와 Multi AZ 비교 (0) | 2021.11.07 |
Amazon RDS - 개요 (0) | 2021.11.05 |