Azure Policy란?

Azure Policy를 사용하면 조직의 표준을 적용하고 규정 준수를 대규모로 평가할 수 있습니다. 리소스별 정책별 세분성으로 드릴다운할 수 있는 기능을 사용하여 환경의 전체 상태를 평가할 수 있는 집계된 보기가 규정 준수 대시보드를 통해 제공됩니다. 또한 기존 리소스에 대한 대량 수정 및 새 리소스에 대한 자동 수정을 통해 리소스를 규정 준수 상태로 전환할 수 있습니다.

참고 항목

수정에 대한 자세한 내용은 Azure Policy로 비준수 리소스 수정을 참조하세요.

Azure Policy에 대한 일반적인 사용 사례에는 리소스 일관성, 규정 준수, 보안, 비용 및 관리에 대한 거버넌스 구현이 포함됩니다. 이러한 일반적인 사용 사례에 대한 정책 정의는 Azure 환경에서 이미 기본 제공 기능으로 사용할 수 있으므로 시작하는 데 도움이 됩니다.

특히 Azure Policy를 사용하여 적용할 수 있는 몇 가지 유용한 거버넌스 작업은 다음과 같습니다.

  • 팀이 허용된 지역에만 Azure 리소스를 배포하도록 보장
  • 분류 태그의 일관된 적용 시행
  • Log Analytics 작업 영역에 진단 로그를 보내기 위해 리소스 필요

Azure Arc가 도입되면 다양한 클라우드 공급자와 로컬 데이터 센터까지 정책 기반 거버넌스를 확장할 수 있다는 점을 인식하는 것이 중요합니다.

모든 Azure Policy 데이터와 개체는 미사용 시 암호화됩니다. 자세한 내용은 미사용 Azure 데이터 암호화를 참조하세요.

개요

Azure Policy는 해당 리소스 및 작업의 속성을 비즈니스 규칙과 비교하여 Azure의 리소스를 평가합니다. JSON 형식에서 설명하는 이러한 비즈니스 규칙을 정책 정의라고 합니다. 관리를 간소화하기 위해 여러 비즈니스 규칙을 그룹화하여 정책 이니셔티브(policySet라고도 함)를 구성할 수 있습니다. 비즈니스 규칙이 구성되면 정책 정의 또는 이니셔티브가 Azure에서 지원하는 리소스의 범위(예: 관리 그룹, 구독, 리소스 그룹 또는 개별 리소스)에 할당됩니다. 할당은 해당 할당의 Resource Manager 범위 내에 있는 모든 리소스에 적용됩니다. 필요한 경우 하위 범위를 제외할 수 있습니다. 자세한 내용은 Azure Policy의 범위를 참조하세요.

Azure Policy는 JSON 형식을 사용하여 평가에서 리소스의 규정 준수 여부를 확인하는 데 사용하는 논리를 구성합니다. 정의에는 메타데이터와 정책 규칙이 포함됩니다. 정의된 규칙은 함수, 매개 변수, 논리 연산자, 조건 및 속성 별칭을 사용하여 원하는 시나리오와 정확하게 일치시킬 수 있습니다. 정책 규칙은 할당 범위에서 평가되는 리소스를 결정합니다.

평가 결과 이해

리소스는 리소스 수명 주기, 정책 할당 수명 주기 및 정기적인 지속적인 일반 규정 준수 평가 기간의 특정 시간에 평가됩니다. 리소스가 평가되는 시간 또는 이벤트는 다음과 같습니다.

  • 리소스는 정책 할당을 통해 범위에서 만들어지거나 업데이트됩니다.
  • 정책 또는 이니셔티브는 범위에 새로 할당됩니다.
  • 범위에 새로 할당된 정책 또는 이니셔티브는 업데이트됩니다.
  • 표준 규정 준수 평가 주기 동안 24시간마다 한 번씩 수행됩니다.

정책 평가가 수행되는 시기와 방법에 대한 자세한 내용은 평가 트리거를 참조하세요.

평가에 대한 응답 제어

비준수 리소스를 처리하는 비즈니스 규칙은 조직마다 크게 다릅니다. 조직에서 비규격 리소스에 대응하는 플랫폼을 원하는 방법에 대한 예는 다음과 같습니다.

  • 리소스 변경 거부
  • 리소스에 대한 변경 내용 기록
  • 변경 전 리소스 변경
  • 변경 후 리소스 변경
  • 관련 규정 준수 리소스 배포
  • 리소스에 대한 작업 차단

