Azure Policy 정의 deny 효과
deny
효과는 정책 정의를 통해 정의된 표준과 일치하지 않고 요청에 실패하는 리소스 요청을 방지하는 데 사용됩니다.
거부 평가
Resource Manager 모드에서 일치된 리소스를 만들거나 업데이트할 때 deny는 리소스 공급자에게 보내기 전에 먼저 요청을 방지합니다. 요청은 403 (Forbidden)
으로 반환됩니다. 포털에서 Forbidden
은 정책 할당으로 인해 차단된 배포 상태로 볼 수 있습니다. 리소스 공급자 모드에서는 리소스 공급자가 리소스의 평가를 관리합니다.
기존 리소스의 평가 중 deny
정책 정의와 일치하는 리소스는 비준수로 표시됩니다.
거부 속성
Resource Manager 모드의 경우 deny
효과에는 정책 정의의 then
조건에 사용할 속성이 더 이상 없습니다.
Microsoft.Kubernetes.Data
의 리소스 공급자 모드의 경우 deny
효과에는 다음과 같은 details
하위 속성이 있습니다. constraintTemplate
이 사용 중지되므로 새 정책 또는 업데이트된 정책 정의에는 templateInfo
를 사용해야 합니다.
templateInfo
(필수)constraintTemplate
와 함께 사용할 수 없습니다.sourceType
(필수)제약 조건 템플릿의 원본 유형을 정의합니다. 허용되는 값:
PublicURL
또는Base64Encoded
.PublicURL
인 경우 속성url
과 쌍을 이루어 제약 조건 템플릿의 위치를 제공합니다. 위치는 공개적으로 액세스할 수 있어야 합니다.Warning
url
등에서 비밀을 노출할 수 있는 SAS URI 또는 토큰을 사용하지 마세요.Base64Encoded
인 경우content
속성과 쌍을 이루어 기본 64로 인코딩된 제약 조건 템플릿을 제공합니다. 기존 OPA(Open Policy Agent) Gatekeeper v3 제약 조건 템플릿에서 사용자 지정 정의를 만들려면 제약 조건 템플릿에서 정책 정의 만들기를 참조하세요.
constraint
(선택 사항)templateInfo
와 함께 사용할 수 없습니다.- 제약 조건 템플릿의 CRD 구현입니다.
values
를 통해 전달된 매개 변수를{{ .Values.<valuename> }}
으로 사용합니다. 아래 예제 2에서 이들 값은{{ .Values.excludedNamespaces }}
및{{ .Values.allowedContainerImagesRegex }}
입니다.
constraintTemplate
(사용되지 않음)templateInfo
와 함께 사용할 수 없습니다.- 정책 정의를 만들거나 업데이트할 때
templateInfo
로 바꿔야 합니다. - 새로운 제약 조건을 정의하는 제약 조건 템플릿 CRD(CustomResourceDefinition)입니다. 이 템플릿은 Azure Policy의
values
를 통해 전달되는 Rego 논리, 제약 조건 스키마 및 제약 조건 매개 변수를 정의합니다. 자세한 내용은 Gatekeeper 제약 조건을 참조하세요.
constraintInfo
(선택 사항)constraint
,constraintTemplate
,apiGroups
또는kinds
와 함께 사용할 수 없습니다.constraintInfo
가 제공되지 않으면templateInfo
및 정책에서 제약 조건을 생성할 수 있습니다.sourceType
(필수)제약 조건의 원본 유형을 정의합니다. 허용되는 값:
PublicURL
또는Base64Encoded
.PublicURL
인 경우 제약 조건 위치를 제공하기 위해url
속성과 쌍을 이룹니다. 위치는 공개적으로 액세스할 수 있어야 합니다.Warning
url
등에서 비밀을 노출할 수 있는 SAS URI 또는 토큰을 사용하지 마세요.
namespaces
(선택 사항)- 정책 평가를 제한할 Kubernetes 네임스페이스의 배열입니다.
- 값이 비어 있거나 누락되면 정책 평가에
excludedNamespaces
에 정의된 네임스페이스를 제외한 모든 네임스페이스가 포함됩니다.
excludedNamespaces
(필수)- 정책 평가에서 제외할 Kubernetes 네임스페이스의 배열입니다.
labelSelector
(필수)- 제공된 레이블 및 선택기와 일치하는 정책 평가를 위해 포함할 Kubernetes 리소스를 지정할 수 있도록 하는
matchLabels
(개체) 및matchExpression
(배열) 속성을 포함하는 개체입니다. - 값이 비어 있거나 누락되면 정책 평가에
excludedNamespaces
에 정의된 네임스페이스를 제외한 모든 레이블과 선택기가 포함됩니다.
- 제공된 레이블 및 선택기와 일치하는 정책 평가를 위해 포함할 Kubernetes 리소스를 지정할 수 있도록 하는
apiGroups
(templateInfo 사용 시 필수)- 일치시킬 API 그룹을 포함하는 배열입니다. 빈 배열(
[""]
)은 핵심 API 그룹입니다. - apiGroups에 대한
["*"]
정의는 허용되지 않습니다.
- 일치시킬 API 그룹을 포함하는 배열입니다. 빈 배열(
kinds
(templateInfo 사용 시 필수)- 평가를 제한할 Kubernetes 개체의 종류를 포함하는 배열입니다.
- 종류에 대한
["*"]
정의는 허용되지 않습니다.
values
(선택 사항)- 제약 조건에 전달할 매개 변수 및 값을 정의합니다. 각 값은 제약 조건 템플릿 CRD에 있어야 합니다.
거부 예제
예 1: Resource Manager 모드에 deny
효과 사용.
"then": {
"effect": "deny"
}
예 2: Microsoft.Kubernetes.Data
의 리소스 공급자 모드에 대해 deny
효과 사용. details.templateInfo
의 추가 정보는 PublicURL
의 사용을 선언하고 url
을 Kubernetes에서 사용할 제약 조건 템플릿의 위치로 설정하여 허용되는 컨테이너 이미지를 제한합니다.
"then": {
"effect": "deny",
"details": {
"templateInfo": {
"sourceType": "PublicURL",
"url": "https://store.policy.core.windows.net/kubernetes/container-allowed-images/v1/template.yaml",
},
"values": {
"imageRegex": "[parameters('allowedContainerImagesRegex')]"
},
"apiGroups": [
""
],
"kinds": [
"Pod"
]
}
}
다음 단계
- Azure Policy 샘플에서 예제를 검토합니다.
- Azure Policy 정의 구조를 검토합니다.
- 프로그래밍 방식으로 정책을 만드는 방법을 이해합니다.
- 규정 준수 데이터를 가져오는 방법을 알아봅니다.
- 규정 비준수 리소스를 수정하는 방법을 알아봅니다.
- Azure 관리 그룹을 검토합니다.