Azure Landing Zone은 구독이 여러 개로 늘어나도 보안과 거버넌스를 한곳에서 관리하도록 미리 짜 두는 기본 구조입니다. 관리 그룹(Management Group)으로 구독을 묶고, 그 위에 Azure Policy와 RBAC를 할당해 아래 구독과 리소스가 자동으로 규칙을 물려받게 하는 것이 핵심입니다.
1. Landing Zone이란
Azure를 처음 쓸 때는 구독 하나에 리소스 그룹 몇 개로 시작합니다. 서비스와 팀이 늘어 구독이 수십 개가 되면, 구독마다 리전 제한, 태그 규칙, 권한을 따로 설정하게 되고 설정이 조금씩 어긋나기 시작합니다.
Microsoft CAF(Cloud Adoption Framework)는 Landing Zone을 여러 구독으로 된 Azure 환경을 관리하고 보호하며 확장하기 위한 검증된 아키텍처로 설명합니다. 공용 기반인 플랫폼 Landing Zone(연결, 관리, ID)과, 워크로드 팀이 그 규칙 안에서 리소스를 배포하는 애플리케이션 Landing Zone으로 나뉩니다.
| 구분 | 설계 영역 |
| 환경 | Azure 청구 및 Active Directory 테넌트 ID 및 액세스 관리 리소스 조직 네트워크 토폴로지 및 연결 |
| 규정 준수 | 보안 관리 거버넌스 플랫폼 자동화 및 DevOps |
설계 영역은 8개지만 처음 구조를 잡을 때 가장 먼저 정해야 하는 것은 리소스 조직, 즉 관리 그룹 계층입니다. Policy와 RBAC를 어디에 할당할지가 이 계층에 따라 정해지기 때문입니다.
2. 관리 그룹 계층
Azure 리소스는 테넌트 루트 그룹 → 관리 그룹 → 구독 → 리소스 그룹 → 리소스 순서로 쌓입니다. 관리 그룹은 디렉터리당 최대 10,000개까지 만들 수 있고, 루트와 구독 단계를 빼고 6단계까지 쌓을 수 있습니다.

CAF가 제안하는 Azure Landing Zone 관리 그룹 계층
테넌트 루트 그룹 바로 아래에 조직 이름을 붙인 중간 루트(예: contoso)를 두고, 모든 공통 규칙은 이 중간 루트에 할당합니다. 테넌트 루트 그룹에 직접 할당하지 않는 이유는 옮기거나 지울 수 없는 그룹이라 실수를 되돌리기 어렵기 때문입니다.
| 관리 그룹 | 들어가는 구독 |
| Platform | Security: Microsoft Sentinel 같은 보안 도구 Management: Log Analytics, 모니터링 Connectivity: Hub VNet, Azure Firewall, 게이트웨이 Identity: 도메인 컨트롤러 등 ID 서비스 |
| Landing zones | Corp: 온프레미스와 연결되는 내부 앱 Online: 인터넷에 공개하는 앱 Local: Azure Local 기반 하이브리드 워크로드 |
| Sandboxes | 개인 실험, PoC |
| Decommissioned | 폐기할 구독을 옮겨 두는 곳 |
CAF는 계층을 3~4단계 정도로 평평하게 유지하라고 권합니다. 부서나 조직도대로 깊게 나누면 조직 개편 때마다 구조를 바꿔야 하므로, 적용할 규칙이 다른 단위로만 나누는 편이 좋습니다.
3. Policy와 RBAC 상속

