정책 기반 가드 레일 채택

정책을 사용하기 전에 Azure 랜딩 존 참조 구현 내에서 사용되는 위치와 그 이유를 이해해야 합니다. 이 문서는 DINE(DeployIfNotExists) 또는 수정 정책이 Azure 환경 내에서 변경되지 않도록 방지할지 여부를 이해하는 데 도움이 됩니다.

DINE 및 수정 정책을 사용하는 이유는 무엇인가요?

DINE 및 수정 정책은 Azure 랜딩 존 참조 구현의 일부입니다. 사용자와 조직이 구독이라고도 하는 랜딩 존을 보장하고 해당 내의 리소스가 규정을 준수하는지 확인하는 데 도움이 됩니다. 또한 이러한 정책은 Azure 환경이 확장됨에 따라 플랫폼 및 랜딩 존 팀의 운영 부담을 제거합니다.

예를 들어 새 랜딩 존 구독이 프로비전되어 "corp" 관리 그룹에 배치되는 시나리오를 고려해 보세요. 그런 다음, DINE 및 수정 정책은 랜딩 존 구독에 대해 다음 작업을 수행합니다.

  • 클라우드용 Microsoft Defender 사용. 관리 구독에서 중앙 Log Analytics 작업 영역으로 클라우드용 Defender 내보내기를 구성합니다.
  • 정책 할당에 구성된 정책 매개 변수에 따라 지원되는 다양한 제품에 대해 클라우드용 Defender를 사용하도록 설정합니다.
  • 관리 구독의 중앙 Log Analytics 작업 영역으로 전송되도록 Azure 활동 로그를 구성합니다.
  • 관리 구독의 중앙 Log Analytics 작업 영역으로 보낼 모든 리소스에 대한 진단 설정을 구성합니다.
  • Azure Arc에 연결된 서버를 포함하여 가상 머신 및 Azure Virtual Machine Scale Sets에 필요한 Azure Monitor 에이전트를 배포합니다. 관리 구독의 중앙 Log Analytics 작업 영역에 연결합니다.

참고 항목

언제든지 또는 Azure 랜딩 존 참조 구현을 배포하는 동안 이전 옵션을 사용하지 않도록 설정할 수 있습니다.

앞의 목록에는 Azure 랜딩 존 가속기의 일부로 할당된 모든 정책의 하위 집합이 표시됩니다. Azure 랜딩 존 참조 구현에서 할당할 수 있는 정책의 전체 목록은 Azure 랜딩 존 참조 구현에 포함된 정책을 참조 하세요.

Azure 랜딩 존 bicep 리포지토리는 모듈식입니다. 위의 기본 정책은 ALZ 기본 정책 할당 모듈을 사용하여 배포할 수 있습니다.

할당된 모든 정책은 여러분과 랜딩 존 소유자가 규정을 준수하는 데 도움이 됩니다. 실제 워크로드 리소스는 DINE 또는 수정 정책을 통해 배포되지 않습니다. 이 또한 권장하지 않습니다. 자세한 내용은 Azure Policy를 사용하여 워크로드를 배포해야 하나요?를 참조하세요. 보조 또는 지원 리소스 또는 설정만 DINE 정책에 따라 배포되거나 구성됩니다.

Azure 랜딩 존 참조 구현은 DINE Azure Policy를 사용하여 Azure 환경 내에서 정책 기반 거버넌스를 달성하는 데 도움이 됩니다. 하지만 DINE 또는 수정 정책을 사용할 수 없거나 다음과 같은 이유로 이러한 유형의 Azure Policy 효과를 사용하도록 설정할 준비가 되지 않은 것일 수 있습니다.

  • 규정 준수 정책, 표준 또는 법률 제한.
  • Azure 환경 내의 모든 작업에 대해 사용자 승인이 필요한 엄격한 변경 제어 프로세스입니다.
  • DINE 정책을 관리하고 사용하는 방법에 대한 전문 지식, 경험 및 이해가 부족합니다.
  • 보조 리소스, 지원 리소스 및 설정을 비롯한 모든 워크로드 리소스 구성이 워크로드 애플리케이션 팀에서 IaC(Infrastructure as code)로 정의되는 조직의 요구 사항입니다.

