Azure Policy 정의 구조 기본 사항
Azure Policy 정의는 리소스 규정 준수 조건 및 조건 충족 시 미치는 영향을 설명합니다. 조건은 리소스 속성 필드 또는 값을 필요한 값과 비교합니다. 리소스 속성 필드에는 별칭을 사용하여 액세스합니다. 리소스 속성 필드가 배열인 경우 특별한 배열 별칭을 사용하여 모든 배열 멤버의 값을 선택하고 각 멤버에 조건을 적용할 수 있습니다. 조건에 대해 자세히 알아보세요.
정책 할당을 사용하면 비용을 제어하고 리소스를 관리할 수 있습니다. 예를 들어, 특정 유형의 가상 머신만 허용되게 지정할 수 있습니다. 또는 리소스가 특정 태그를 갖도록 요구할 수 있습니다. 특정 범위의 할당은 해당 범위 이하의 모든 리소스에 적용됩니다. 리소스 그룹에 정책을 적용하면 해당 리소스 그룹의 모든 리소스에 해당 정책을 적용할 수 있습니다.
JSON을 사용하여 다음에 대한 요소가 포함된 정책 정의를 만듭니다.
displayName
description
mode
version
metadata
parameters
policyRule
- 논리적 평가
effect
예를 들어 다음 JSON에서는 리소스가 배포되는 위치를 제한하는 정책을 보여줍니다.
{
"properties": {
"displayName": "Allowed locations",
"description": "This policy enables you to restrict the locations your organization can specify when deploying resources.",
"mode": "Indexed",
"metadata": {
"version": "1.0.0",
"category": "Locations"
},
"parameters": {
"allowedLocations": {
"type": "array",
"metadata": {
"description": "The list of locations that can be specified when deploying resources",
"strongType": "location",
"displayName": "Allowed locations"
},
"defaultValue": [
"westus2"
]
}
},
"policyRule": {
"if": {
"not": {
"field": "location",
"in": "[parameters('allowedLocations')]"
}
},
"then": {
"effect": "deny"
}
}
}
}
자세한 내용은 정책 정의 스키마를 참조하세요. Azure Policy 기본 제공 및 패턴은 Azure Policy 샘플에 있습니다.
표시 이름 및 설명
displayName
및 description
을 사용하여 정책 정의를 식별하고 정의가 사용되는 시기에 대한 컨텍스트를 제공합니다. displayName
의 최대 길이는 128자이고 description
최대 길이는 512자입니다.
참고 항목
정책 정의를 만들거나 업데이트하는 동안 id
, type
및 name
은 JSON 외부 속성에 의해 정의되며 JSON 파일에는 필요하지 않습니다. SDK를 통해 정책 정의를 가져오면 id
, type
및 name
속성이 JSON의 일부로 반환되지만 각각은 정책 정의와 관련된 읽기 전용 정보입니다.
정책 유형
policyType
속성을 설정할 수 없지만 SDK에서 반환하고 포털에 표시되는 세 가지 값이 있습니다.
Builtin
: Microsoft는 이러한 정책 정의를 제공하고 유지 관리합니다.Custom
: 고객에 의해 생성된 모든 정책 정의에는 이 값이 있습니다.Static
: Microsoft 소유권의 규제 규정 준수 정책 정의를 나타냅니다. 이러한 정책 정의에 대한 준수 결과는 Microsoft 인프라에 대한 Microsoft 이외의 감사 결과입니다. Azure Portal에서 이 값은 Microsoft에서 관리되는 것으로 표시되기도 합니다. 자세한 내용은 클라우드의 공유 책임을 참조하세요.
모드
mode
는 정책이 Azure Resource Manager 속성 또는 리소스 공급자 속성 중 무엇을 대상으로 하는지 따라 구성됩니다.
Resource Manager 모드
mode
는 정책 정의에 대해 평가할 리소스 종류를 결정합니다. 지원되는 모드는 다음과 같습니다.
all
: 리소스 그룹, 구독 및 모든 리소스 종류를 평가합니다.indexed
: 태그 및 위치를 지원하는 리소스 종류만 평가합니다.
예를 들어 리소스 Microsoft.Network/routeTables
는 태그와 위치를 지원하고 두 모드 모두에서 계산됩니다. 하지만 리소스 Microsoft.Network/routeTables/routes
에는 태그를 지정할 수 없으며 indexed
모드에서 평가되지 않습니다.
대부분의 경우 mode
를 all
로 설정하는 것이 좋습니다. 포털을 통해 생성된 모든 정책 정의는 all
모드를 사용합니다. PowerShell 또는 Azure CLI를 사용하는 경우 mode
매개 변수를 수동으로 지정할 수 있습니다. 정책 정의에 mode
값이 포함되지 않으면 기본적으로 Azure PowerShell에서는 all
로 설정되고 Azure CLI에서는 null
로 설정됩니다. null
모드는 이전 버전과의 호환성을 지원하기 위해 indexed
를 사용하는 것과 같습니다.
indexed
는 태그 또는 위치를 시스템에 적용하는 정책을 만들 때 사용해야 합니다. 이 모드는 반드시 사용해야 하는 것은 아니지만, 사용하는 경우 태그와 위치를 지원하지 않는 리소스가 규정 준수 결과에 미준수 항목으로 표시되지 않습니다. 예외는 리소스 그룹 및 구독입니다. 리소스 그룹 또는 구독에서 위치 또는 태그를 적용하는 정책 정의는 mode
를 all
로 설정하고 특히, Microsoft.Resources/subscriptions/resourceGroups
또는 Microsoft.Resources/subscriptions
유형을 대상으로 지정해야 합니다. 예제는 패턴: 태그 - 샘플 #1을 참조하세요. 태그를 지원하는 리소스 목록은 Azure 리소스에 대한 태그 지원을 참조하세요.
리소스 공급자 모드
다음 리소스 공급자 모드는 완전히 지원됩니다.
- Kubernetes 클러스터 및 Pod, 컨테이너, 수신 등의 구성 요소를 관리하기 위한
Microsoft.Kubernetes.Data
. Azure Kubernetes Service 클러스터 및 Azure Arc 지원 Kubernetes 클러스터를 지원합니다. 해당 리소스 공급자 모드를 사용하는 정의 파일은 감사, 거부 및 사용 안 함 효과를 사용합니다. Microsoft.KeyVault.Data
는 Azure Key Vault에서 자격 증명 모음 및 인증서를 관리하는 데 사용됩니다. 이러한 정책 정의에 대한 자세한 내용은 Azure Key Vault와 Azure Policy 통합을 참조하세요.Microsoft.Network.Data
Azure Policy를 사용하여 Azure Virtual Network Manager 사용자 지정 멤버 자격 정책을 관리합니다.
다음 리소스 공급자 모드는 현재 미리 보기로 지원됩니다.
- Azure Policy를 사용하여 관리 HSM(하드웨어 보안 모듈) 키를 관리하기 위한
Microsoft.ManagedHSM.Data
입니다. Microsoft.DataFactory.Data
Azure Policy를 사용하여 허용 목록에 지정되지 않은 Azure Data Factory 아웃바운드 트래픽 도메인 이름을 거부합니다. 이 리소스 공급자 모드는 적용 전용이며 공개 미리 보기에서 준수를 보고하지 않습니다.- Azure Machine Learning 모델 배포를 관리하기 위한
Microsoft.MachineLearningServices.v2.Data
입니다. 이 리소스 공급자 모드는 새로 만들어지고 업데이트된 구성 요소에 대한 준수를 보고합니다. 공개 미리 보기 동안에는 규정 준수 레코드가 24시간 동안 유지됩니다. 이러한 정책 정의가 할당되기 전에 있던 모델 배포는 규정 준수를 보고하지 않습니다. Microsoft.LoadTestService.Data
Azure Load Testing 인스턴스를 프라이빗 엔드포인트로 제한하기 위한 것입니다.
참고 항목
명시적으로 언급되지 않는 한 리소스 공급자 모드는 기본 제공 정책 정의만 지원하며 구성 요소 수준에서는 예외가 지원되지 않습니다.
Azure Policy 버전 관리가 릴리스되면 다음 리소스 공급자 모드는 기본 제공 버전 관리를 지원하지 않습니다.
Microsoft.DataFactory.Data
Microsoft.MachineLearningServices.v2.Data
Microsoft.ManagedHSM.Data
버전(미리 보기)
기본 제공 정책 정의는 동일한 definitionID
를 사용하여 여러 버전을 호스팅할 수 있습니다. 버전 번호를 지정하지 않으면 모든 환경에 최신 버전의 정의가 표시됩니다. 특정 버전의 기본 제공 기능을 보려면 API, SDK 또는 UI에서 지정해야 합니다. 할당 내에서 특정 버전의 정의를 참조하려면 할당 내 정의 버전을 참조하세요.
Azure Policy 서비스는 기본 제공 정책 정의 또는 이니셔티브에 상태 및 변경 수준을 전달하기 위해 , 및 deprecated
속성을 사용합니다.version
preview
version
의 형식은 {Major}.{Minor}.{Patch}
입니다. 정책 정의가 미리 보기 상태이면 접미사 미리 보기가 속성에 version
추가되고 부울로 처리됩니다. 정책 정의가 더 이상 사용되지 않는 경우 사용 중단은 다음을 사용하여 "deprecated": "true"
정의의 메타데이터에서 부울로 캡처됩니다.
- 주 버전(예: 2.0.0): 주요 규칙 논리 변경, 매개 변수 제거, 기본 적용 효과 추가 등 호환성이 손상되는 변경을 도입합니다.
- 부 버전(예: 2.1.0): 사소한 규칙 논리 변경, 새 매개 변수 허용 값 추가,
roleDefinitionIds
변경, 이니셔티브 내 정의 추가 또는 이동과 같은 변경 내용을 도입합니다. - 패치 버전(예: 2.1.4): 문자열 또는 메타데이터 변경 내용 및 비상 보안 시나리오를 도입합니다(드문 경우).
기본 제공되는 Azure Policy 버전 관리에 대한 자세한 내용은 기본 제공 버전 관리를 참조하세요. 정책이 사용되지 않음 또는 미리 보기 상태인 것의 의미를 자세히 알아보려면 미리 보기 및 사용되지 않음 정책을 참조하세요.
메타데이터
선택적 metadata
속성은 정책 정의에 대한 정보를 저장합니다. 고객은 metadata
에서 조직에 유용한 모든 속성 및 값을 정의할 수 있습니다. 그러나 Azure Policy 및 기본 제공에서 사용되는 몇 가지 ‘공통’ 속성이 있습니다. 각 metadata
속성의 제한은 1,024자입니다.
공통 메타데이터 속성
version
(문자열): 정책 정의 콘텐츠의 버전에 대한 세부 정보를 추적합니다.category
(문자열): Azure Portal에서 정책 정의가 표시되는 범주를 결정합니다.preview
(부울): 정책 정의가 미리 보기인 경우에 대한 True 또는 False 플래그입니다.deprecated
(부울): 정책 정의가 사용되지 않음으로 표시된 경우 True 또는 False 플래그입니다.portalReview
(문자열): 필요한 입력에 관계없이 포털에서 매개 변수를 검토해야 하는지 여부를 결정합니다.
정의 위치
이니셔티브 또는 정책을 만드는 동안 정의 위치를 지정해야 합니다. 정의 위치는 관리 그룹 또는 구독이어야 합니다. 이 위치는 이니셔티브 또는 정책을 할당할 수 있는 범위를 결정합니다. 리소스는 할당 대상으로 지정할 정의 위치의 계층 구조 내의 직접 멤버 또는 자식 멤버여야 합니다.
정의 위치는 다음과 같습니다.
- 구독 - 해당 구독 내의 리소스만 정책 정의에 할당할 수 있습니다.
- 관리 그룹 - 자식 관리 그룹과 자식 구독 내의 리소스만 정책 정의에 할당할 수 있습니다. 정책 정의를 여러 구독에 적용하려는 경우 위치는 각 구독이 포함된 관리 그룹이어야 합니다.
자세한 내용은 Azure Policy의 범위 이해를 참조하세요.
다음 단계
- 정책 정의 구조에 대한 자세한 내용을 보려면 매개 변수, 정책 규칙 및 별칭으로 이동합니다.
- 이니셔티브의 경우 이니셔티브 정의 구조로 이동합니다.
- Azure Policy 샘플에서 예제를 검토합니다.
- 정책 효과 이해를 검토합니다.
- 프로그래밍 방식으로 정책을 만드는 방법을 이해합니다.
- 규정 준수 데이터를 가져오는 방법을 알아봅니다.
- 규정 비준수 리소스를 수정하는 방법을 알아봅니다.
- Azure 관리 그룹으로 리소스 구성을 포함하는 관리 그룹을 검토합니다.