새 Azure Policy 정의의 영향 평가

Azure Policy는 비즈니스 표준과 규정 준수 요구 사항을 충족하기 위해 Azure 리소스를 관리하기 위한 강력한 도구입니다. 사용자, 프로세스 또는 파이프라인이 리소스를 만들거나 업데이트하면 Azure Policy가 요청을 검토합니다. 정책 정의 효과가 Modify, Append 또는 DeployIfNotExists이면 정책이 요청을 변경하거나 요청에 추가합니다. 정책 정의 효과가 감사 또는 AuditIfNotExists이면 Policy에 의해 새로운 리소스 및 업데이트된 리소스에 활동 로그 항목이 생성됩니다. 정책 정의 효과가 Deny 또는 DenyAction일 때 Policy는 요청의 생성 또는 변경을 중지합니다.

정책이 올바르게 정의된 것이 확실하다면 정확히 원하는 결과가 나타납니다. 그러나 새 정책이 작업을 변경하거나 차단하도록 허용하기 전에 새 정책이 올바르게 작동하는지 검증해야 합니다. 유효성 검사는 의도된 리소스만 규정을 준수하지 않는 것으로 확인되고, 규정을 준수하는 리소스가 결과에 잘못 포함되지 않도록 해야 합니다(이를 가양성이라고 함).

새 정책 정의의 유효성을 검사할 때 권장되는 방법은 다음과 같습니다.

  • 정책을 꼼꼼하게 정의
  • 정책의 효과 테스트
  • 신규 또는 업데이트된 리소스 요청 감사
  • 리소스에 정책 배포
  • 연속 모니터링

정책을 꼼꼼하게 정의

비즈니스 정책이 정책 정의로 구현되는 방법, Azure 리소스와 다른 Azure 서비스의 관계를 이해하는 것이 중요합니다. 이 단계에서는 요구 사항을 파악하고 리소스 속성을 결정합니다. 하지만 비즈니스 정책에 대한 좁은 정의에서 벗어나 넓은 시야를 가지는 것도 중요합니다. 정책에 "모든 Virtual Machines가 준수해야 할 사항" 등이 명시되어 있나요? VM을 사용하는 다른 Azure 서비스(예: HDInsight 또는 AKS)는 무엇인가요? 정책을 정의할 때는 이 정책이 다른 서비스에서 사용하는 리소스에 미치는 영향을 고려해야 합니다.

이러한 이유로 정책 정의는 가능한 한 준수 여부를 평가하는 데 필요한 리소스와 속성에 중점을 두고, 꼼꼼하게 정의되어야 합니다.

정책의 효과 테스트

새 정책 정의를 사용하여 신규 또는 업데이트된 리소스를 관리하기 전에 테스트 리소스 그룹과 같은 기존 리소스의 제한된 하위 집합을 평가하는 방법을 확인하는 것이 가장 좋습니다. Azure Policy VS Code 확장을 사용하면 주문형 평가 스캔을 사용하여 기존 Azure 리소스에 대한 정의를 분리하여 테스트할 수 있습니다. 정책 할당에 강제 모드사용 안 함(DoNotEnforce)을 사용하여 개발 환경에서 정의를 할당하여 효과가 트리거되거나 활동 로그 항목이 생성되지 않도록 할 수도 있습니다.

이 단계를 통해 작업 흐름에 영향을 주지 않고 기존 리소스의 새 정책 준수 결과를 평가할 수 있습니다. 준수 리소스가 미준수로 표시되어 있지 않은지(가양성), 미준수로 예상되는 모든 리소스가 올바르게 표시되는지 확인합니다. 예상되는 리소스의 초기 하위 집합에 대한 유효성 검사를 완료한 후에는 더 많은 기존 리소스와 더 많은 범위로 평가 대상을 점차적으로 확대합니다.

이러한 방식으로 기존 리소스를 평가하면 새로운 정책을 완전히 구현하기 전에 미준수 리소스를 수정할 수도 있습니다. 이 정리 작업은 수동으로 수행하거나 수정 작업을 통해 수행할 수 있습니다(정책 정의 효과가 DeployIfNotExists 또는 수정인 경우).

