Azure Policy 정의 audit 효과

audit 효과는 비준수 리소스를 평가하는 경우 활동 로그에서 경고 이벤트를 만드는 데 사용되지만 요청을 중단하지는 않습니다.

감사 평가

Audit는 리소스의 만들기 또는 업데이트하는 중에 Azure Policy에서 확인된 마지막 효과입니다. Resource Manager 모드에서 Azure Policy는 그런 다음, 리소스 공급자에 리소스를 보냅니다. 리소스에 대한 만들기 또는 업데이트 요청을 평가할 때 Azure Policy는 Microsoft.Authorization/policies/audit/action 작업을 활동 로그에 추가하고 해당 리소스를 비준수로 표시합니다. 표준 규정 준수 평가 주기 동안에는 리소스의 준수 상태만 업데이트됩니다.

감사 속성

Resource Manager 모드에서는 audit 효과에 정책 정의의 then 조건에 사용할 수 있는 다른 속성이 없습니다.

리소스 공급자 모드 Microsoft.Kubernetes.Data에서는 audit 효과에 다음과 같은 details 하위 속성이 있습니다. constraintTemplate이 사용 중지되므로 새 정책 또는 업데이트된 정책 정의에는 templateInfo를 사용해야 합니다.

  • templateInfo(필수)

    • constraintTemplate와 함께 사용할 수 없습니다.
    • sourceType(필수)
      • 제약 조건 템플릿의 원본 유형을 정의합니다. 허용되는 값: PublicURL 또는 Base64Encoded.

      • PublicURL인 경우 속성 url과 쌍을 이루어 제약 조건 템플릿의 위치를 제공합니다. 위치는 공개적으로 액세스할 수 있어야 합니다.

        Warning

        SAS URI, URL 토큰 또는 비밀을 일반 텍스트로 노출할 수 있는 다른 항목은 사용하지 마세요.

      • 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, scope, namespaces, excludedNamespaces 또는 labelSelector와 함께 사용할 수 없습니다.
    • constraintInfo가 제공되지 않으면 templateInfo 및 정책에서 제약 조건을 생성할 수 있습니다.
    • sourceType(필수)
      • 제약 조건의 원본 유형을 정의합니다. 허용되는 값: PublicURL 또는 Base64Encoded.

      • PublicURL인 경우 제약 조건 위치를 제공하기 위해 url 속성과 쌍을 이룹니다. 위치는 공개적으로 액세스할 수 있어야 합니다.

        Warning

        url 등에서 비밀을 노출할 수 있는 SAS URI 또는 토큰을 사용하지 마세요.

  • namespaces(선택 사항)

    • 정책 평가를 제한할 Kubernetes 네임스페이스의 배열입니다.
    • 값이 비어 있거나 누락되면 정책 평가에는 excludedNamespaces에 정의되지 않은 모든 네임스페이스가 포함됩니다.
  • excludedNamespaces(선택 사항)

  • labelSelector(선택 사항)

    • 제공된 레이블 및 선택기와 일치한 정책 평가에 포함할 Kubernetes 리소스를 지정할 수 있도록 matchLabels(개체) 및 matchExpression(배열) 속성을 포함하는 개체입니다.
    • 값이 비어 있거나 누락되면 정책 평가에는 excludedNamespaces에 정의된 네임스페이스를 제외한 모든 레이블과 선택기가 포함됩니다.
  • scope(선택 사항)

    • 클러스터 범위 또는 네임스페이스 범위 리소스가 일치하는지 여부를 지정할 수 있도록 하는 scope 속성을 포함하는 string입니다.
  • apiGroups(templateInfo 사용 시 필수)

    • 일치시킬 API 그룹을 포함하는 배열입니다. 빈 배열([""])은 핵심 API 그룹입니다.
    • apiGroups에 대한 ["*"] 정의는 허용되지 않습니다.
  • kinds(templateInfo 사용 시 필수)

    • 평가를 제한할 Kubernetes 개체의 종류를 포함하는 배열입니다.
    • 종류에 대한 ["*"] 정의는 허용되지 않습니다.
  • values(선택 사항)

    • 제약 조건에 전달할 매개 변수 및 값을 정의합니다. 각 값은 존재해야 하며 제약 조건 템플릿 CRD의 유효성 검사 openAPIV3Schema 섹션에 있는 속성과 일치해야 합니다.

감사 예

예제 1: Resource Manager 모드에 audit 효과 사용.

"then": {
  "effect": "audit"
}

예제 2: 리소스 공급자 모드 Microsoft.Kubernetes.Data에 audit 효과 사용. details.templateInfo의 추가 정보는 PublicURL의 사용을 선언하고 url을 Kubernetes에서 사용할 제약 조건 템플릿의 위치로 설정하여 허용되는 컨테이너 이미지를 제한합니다.

"then": {
  "effect": "audit",
  "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"
    ]
  }
}

다음 단계