Azure Policy는 효과를 적용하여 이러한 비즈니스 응답 각각을 가능하게 합니다. 효과는 정책 정의정책 규칙 부분에 설정됩니다.

규정 비준수 리소스 수정

이러한 효과는 리소스를 만들거나 업데이트할 때 주로 리소스에 영향을 주지만, Azure Policy는 해당 리소스를 변경할 필요 없이 기존 비준수 리소스를 처리하도록 지원합니다. 기존 리소스에서 규정 준수하도록 만드는 방법에 대한 자세한 내용은 리소스 수정을 참조하세요.

비디오 개요

Azure Policy의 다음 개요는 Build 2018에서부터 시작됩니다. 슬라이드 또는 비디오 다운로드의 경우 Channel 9에서 Azure Policy를 통해 Azure 환경 제어를 방문하세요.

시작하기

Azure Policy 및 Azure RBAC

Azure Policy 및 Azure RBAC(Azure 역할 기반 액세스 제어) 간에는 몇 가지 주요 차이점이 있습니다. Azure Policy는 Resource Manager에 표시되는 리소스의 속성 및 일부 리소스 공급자의 속성을 검사하여 상태를 평가합니다. Azure Policy를 사용하면 변경한 사용자 또는 변경 권한이 있는 사용자에 대한 걱정 없이 리소스 상태에서 비즈니스 규칙을 준수하는지 확인할 수 있습니다. Azure Policy는 DenyAction 효과를 통해 리소스에 대한 특정 작업을 차단할 수 있습니다. 정책 정의, 이니셔티브 정의할당과 같은 일부 Azure Policy 리소스는 모든 사용자에게 표시됩니다. 이 디자인을 통해 해당 환경에 설정된 정책 규칙이 모든 사용자 및 서비스에 투명하게 표시됩니다.

Azure RBAC는 다양한 범위에서 사용자 작업을 관리하는 데 중점을 둡니다. 사용자 정보를 기반으로 작업 제어가 필요한 경우 Azure RBAC가 사용하기에 적합한 도구입니다. 개인에게 작업을 수행할 수 있는 액세스 권한이 있더라도 결과가 비준수 리소스이면 Azure Policy에서 만들기 또는 업데이트를 계속 차단합니다.

Azure RBAC와 Azure Policy의 조합은 Azure에서 전체 범위 제어를 제공합니다.

Azure Policy의 Azure RBAC 사용 권한

Azure Policy에는 다음과 같이 두 리소스 공급자에서 작업이라고 하는 여러 사용 권한이 있습니다.

여러 기본 제공 역할에서 Azure Policy 리소스에 대한 권한을 부여합니다. 리소스 정책 기여자 역할은 대부분의 Azure Policy 작업을 포함합니다. 소유자는 전체 권한을 보유합니다. 기여자읽기 권한자는 모두 읽기 Azure Policy 작업에 액세스할 수 있습니다.

기여자는 리소스 수정을 트리거할 수 있지만, 정의와 할당을 만들거나업데이트할 수는 없습니다. 사용자 액세스 관리자deployIfNotExists에서 관리 ID를 부여하거나 할당에 필요한 권한을 수정하는 데 필요합니다.

참고 항목

정의, 이니셔티브 및 할당을 포함한 모든 정책 개체는 해당 범위의 모든 역할에서 읽을 수 있습니다. 예를 들어 Azure 구독으로 범위가 지정된 정책 할당은 구독 범위 이하의 모든 역할 보유자가 읽을 수 있습니다.

기본 제공 역할에 필요한 권한이 없는 경우 사용자 지정 역할을 만듭니다.

Azure Policy 작업은 Azure 환경에 상당한 영향을 미칠 수 있습니다. 작업을 수행하는 데 필요한 최소한의 권한 집합만 할당해야 하며 이러한 권한이 필요하지 않은 사용자에게는 부여되어서는 안 됩니다.

참고 항목

deployIfNotExists 또는 수정 정책 할당의 관리 ID에는 대상 리소스를 만들거나 업데이트할 수 있는 충분한 권한이 필요합니다. 자세한 내용은 수정에 대한 정책 정의 구성을 참조하세요.

Azure Virtual Network Manager를 사용하는 Azure Policy에 대한 특별 권한 요구 사항

Azure Virtual Network Manager(미리 보기)를 사용하면 클라우드 인프라 전체에서 여러 Azure VNet(가상 네트워크)에 일관된 관리 및 보안 정책을 적용할 수 있습니다. AVNM(Azure Virtual Network Manager) 동적 그룹은 Azure Policy 정의를 사용하여 해당 그룹의 VNet 멤버 자격을 평가합니다.