DeployIfNotExist를 사용하는 정책 정의는 ARM 템플릿을 배포할 때 발생하는 변경 내용의 유효성을 검사하고 테스트하려면 Azure Resource Manager 템플릿 what if를 활용해야 합니다.

신규 또는 업데이트된 리소스 감사

새 정책 정의가 기존 리소스에서 올바르게 보고되는지 확인한 후에는 리소스가 생성되거나 업데이트될 때 정책의 영향을 확인할 수 있습니다. 정책 정의에서 효과 매개 변수화를 지원하는 경우 감사 또는 AuditIfNotExist를 사용합니다. 이 구성을 사용하면 리소스의 생성 및 업데이트를 모니터링하여 새 정책 정의가 기존 작업 또는 요청에 영향을 주지 않고 비규격 리소스에 대한 Azure 활동 로그 항목을 트리거하는지 확인할 수 있습니다.

정책 정의와 일치하는 리소스를 새로 만들고 업데이트하여 감사 또는 AuditIfNotExist 효과가 예상대로 트리거되는지 확인하는 것이 좋습니다. 감사 또는 AuditIfNotExist 효과를 트리거하는 새 정책 정의의 영향을 받지 않아야 하는 리소스 요청이 있는지 면밀히 살펴보세요. 이러한 영향을 받는 리소스는 가양성의 또 다른 예이며 전체 구현 전에 정책 정의에서 수정해야 합니다.

이 테스트 단계에서 정책 정의가 변경되는 경우 기존 리소스 감사를 통해 유효성 검사 프로세스를 시작하는 것이 좋습니다. 신규 또는 업데이트된 리소스의 가양성에 대한 정책 정의 변경은 기존 리소스에도 영향을 줄 수 있습니다.

리소스에 정책 배포

기존 리소스와 신규 또는 업데이트된 리소스 요청을 모두 사용하여 새 정책 정의의 유효성 검사를 완료한 후에는 정책을 구현하는 프로세스를 시작합니다. 리소스 그룹과 같이 먼저 모든 리소스의 하위 집합에 대한 새 정책 정의의 정책 할당을 만드는 것이 좋습니다. 초기 배포를 유효성을 검증하는 정책 assignment.After 내의 resourceSelectors 속성을 사용하여 리소스 종류 또는 위치별로 추가 필터링하고 정책 범위를 리소스 그룹으로 확장할 수 있습니다. 초기 배포의 유효성을 검사한 후 더 많은 위치 또는 리소스 유형을 대상으로 resourceSelector 필터를 조정하거나 할당을 제거하고 구독 및 관리 그룹과 같은 광범위한 범위에서 새 필터로 교체하여 정책의 영향을 확장합니다. 새 정책 정의에서 적용할 수 있는 전체 리소스에 할당될 때까지 점진적인 롤아웃을 계속 진행합니다.

롤아웃 중에 새 정책 정의에서 제외해야 하는 리소스가 있는 경우 다음 방법 중 하나로 처리합니다.

  • 의도하지 않은 영향을 줄이기 위해 정책 정의를 더 명시적으로 업데이트
  • 정책 할당 범위 변경(제거하고 새 할당 만들기)
  • 정책 할당 제외 목록에 리소스 그룹 추가

범위에 대한 모든 변경 내용(수준 또는 제외 대상)은 완전히 유효성을 검사하고 보안 및 규정 준수 조직에게 전달하여 범위에 차이가 생기지 않도록 해야 합니다.

정책 및 규정 준수 모니터링

정책 정의를 구현하고 할당하는 것은 최종 단계가 아닙니다. 새 정책 정의에 대한 준수 수준의 리소스를 지속적으로 모니터링하고 미준수 디바이스가 식별된 경우 적절한 Azure Monitor 경고 및 알림을 설정합니다. 정책 정의가 비즈니스 정책 및 규정 준수 요구 사항을 충족하는지 확인하기 위해 일정에 따라 정책 정의 및 관련 할당을 평가하는 것도 좋습니다. 더 이상 필요 없는 정책은 제거해야 합니다. 또한 기본 Azure 리소스가 진화하고 새 속성 및 기능을 추가함에 따라 정책을 수시로 업데이트해야 합니다.

다음 단계