앞의 예제 또는 유사한 시나리오에 적합한 경우 이 문서는 Azure 랜딩 존 개념 아키텍처를 채택하고 디자인 원칙을 준수하는 방법을 이해하는 데 도움이 됩니다. 처음에는 특정 정책을 사용하지 않지만 나중에 점진적으로 사용하도록 선택할 수 있습니다. 목표는 정책 기반 거버넌스를 달성하도록 돕는 것입니다.

Important

이 문서에서 적용 모드 용어에 사용되는 두 가지 가능한 값이 표시됩니다.

  • Disabled 또는 DoNotEnforce
  • Enabled 또는 Default

Azure Portal은 적용 모드에 대해 Disabled 및 Enabled 모드를 사용합니다. ARM(Azure Resource Manager) 템플릿 및 기타 API 인터페이스는 동일한 옵션에 DoNotEnforce 및 Default를 사용합니다.

자세한 내용은 적용 모드를 참조하세요.

조직에서 DINE 또는 수정 정책을 사용할 수 없다고 확신하는 경우 이 문서에서는 정책으로 인해 Azure 환경이 자동으로 변경되지 않도록 방지(disable이라고도 함)하는 방법을 설명합니다.

참고 항목

이 작업은 영구적이지 않습니다. 나중에 DINE 또는 수정 정책을 사용하기로 결정한 경우 플랫폼 팀의 구성원이 언제든지 정책을 다시 사용하도록 설정할 수 있습니다.

자세한 내용은 2단계 및 3단계를 참조하세요.

리소스 선택기에 대한 지원은 SDP(금고 배포 관행)가 준수되도록 정책 기반 거버넌스에도 적용됩니다. 리소스 선택기는 리소스 위치, 리소스 종류 또는 리소스에 위치가 있는지 여부와 같은 요인에 따라 정책 할당을 점진적으로 롤아웃하는 기능을 제공합니다. 자세한 내용은 이 문서에서 확인할 수 있습니다.

접근 방식 개요

다음 다이어그램에는 권장되는 단계적 접근 방식이 요약되어 있습니다.

Graphic that shows a DINE phases overview.

  1. 정책 할당에 적용 모드DoNotEnforce 설정합니다.
    • 이 기능을 사용하면 기본 정책 정의를 수정하지 않고도 감사 전용 정책이 되도록 할당 동작을 수정할 수 있습니다.
    • 또한 이 방법을 통해 원하는 경우 수정 작업을 사용하여 비준수 리소스에 대해 수동 수정 작업을 수행할 수 있도록 허용할 수 있습니다.
  2. 정책 할당에 적용 모드Default 설정하여 축소된 범위에서 다시 활성화된 DINE 정책 할당의 자동 수정을 설정합니다.
    • 전체 환경(예: 샌드박스 관리 그룹)을 사용하도록 선택할 수 있습니다.
    • 또는 중요하지 않은 워크로드 구독을 사용할 수 있습니다.
  3. 전체 Azure 환경에서 나머지 DINE 정책에 대해 정책 할당에 적용 모드Default로 설정합니다.

규정 준수 제한으로 인해 일부 고객은 1단계를 지나서 이동할 수 없습니다. 이는 문제가 되지 않으며 필요한 경우 이 상태가 유지되도록 지원됩니다. 다른 고객은 Azure 환경에 대한 정책 기반 거버넌스를 지원하기 위해 DINE 및 수정 정책을 완전히 채택하기 위해 2단계와 3단계로 진행할 수 있습니다.

참고 항목

이 문서에 설명된 시나리오 및 접근 방식은 대부분의 고객을 대상으로 하거나 권장되지 않습니다. 이러한 정책이 사용자 환경에 적합한지 여부를 결정하기 전에 DINE 및 수정 정책을 사용하는 이유는 무엇인가요? 섹션을 검토하세요.