Azure Virtual Network Manager 동적 그룹 정책을 만들거나 편집하거나 삭제하려면 다음 작업이 필요합니다.

  • 기본 정책에 대한 Azure RBAC 권한 읽기 및 쓰기
  • 네트워크 그룹에 조인하기 위한 Azure RBAC 권한(클래식 관리자 권한 부여는 지원되지 않음)

특히 필요한 리소스 공급자 권한은 Microsoft.Network/networkManagers/networkGroups/join/action입니다.

Important

AVNM 동적 그룹을 수정하려면 Azure RBAC 역할 할당을 통해서만 액세스 권한을 부여해야 합니다. 클래식 관리자/레거시 권한 부여는 지원되지 않습니다. 즉, 계정에 공동 관리자 구독 역할만 할당된 경우 AVNM 동적 그룹에 대한 권한이 없습니다.

Azure Policy에서 처리하는 리소스

정책은 관리 그룹 수준에서 할당될 수 있지만 구독 또는 리소스 그룹 수준의 리소스만 평가됩니다.

컴퓨터 구성, Azure Kubernetes Service, Azure Key Vault와 같은 특정 리소스 공급자의 경우 설정 및 개체 관리를 위해 더 긴밀하게 통합됩니다. 자세한 내용을 알아보려면 리소스 공급자 모드로 이동합니다.

정책 관리에 대한 권장 사항

다음은 유의해야 할 몇 가지 포인터 및 팁입니다.

  • 정책 정의가 환경의 리소스에 미치는 영향을 추적하기 위해 적용(deny, modify, deployIfNotExist) 효과 대신 audit 또는 auditIfNotExist 효과로 시작합니다. 애플리케이션을 자동 스케일링하는 스크립트가 이미 있는 경우 적용 효과를 설정하면 기존의 자동화 작업이 방해를 받을 수 있습니다.

  • 정의 및 할당을 만들 때는 조직 계층 구조를 고려합니다. 관리 그룹 또는 구독 수준과 같은 상위 수준에서 정의를 만드는 것이 좋습니다. 그런 후에, 다음 하위 수준에서 할당을 만듭니다. 관리 그룹에서 정의를 만드는 경우 할당 범위를 해당 관리 그룹 내의 구독 또는 리소스 그룹으로 축소할 수 있습니다.

  • 단일 정책 정의에 대해서도 이니셔티브 정의를 만들고 할당하는 것이 좋습니다. 예를 들어 정책 정의 policyDefA가 있고, 이니셔티브 정의 initiativeDefC 아래에 만듭니다. 나중에 policyDefA와 비슷한 목표로 policyDefB에 대한 다른 정책 정의를 만드는 경우 initiativeDefC 아래에 추가하고 함께 추적할 수 있습니다.

    • 이니셔티브 할당을 만들면 이니셔티브에 추가된 정책 정의도 해당 이니셔티브 할당의 일부가 됩니다.

    • 이니셔티브 할당을 평가할 때 이니셔티브 내의 모든 정책도 평가됩니다. 정책을 개별적으로 평가해야 하는 경우 이니셔티브에 포함하지 않는 것이 좋습니다.

  • 정책 정의, 이니셔티브, 할당에 대한 변경 사항을 수동으로 검토하여 Azure Policy 리소스를 코드로 관리합니다. 제안된 패턴 및 도구에 대해 자세히 알아보려면 코드 워크플로로 Azure Policy 디자인을 참조하세요.

Azure Policy 개체

정책 정의

Azure Policy에서 정책을 만들고 구현하는 과정은 정책 정의 만들기로 시작합니다. 모든 정책 정의에는 정책이 적용되는 조건이 있습니다. 또한 조건이 충족되면 발생하는 정의된 효과가 있습니다.

Azure Policy에는 기본적으로 사용 가능한 여러 가지 기본 제공 정책이 있습니다. 예시:

  • 허용된 스토리지 계정 SKU(거부): 배포 중인 스토리지 계정이 SKU 크기 집합 내에 있는지 확인합니다. 정의된 SKU 크기 세트를 준수하지 않는 모든 스토리지 계정을 거부하게 됩니다.
  • 허용된 리소스 종류(거부): 배포할 수 있는 리소스 종류를 정의합니다. 이 정의된 목록에 속하지 않는 모든 리소스를 거부하게 됩니다.
  • 허용된 위치(거부): 새 리소스에 사용 가능한 위치를 제한합니다. 해당 효과는 지역 규정 준수 요구 사항을 적용하는 데 사용됩니다.
  • 허용되는 가상 머신 SKU(거부): 배포할 수 있는 가상 머신 SKU 집합을 지정합니다.
  • 리소스에 태그 추가(수정): 배포 요청에 지정되지 않은 경우 필수 태그와 해당 기본값을 적용합니다.
  • 허용되지 않는 리소스 종류(거부): 리소스 종류 목록이 배포되지 않도록 합니다.