관리 그룹과 구독에 할당한 Policy, RBAC가 아래로 상속되는 흐름
관리 그룹에 할당한 Azure Policy와 RBAC 역할은 아래의 모든 관리 그룹, 구독, 리소스 그룹, 리소스가 물려받습니다. 그림처럼 mg-corp에 "허용 위치(Allowed locations)" 정책과 운영팀 Reader 권한을 한 번 할당하면, 그 아래 새 구독을 만들어도 따로 설정할 필요가 없습니다. RBAC 권한은 합쳐지기 때문에 구독에서 앱팀에 Contributor를 추가하면 앱팀은 그 구독부터 변경할 수 있습니다.
| 비교 항목 | Azure Policy | Azure RBAC |
| 답하는 질문 | 무엇을 만들 수 있는가 | 누가 무엇을 할 수 있는가 |
| 구성 | 정의(조건 + 효과) 이니셔티브(정의 묶음) |
보안 주체 + 역할 정의 + 범위 |
| 대표 예 | 허용 위치, 필수 태그 | Owner, Contributor, Reader |
| 위반 시 | Deny는 생성 거부 Audit은 기록만 |
권한이 없으면 작업 거부 |
| Policy 효과 | 동작 |
| Deny | 조건에 맞지 않는 리소스 생성, 변경을 거부합니다. |
| Audit | 허용하되 규정 비준수로 기록합니다. |
| Modify, Append | 태그 같은 속성을 자동으로 추가하거나 바꿉니다. |
| DeployIfNotExists | 필요한 설정이 없으면 자동으로 배포합니다. 예: 진단 설정, Private DNS 영역 그룹 |
4. Azure CLI로 만들어 보기
4.1 관리 그룹과 구독 이동
az account management-group create --name mg-contoso --display-name "contoso"
az account management-group create --name mg-landingzones \
--display-name "Landing zones" --parent mg-contoso
az account management-group create --name mg-corp \
--display-name "Corp" --parent mg-landingzones
# 구독을 Corp 관리 그룹으로 이동
az account management-group subscription add --name mg-corp \
--subscription "sub-app-prod"
4.2 Policy와 RBAC 할당
MG_SCOPE=/providers/Microsoft.Management/managementGroups/mg-corp
# 기본 제공 정책 "Allowed locations": 한국 중부, 한국 남부만 허용
az policy assignment create --name allowed-locations --scope $MG_SCOPE \
--policy e56962a6-4747-49cd-b67b-bf8b01975c4c \
--params '{"listOfAllowedLocations":{"value":["koreacentral","koreasouth"]}}'
# 운영팀 그룹에 Reader 역할
az role assignment create --assignee "운영팀 그룹 개체 ID" \
--role Reader --scope $MG_SCOPE
할당 후 mg-corp 아래 구독에서 다른 리전에 리소스를 만들면 정책 위반으로 배포가 거부됩니다. 실제 환경 전체를 처음부터 만든다면 Microsoft가 제공하는 Azure Landing Zones IaC 가속기(Bicep, Terraform, Azure Verified Modules 기반)로 시작하는 것을 권합니다.
5. 운영 시 주의점
| 항목 | 확인할 것 |
| 테넌트 루트 그룹 | 규칙은 중간 루트에 할당하고, 루트에는 직접 할당하지 않습니다. |
| Deny 정책 도입 | 기존 리소스가 많다면 Audit으로 먼저 비준수 현황을 본 뒤 Deny로 바꿉니다. |
| Owner 권한 | Owner와 User Access Administrator는 권한을 줄 수 있는 역할입니다. 상시 할당보다 PIM(Privileged Identity Management)으로 필요할 때만 활성화합니다. |
| 계층 깊이 | 조직도대로 깊게 나누지 않고 3~4단계로 유지합니다. |
| 폐기 구독 | Decommissioned로 옮겨 권한과 정책을 정리한 뒤 해지합니다. |
6. 정리
- Landing Zone은 여러 구독을 같은 규칙으로 관리하기 위한 기본 구조이고, 그 뼈대는 관리 그룹 계층입니다.
- Policy는 "무엇을 만들 수 있는가", RBAC는 "누가 할 수 있는가"를 정하며, 관리 그룹에 할당하면 아래로 상속됩니다.
- 중간 루트 아래 Platform, Landing zones, Sandboxes, Decommissioned로 평평하게 나누고, 전체 구축은 공식 가속기로 시작합니다.
참고
'Cloud > Azure' 카테고리의 다른 글
| [Azure] Azure Firewall, NSG, WAF 역할 정리 (0) | 2026.09.24 |
|---|---|
| [Azure] VPN Gateway와 ExpressRoute 비교 (0) | 2026.09.24 |
| [Azure] Private Endpoint와 Service Endpoint 비교 (0) | 2026.09.24 |
| [Azure] Hub-Spoke 네트워크 구성 (0) | 2026.09.24 |
| [Azure] Azure 기본 구조 정리 (0) | 2026.09.24 |