1단계: DINE 및 수정 정책 자동화 작업 사용

정책을 할당하면 기본적으로 정책 정의에 정의된 효과가 적용됩니다. 정책 정의를 있는 그대로 두는 것이 좋습니다. 예를 들어 정책 할당 효과를 DeployIfNotExists로 둡니다.

정책 정의 또는 해당 효과를 변경하는 대신, 정책 할당에 기능을 사용하여 최소한의 노력으로 이 동작에 영향을 줄 수 있습니다.

Azure Portal을 사용하여 적용 모드를 Disabled로 설정

이 스크린샷은 Azure Portal을 사용하여 정책 할당에서 적용 모드를 Disabled로 설정하는 방법을 보여 줍니다. Disabled는 DoNotEnforce이기도 합니다.

Set the enforcement mode to Disabled in the Azure portal.

ARM 템플릿을 사용하여 적용 모드를 DoNotEnforce로 설정

이 코드 예제에서는 ARM 템플릿을 사용하여 정책 할당에 대해 enforcementModeDoNotEnforce로 설정하는 방법을 보여줍니다. DoNotEnforceDisabled이기도 합니다.

{
  "type": "Microsoft.Authorization/policyAssignments",
  "apiVersion": "2019-09-01",
  "name": "PolicyAssignmentName",
  "location": "[deployment().location]",
  "properties": {
    "description": "PolicyAssignmentDescription",
    "policyDefinitionId": "[parameters('policyDefinitionId')]",
    "enforcementMode": "DoNotEnforce"
    … // other properties removed for display purposes
  }
}

적용 모드를 사용하면 정책을 시작하거나 Azure 활동 로그에서 항목을 트리거하지 않고 기존 리소스에 대한 정책의 영향을 확인할 수 있습니다. 이 시나리오는 일반적으로 "What If"라고 하며 안전한 배포 사례에 맞춥니다.

적용 모드DoNotEnforce로 설정된 경우에도 수정 작업을 수동으로 트리거할 수 있습니다. 특정 비준수 리소스를 수정할 수 있습니다. 적용 모드가 Default로 설정된 경우 DINE 또는 수정 정책으로 수행한 작업을 확인할 수도 있습니다.

Important

적용 모드가 DoNotEnforce로 설정되면 Azure 활동 로그의 항목이 생성되지 않습니다. 비준수 리소스를 만들 때 알림을 받으려면 이 요소를 고려합니다.

1단계 상태를 영구적으로 유지

접근 방식 개요 섹션에서 설명한 것처럼 일부 고객은 요구 사항 때문에 장기간 또는 영구적으로 1단계에 남아 있어야 할 수 있습니다. 이 상태는 유효하며 고객은 일정 기간 동안 상태를 유지할 수 있습니다.

어쩌면 영구적으로 또는 몇 년이라는 오랜 기간 이 상태를 유지해야 할 수 있습니다. 그렇다면 AuditIfNotExists(AINE) 정책 효과 및 관련 정의를 채택하고 적용 모드를 다시 Default로 설정하는 것이 더 나을 수 있습니다.

참고 항목

AINE 정책을 사용하도록 변경하고 적용 모드를 Default로 설정하면 DINE을 사용하지 않도록 설정하는 것과 동일한 목표를 달성할 수 있습니다.

DINE에서 AINE으로 변경하고 적용 모드를 1단계의 장기 또는 영구 접근 방식으로서 Default로 다시 설정하면 정책 준수 상태에 대한 Azure 활동 로그 항목을 다시 얻을 수 있습니다. 전체 플랫폼 관리 작업에서 이러한 로그 항목에 대해 자동화 워크플로를 빌드할 수 있습니다.

수동 수정 작업을 수행할 수 있는 기능을 잃게 됩니다. DINE 정책과 달리 AINE 정책은 자동 배포나 수동 배포를 수행하지 않습니다.

AuditIfNotExists 정책 할당 효과를 수락하고 허용하도록 정책 정의를 업데이트해야 합니다.