이러한 정책 정의(기본 제공 및 사용자 지정 정의)를 구현하려면 할당해야 합니다. Azure Portal, PowerShell 또는 Azure CLI를 통해 이러한 정책 중 하나를 할당할 수 있습니다.

정책 평가는 정책 할당 또는 정책 업데이트와 같은 여러 가지 작업에서 수행됩니다. 전체 목록은 정책 평가 트리거를 참조하세요.

정책 정의의 구조에 대한 자세한 내용은 정책 정의 구조를 확인하세요.

정책 매개 변수는 만들어야 하는 정책 정의의 수를 줄여 정책 관리를 간소화하는 데 도움이 됩니다. 더 일반적인 정책 정의를 만들 때는 매개 변수를 정의할 수 있습니다. 그런 다음 다른 시나리오에 대해 해당 정책 정의를 다시 사용할 수 있습니다. 정책 정의를 할당할 때 다른 값을 전달하면 됩니다. 예를 들어 구독에 대해 하나의 위치 집합을 지정합니다.

매개 변수는 정책 정의를 만들 때 정의됩니다. 매개 변수를 정의하는 경우 이름 및 필요에 따라 값을 지정합니다. 예를 들어 location이라는 정책에 대한 매개 변수를 정의할 수 있습니다. 그런 다음 정책을 할당할 때 EastUS 또는 WestUS와 같은 다른 값을 지정할 수 있습니다.

정책 매개 변수에 대한 자세한 내용은 정의 구조 - 매개 변수를 참조하세요.

이니셔티브 정의

이니셔티브 정의는 가장 중요한 단일 목표를 달성하기 위해 맞춤화된 정책 정의의 컬렉션입니다. 이니셔티브 정의를 사용하면 정책 정의 관리 및 할당을 더 쉽게 수행할 수 있습니다. 정책 집합을 단일 항목으로 그룹화하여 단순화합니다. 예를 들어, 클라우드용 Microsoft Defender 인스턴스에서 사용 가능한 보안 권장 사항을 모두 모니터링하는 것을 목표로 클라우드용 Microsoft Defender에서 모니터링 사용이라는 제목의 이니셔티브를 만들 수 있습니다.

참고 항목

SDK(예: Azure CLI 및 Azure PowerShell)는 PolicySet라는 속성과 매개 변수를 사용하여 이니셔티브를 참조합니다.

이 이니셔티브에 따라 다음과 같은 정책 정의가 있게 됩니다.

  • 클라우드용 Microsoft Defender에서 암호화되지 않은 SQL Database 모니터링 - 암호화되지 않은 SQL 데이터베이스 및 서버를 모니터링
  • 클라우드용 Microsoft Defender에서 OS 취약성 모니터링 - 구성된 기준을 충족하지 않는 서버 모니터링
  • 클라우드용 Microsoft Defender에서 누락된 Endpoint Protection 모니터링 – 엔드포인트 보호 에이전트가 설치되지 않은 서버 모니터링

정책 매개 변수처럼 이니셔티브 매개 변수는 중복을 줄여 이니셔티브 관리를 간소화합니다. 이니셔티브 매개 변수는 이니셔티브 내의 정책 정의에 사용되는 매개 변수입니다.

예를 들어 각각 다른 형식의 매개 변수가 필요한 policyApolicyB 정책 정의를 사용하여 이니셔티브 정의 initiativeC가 있는 시나리오를 살펴보겠습니다.

정책 매개 변수의 이름 매개 변수의 형식 참고 항목
policyA allowedLocations array 매개 변수 형식이 배열로 정의되었으므로 이 매개 변수는 값으로 문자열 목록을 예상합니다.
policyB allowedSingleLocation string 매개 변수 형식이 문자열로 정의되었으므로 이 매개 변수는 값으로 한 단어를 예상합니다.