다음 표에는 다양한 유형의 정책 효과 및 적용 모드에 대한 옵션과 의미가 요약되어 있습니다.

정책 효과 적용 모드 활동 로그 항목 재구성 작업
DINE Enabled 또는 Default 생성 또는 리소스 업데이트 후 트리거된 플랫폼 대규모 수정 정책 할당 전에 종속 리소스가 수정되거나 기존에 있는 경우 필요한 수정 작업을 수동으로 만듭니다.
DINE Disabled 또는 DoNotEnforce 아니요 수정 작업을 수동으로 만드는 데 필요합니다.
수정 Enabled 또는 Default 만들거나 업데이트하는 동안 자동 수정이 진행됩니다.
수정 Disabled 또는 DoNotEnforce 아니요 수정 작업을 수동으로 만드는 데 필요합니다.
거부 Enabled 또는 Default 만들기 또는 업데이트가 거부되었습니다.
거부 Disabled 또는 DoNotEnforce 아니요 만들기 또는 업데이트가 허용됩니다. 수동 수정이 필요합니다.
Audit/AINE Enabled 또는 Default 수동 수정이 필요합니다.
Audit/AINE Disabled 또는 DoNotEnforce 아니요 수동 수정이 필요합니다.

참고 항목

Azure Policy 상태 변경 이벤트에 대응의 지침을 검토하고 Azure Policy와 Azure Event Grid 통합을 사용하여 정책 상태 이벤트를 기반으로 자체 자동화를 빌드하려는 경우 적절한 방법을 제공하는지 이해합니다.

2단계: 특정 정책 또는 축소된 범위에서 DINE 및 수정 정책 사용

이 단계에서는 정책 할당에 적용 모드를 Default로 설정하는 방법을 알아봅니다.

1단계를 완료한 후에는 특정 정책 또는 축소된 범위에서 DINE 및 수정 정책의 전체 자동화 기능을 테스트하고 사용해 보고자 합니다. 샌드박스 관리 그룹 또는 비프로덕션 워크로드 구독을 사용하려고 합니다.

이 절차를 수행하려면 먼저 DINE 및 수정 정책의 전체 자동화 기능을 테스트하고 시도하는 데 사용할 정책 또는 축소된 범위를 식별해야 합니다.

참고 항목

엔터프라이즈 규모의 플랫폼에 대한 테스트 접근 방식을 검토하고 구현하는 것이 좋습니다. 이러한 방식으로 동일한 테넌트 내의 분리된 관리 그룹 계층 구조에서 정책 및 기타 플랫폼 변경 내용을 테스트할 수 있습니다.

이 방법을 "카나리아" 배포라고도 합니다.

범위 및 정책에 대해 제시된 몇 가지 예는 다음 표에 나와 있습니다.

원하는 작업... ...범위 중에서 선택 사용할 정책 예제
- DINE/수정 정책 자동화 수정 기능을 테스트합니다.
- 테스트를 포함한 전체 배포 프로세스 및 CI/CD 파이프라인이 어떻게 영향을 받을 수 있는지 확인합니다.
- 워크로드에 영향을 미칠 수 있는 방법을 확인합니다.
- 샌드박스 구독
- 샌드박스 관리 그룹
- 비프로덕션 워크로드 랜딩 존 구독
- 엔터프라이즈 규모의 "카나리아" 환경
- 지정된 Log Analytics 작업 영역으로 스트리밍하도록 Azure 활동 로그를 구성합니다.
- 클라우드용 Defender 구성을 배포합니다.
- VM용 Azure Monitor 또는 Virtual Machine Scale Sets를 사용하도록 설정합니다.
- Azure 서비스에 진단 설정을 배포합니다.
- 잠재적으로 이니셔티브 내의 특정 서비스에 대해서만 사용하도록 설정합니다.

제한된 범위 또는 리소스 집합에서 수동 수정 작업을 사용하여 정책이 환경에 미치는 영향을 테스트할 수도 있습니다. 수정 작업을 만드는 방법에 대한 자세한 내용은 Azure Policy 설명서 수정 작업 만들기를 참조하세요.

정책을 식별하고 할당할 범위를 축소한 후 다음 단계는 정책을 할당하고 적용 모드를 Default로 설정하는 것입니다. 선택한 축소된 범위에서 정책 효과(예: DeployIfNotExists 또는 Modify)를 그대로 둡니다.

Azure Portal을 사용하여 적용 모드를 Enabled로 설정

이 스크린샷은 Azure Portal을 사용하여 정책 할당에서 적용 모드를 Enabled로 설정하는 방법을 보여 줍니다. Enabled는 Default이기도 합니다.

Screenshot that shows setting the enforcement mode to Enabled in the Azure portal.

ARM 템플릿을 사용하여 적용 모드를 Default로 설정

이 코드 예제에서는 ARM 템플릿을 사용하여 정책 할당에 대해 enforcementModeDefault로 설정하는 방법을 보여줍니다. DefaultEnabled이기도 합니다.

{
  "type": "Microsoft.Authorization/policyAssignments",
  "apiVersion": "2019-09-01",
  "name": "PolicyAssignmentName",
  "location": "[deployment().location]",
  "properties": {
    "description": "PolicyAssignmentDescription",
    "policyDefinitionId": "[parameters('policyDefinitionId')]",
    "enforcementMode": "Default"
    … // other properties removed for display purposes
  }
}

테스팅

이 단계의 마지막 단계는 필요한 테스트를 수행하는 것입니다. DINE 또는 수정 정책이 워크로드, 코드, 도구 및 프로세스에 영향을 주고 변경했는지 여부와 방법을 확인하려고 합니다.

여러 테스트를 수행하여 워크로드의 전체 수명 주기를 포착합니다. DINE 또는 수정 정책이 변경되었는지 여부와 방법을 완전히 이해하려고 합니다.

테스트의 몇 가지 예는 다음과 같습니다.

  • 워크로드의 초기 배포.
  • 워크로드에 코드/애플리케이션 배포.
  • 2일째 작업 및 워크로드 관리.
  • 워크로드의 서비스 해제.

3단계: 모든 곳에서 DINE 및 수정 정책 사용

이 단계에서는 정책 할당에 적용 모드를 Default로 설정하는 방법을 알아봅니다.

2단계가 끝날 때 테스트가 성공적으로 통과되었다고 가정합니다. 또는 이제 DINE 또는 수정 정책이 워크로드와 상호 작용하는 방식을 이해하게 되어 만족할 수도 있습니다. 이제 나머지 Azure 환경에서 DINE 및 수정 정책 사용을 확장할 수 있습니다.

계속하려면 2단계와 유사한 단계를 수행합니다. 이번에는 전체 Azure 환경에서 모든 DINE 및 수정 정책 할당에 적용 모드를 Default로 설정합니다.

이 단계에서 수행하는 단계에 대한 개략적인 개요는 다음과 같습니다.

  • 2단계 중 테스트에 특별히 사용되는 할당을 제거합니다.
  • Azure 환경에서 각 DINE 및 수정 정책 할당을 살펴보고 적용 모드를 Default로 설정합니다. 이 프로세스는 2단계의 예제에 나와 있습니다.
  • 수정 작업 만들기의 지침에 따라 기존 비준수 리소스에 대한 수정 작업을 만듭니다. 새 리소스는 정책 규칙 및 존재 조건과 일치하면 자동으로 수정됩니다.

3단계에서는 Azure 환경의 모든 DINE 및 수정 정책에 적용 모드를 Default로 설정하는 것이 좋습니다. 이는 선택 사항입니다. 필요와 요구 사항에 맞게 정책별로 이 옵션을 선택할 수 있습니다.

고급 정책 관리

대규모 Azure Policy의 고급 관리를 위해 정책을 관리하기 위해 EPAC(Enterprise Policy as Code)를 구현하는 것이 좋습니다. EPAC는 IaC를 사용하는 상태 저장 관리 환경을 제공합니다. 일반적으로 복잡한 요구 사항이 있는 대규모 정책 관리 시나리오에 적합합니다.