이 시나리오에서는 initiativeC에 대한 이니셔티브 매개 변수를 정의할 때 세 가지 옵션이 있습니다.

  • 이 이니셔티브 내의 정책 정의 매개 변수 사용: 이 예제에서 allowedLocationsallowedSingleLocationinitiativeC에 대한 이니셔티브 매개 변수가 됩니다.
  • 이 이니셔티브 정의 내에서 정책 정의의 매개 변수에 값 제공: 이 예에서는 위치 목록을 policyA의 매개 변수(allowedLocations) 및 policyB의 매개 변수(allowedSingleLocation)에 제공할 수 있습니다. 이 이니셔티브를 할당할 때 값을 제공할 수도 있습니다.
  • 이 이니셔티브를 할당할 때 옵션 목록 제공. 이 이니셔티브를 할당할 때 이니셔티브 내 정책 정의에서 상속된 매개 변수는 이 제공된 목록의 값만 가질 수 있습니다.

이니셔티브 정의에 값 옵션을 만드는 경우 이니셔티브 할당 중에 목록에 속하지 않는 다른 값을 입력할 수 없습니다.

이니셔티브 정의 구조에 대해 자세히 알아보려면 이니셔티브 정의 구조를 검토하세요.

할당

할당은 특정 범위에 할당된 정책 정의 또는 이니셔티브입니다. 이 범위는 관리 그룹에서 개별 리소스에 이르기까지 다양할 수 있습니다. 범위라는 용어는 정의가 할당된 모든 리소스, 리소스 그룹, 구독 또는 관리 그룹을 나타냅니다. 할당은 모든 자식 리소스에 상속됩니다. 이 설계는 리소스 그룹에 적용된 정의가 해당 리소스 그룹의 리소스에도 적용된다는 것을 의미합니다. 그러나 할당에서 하위 범위를 제외할 수 있습니다.

예를 들어 구독 범위에서 네트워킹 리소스를 만들지 못하도록 방지하는 정의를 할당할 수 있습니다. 해당 구독 내에서 네트워킹 인프라를 대상으로 하는 리소스 그룹을 제외할 수 있습니다. 그런 다음, 네트워킹 리소스 생성을 신뢰하는 사용자에게 이 네트워킹 리소스 그룹에 대한 액세스 권한을 부여합니다.

다른 예제에서는 관리 그룹 수준에서 리소스 종류 허용 목록 정의를 할당할 수 있습니다. 그런 다음, 더 많은 허용 정책(더 많은 리소스 종류 허용)을 자식 관리 그룹에 할당하거나 구독에 직접 할당합니다. 그러나 Azure Policy는 명시적 거부 시스템이므로 이 예는 작동하지 않습니다. 대신 관리 그룹 수준 할당에서 자식 관리 그룹 또는 구독을 제외해야 합니다. 그런 다음, 더 많은 허용 정의를 자식 관리 그룹 또는 구독 수준에 할당합니다. 할당으로 인해 리소스가 거부되는 경우 리소스를 허용하는 유일한 방법은 거부하는 할당을 수정하는 것입니다.

정책 할당은 항상 리소스를 평가할 때 할당된 정의 또는 이니셔티브의 최신 상태를 사용합니다. 이미 할당된 정책 정의가 변경된 경우, 해당 정의에 대한 기존의 모든 할당은 평가 시 업데이트된 논리를 사용합니다.

포털을 통해 할당을 설정하는 방법에 대한 자세한 내용은 Azure 환경에서 비준수 리소스를 식별하는 정책 할당 만들기를 참조하세요. PowerShellAzure CLI용 단계도 제공됩니다. 할당 구조에 대한 정보는 할당 구조를 참조하세요.

Azure Policy 개체의 최대 수

Azure Policy의 각 개체 형식에 대한 최대 수가 있습니다. 정의의 경우 범위 항목은 관리 그룹 또는 구독을 의미합니다. 할당 및 예외의 경우 범위 항목은 관리 그룹, 구독, 리소스 그룹 또는 개별 리소스를 의미합니다.

Where 구성할 항목 최대 수
범위 정책 정의 500
범위 이니셔티브 정의 200
테넌트 이니셔티브 정의 2,500
범위 정책 또는 이니셔티브 할당 200
범위 예외 1000
정책 정의 매개 변수 20
이니셔티브 정의 정책 1000
이니셔티브 정의 매개 변수 400
정책 또는 이니셔티브 할당 제외(notScopes) 400
정책 규칙 중첩된 조건부 512
수정 작업 리소스 50,000
정책 정의, 이니셔티브 또는 할당 요청 본문 바이트 1,048,576

정책 규칙에는 조건 수와 복잡성에 대한 제한이 더 많습니다. 자세한 내용은 정책 규칙 제한을 참조하세요.

다음 단계

이제 Azure Policy 개요와 몇 가지 핵심 개념을 살펴보았으므로 다음과 같은 단계를 권장합니다.