규정 비준수의 원인 확인
Azure 리소스가 정책 규칙을 준수하지 않는 것으로 확인되면 리소스가 호환되지 않는 규칙의 부분을 이해하는 것이 도움이 됩니다. 또한 이전 준수 리소스를 규정 비준수로 만든 변경 내용을 이해하는 것도 유용합니다. 이 정보를 찾는 방법에는 두 가지가 있습니다.
준수 세부 정보
리소스가 규정 비준수인 경우 해당 리소스에 대한 준수 세부 정보는 정책 준수 페이지에서 사용할 수 있습니다. 준수 세부 정보 창에는 다음 정보가 포함됩니다.
- 이름, 유형, 위치 및 리소스 ID와 같은 리소스 세부 정보.
- 현재 정책 할당에 대한 마지막 평가의 준수 상태 및 타임스탬프.
- 리소스 규정 비준수에 대한 이유 목록.
Important
규정 비준수 리소스에 대한 준수 세부 정보에는 해당 리소스에 대한 현재 속성 값이 표시되므로 사용자에게 리소스 형식에 대한 읽기 작업이 있어야 합니다. 예를 들어, 비준수 리소스가 Microsoft.Compute/virtualMachines
인 경우 사용자에게 Microsoft.Compute/virtualMachines/read
작업이 있어야 합니다. 사용자에게 필요한 작업이 없는 경우 액세스 오류가 표시됩니다.
준수 세부 정보를 보려면 다음 단계를 수행합니다.
모든 서비스를 선택한 후 정책을 검색하고 선택하여 Azure Portal에서 Azure Policy 서비스를 시작합니다.
개요 또는 준수 페이지에서 규정 비준수인 준수 상태에서 정책을 선택합니다.
정책 준수 페이지의 리소스 준수 탭에서 비준수인 준수 상태에서 리소스의 줄임표를 길게 선택(또는 마우스 오른쪽 단추로 클릭)하거나 선택합니다. 그런 다음, 준수 세부 정보 보기를 선택합니다.
준수 세부 정보 창에는 현재 정책 할당에 대한 리소스의 최신 평가 정보가 표시됩니다. 이 예에서
Microsoft.Sql/servers/version
필드는 12.0인 것으로 확인되었지만 정책 정의에서는 14.0을 예상했습니다. 여러 가지 이유로 리소스가 규정 비준수인 경우 각각이 이 창에 나열됩니다.auditIfNotExists
또는deployIfNotExists
정책 정의의 경우 세부 정보에는 details.type 속성과 선택적 속성이 포함됩니다. 목록은 auditIfNotExists 속성 및 deployIfNotExists 속성을 참조하세요. 마지막으로 평가된 리소스는 정의의 세부 정보 섹션에서 관련된 리소스입니다.부분
deployIfNotExists
정의 예:{ "if": { "field": "type", "equals": "[parameters('resourceType')]" }, "then": { "effect": "deployIfNotExists", "details": { "type": "Microsoft.Insights/metricAlerts", "existenceCondition": { "field": "name", "equals": "[concat(parameters('alertNamePrefix'), '-', resourcegroup().name, '-', field('name'))]" }, "existenceScope": "subscription", "deployment": { ... } } } }
참고 항목
데이터를 보호하기 위해 속성 값이 비밀이면 현재 값이 별표를 표시합니다.
이러한 세부 정보는 리소스가 현재 규정 비준수인 이유를 설명하지만 규정 비준수가 되도록 만든 리소스가 변경된 경우를 표시하지 않습니다. 자세한 내용은 변경 내용(미리 보기)을 참조하세요.
준수 이유
Resource Manager 모드와 리소스 공급자 모드에는 비규격 이유가 각각 다릅니다.
일반 Resource Manager 모드 규정 준수 이유
다음 표에서는 각 Resource Manager 모드 이유를 정책 정의의 책임 있는 조건에 매핑합니다.
원인 | 조건 |
---|---|
현재 값은 대상 값을 키로 포함해야 합니다. | containsKey 또는 notContainsKey 아님 |
현재 값은 대상 값을 포함해야 합니다. | contains 또는 notContains 아님 |
현재 값은 대상 값과 같아야 합니다. | equals 또는 notEquals 아님 |
현재 값은 대상 값보다 작아야 합니다. | less 또는 greaterOrEquals 아님 |
현재 값은 대상 값보다 크거나 같아야 합니다. | greaterOrEquals 또는 less 아님 |
현재 값은 대상 값보다 커야 합니다. | greater 또는 lessOrEquals 아님 |
현재 값은 대상 값보다 작거나 같아야 합니다. | lessOrEquals 또는 greater 아님 |
현재 값이 있어야 합니다. | 예 |
현재 값이 대상 값에 포함되어야 합니다. | in 또는 notIn 아님 |
현재 값은 대상 값과 같아야 합니다. | like 또는 notLike 아님 |
현재 값은 대/소문자를 구분하며 대상 값과 일치해야 합니다. | match 또는 notMatch 아님 |
현재 값은 대/소문자를 구분하지 않으며 대상 값과 일치해야 합니다. | matchInsensitively 또는 notMatchInsensitively 아님 |
현재 값은 대상 값을 키로 포함할 수 없습니다. | notContainsKey 또는 containsKey 아님 |
현재 값은 대상 값을 포함할 수 없습니다. | notContains 또는 contains 아님 |
현재 값은 대상 값과 같을 수 없습니다. | notEquals 또는 equals 아님 |
현재 값이 없어야 합니다. | exists 아님 |
현재 값이 대상 값에 포함될 수 없습니다. | notIn 또는 in 아님 |
현재 값은 대상 값과 같을 수 없습니다. | notLike 또는 like 아님 |
현재 값은 대/소문자를 구분하며 대상 값과 일치할 수 없습니다. | notMatch 또는 match 아님 |
현재 값은 대/소문자를 구분하지 않으며 대상 값과 일치할 수 없습니다. | notMatchInsensitively 또는 matchInsensitively 아님 |
정책 정의의 효과 세부 정보와 일치하는 관련 리소스가 없습니다. | then.details.type 에 정의되고 정책 규칙의 if 부분에 정의된 리소스와 관련된 형식의 리소스가 존재하지 않습니다. |
Azure Policy 리소스 공급자 모드 규정 준수 이유
다음 표에서는 각 Microsoft.PolicyInsights
리소스 공급자 모드 이유 코드를 해당 설명에 매핑합니다.
규정 준수 이유 코드 | 오류 메시지 및 설명 |
---|---|
NonModifiablePolicyAlias | NonModifiableAliasConflict: API 버전 '{apiVersion}'을 사용하는 요청에서는 '{alias}' 별칭을 수정할 수 없습니다. 이 오류는 별칭이 '수정' 효과를 지원하지 않거나 다른 토큰 형식의 '수정' 효과만 지원하는 API 버전을 사용하는 요청에서 발생합니다. |
AppendPoliciesNotApplicable | AppendPoliciesUnableToAppend: 별칭: '{ aliases }'는 API 버전: '{ apiVersion }'을 사용하는 요청에서 수정할 수 없습니다. 별칭이 '수정' 효과를 지원하지 않는 API 버전을 사용하는 요청에서 발생하거나 다른 토큰 형식의 '수정' 효과를 지원할 수 있습니다. |
ConflictingAppendPolicies | ConflictingAppendPolicies: '{notApplicableFields}' 필드를 수정하는 충돌하는 정책 할당을 찾았습니다. 정책 식별자: '{policy}'. 정책 할당을 업데이트하려면 구독 관리자에게 문의합니다. |
AppendPoliciesFieldsExist | AppendPoliciesFieldsExistWithDifferentValues: 정책 할당은 요청에 이미 있는 필드를 다른 값으로 추가하려고 했습니다. 필드: '{existingFields}'. 정책 식별자: '{policy}'. 정책을 업데이트하려면 구독 관리자에게 문의하세요. |
AppendPoliciesUndefinedFields | AppendPoliciesUndefinedFields: API 버전 '{apiVersion}'에 대해 정의되지 않은 필드 속성을 참조하는 정책 정의를 찾았습니다. 필드: '{nonExistingFields}'. 정책 식별자: '{policy}'. 정책을 업데이트하려면 구독 관리자에게 문의하세요. |
MissingRegistrationForType | MissingRegistrationForResourceType: 구독이 리소스 종류 '{ResourceType}'에 등록되지 않았습니다. 리소스 종류가 있고 리소스 종류가 등록되어 있는지 확인합니다. |
AmbiguousPolicyEvaluationPaths | 요청 콘텐츠에 '{1}' 정책에 필요한 하나 이상의 모호한 '{0}' 경로가 있습니다. |
InvalidResourceNameWildcardPosition | 정책 정의 '{1}'와 연결된 정책 할당 '{0}'를 평가할 수 없습니다. ifNotExists 조건 내의 리소스 이름 '{2}'에는 와일드카드 '?' 문자가 잘못된 위치에 포함되어 있습니다. 와일드카드는 세그먼트의 이름 끝에만 단독으로 배치할 수 있습니다(예: TopLevelResourceName/?). 정책을 수정하거나 차단을 해제할 정책 할당을 제거합니다. |
TooManyResourceNameSegments | 정책 정의 '{1}'와 연결된 정책 할당 '{0}'를 평가할 수 없습니다. ifNotExists 조건 내의 리소스 이름 '{2}'에 너무 많은 이름 세그먼트가 포함되어 있습니다. 이름 세그먼트 수는 형식 세그먼트 수(리소스 공급자 네임스페이스 제외)와 같거나 작아야 합니다. 정책 정의를 수정하거나 차단을 해제할 정책 할당을 제거합니다. |
InvalidPolicyFieldPath | 정책 정의 내의 필드 경로 '{0}'가 잘못되었습니다. 필드 경로에는 빈 세그먼트가 없어야 합니다. 분할 세그먼트에 대한 '.' 문자와 배열 속성에 액세스하기 위한 '[*]' 문자 시퀀스를 제외한 영숫자 문자만 포함될 수 있습니다. |
AKS 리소스 공급자 모드 규정 준수 이유
다음 표에서는 각 Microsoft.Kubernetes.Data
리소스 공급자 모드 이유를 정책 정의에 있는 제약 조건 템플릿의 책임 상태에 매핑합니다.
원인 | 제약 조건 템플릿 이유 설명 |
---|---|
Constraint/TemplateCreateFailed | 리소스 메타데이터 이름으로 클러스터의 기존 제약 조건/템플릿과 일치하지 않는 제약 조건/템플릿을 사용하여 정책 정의에 대한 리소스를 만들지 못했습니다. |
Constraint/TemplateUpdateFailed | 제약 조건/템플릿이 리소스 메타데이터 이름으로 클러스터의 기존 제약 조건/템플릿과 일치하는 제약 조건/템플릿을 사용하여 정책 정의를 업데이트하지 못했습니다. |
Constraint/TemplateInstallFailed | 제약 조건/템플릿을 빌드하지 못했으며 만들기 또는 업데이트 작업을 위해 클러스터에 설치할 수 없습니다. |
ConstraintTemplateConflicts | 템플릿은 원본이 다른 동일한 템플릿 이름을 사용하는 하나 이상의 정책 정의와 충돌합니다. |
ConstraintStatusStale | 기존 '감사' 상태가 있지만 Gatekeeper가 지난 한 시간 동안 감사를 수행하지 않았습니다. |
ConstraintNotProcessed | 상태가 없으며 Gatekeeper가 지난 한 시간 동안 감사를 수행하지 않았습니다. |
InvalidConstraint/Template | 잘못된 제약 조건 템플릿 Rego 콘텐츠, 잘못된 YAML 또는 제약 조건과 제약 조건 템플릿 간의 매개 변수 형식 불일치(정수가 필요한 경우 문자열 값 제공) 이유 중 하나로 인해 리소스가 거부되었습니다. |
참고 항목
클러스터에 이미 있는 기존 정책 할당 및 제약 조건 템플릿의 경우 해당 제약 조건/템플릿이 실패하면 기존 제약 조건/템플릿을 유지 관리하여 클러스터를 보호합니다. 클러스터는 정책 할당 또는 추가 기능 자체 복구에서 오류가 해결될 때까지 비규격으로 보고합니다. 충돌 처리에 대한 자세한 내용은 제약 조건 템플릿 충돌을 참조하세요.
리소스 공급자 모드에 대한 규정 준수 세부 정보
리소스 공급자 모드를 사용한 할당의 경우 비준수 리소스를 선택하여 해당 구성 요소 준수 기록을 확인합니다. 구성 요소 규정 준수 탭에는 구성 요소 이름, 구성 요소 ID 및 형식과 같은 리소스 공급자 모드와 관련된 추가 정보가 표시됩니다.
게스트 구성에 대한 규정 준수 세부 정보
게스트 구성 범주에 있는 정책 정의의 경우 가상 머신 내에서 여러 설정이 평가될 수 있으며 설정별 세부 정보를 확인해야 합니다. 예를 들어 보안 설정 목록을 감사하고 있고 그중 하나만 규정 비준수 상태가 있는 경우 준수하지 않는 특정 설정 및 이유를 알아야 합니다.
또한 가상 머신에 직접 로그인할 수 있는 액세스 권한이 없을 수도 있지만 가상 머신이 규정 비준수인 이유를 보고해야 합니다.
Azure Portal
먼저 규정 준수 세부 정보 섹션의 동일한 단계에 따라 정책 준수 세부 정보를 확인합니다.
규정 준수 세부 정보 창 보기에서 마지막으로 평가된 리소스 링크를 선택합니다.
게스트 할당 페이지에는 사용 가능한 모든 준수 세부 정보가 표시됩니다. 뷰의 각 행은 머신 내에서 수행된 평가를 나타냅니다. Reason 열에서 게스트 할당이 규정 비준수인 이유를 설명하는 구가 표시됩니다. 예를 들어 암호 정책을 감사하는 경우 Reason 열에 각 설정에 대한 현재 값을 포함한 텍스트가 표시됩니다.
대규모 구성 할당 세부 정보 보기
게스트 구성 기능은 Azure Policy 할당 외부에서 사용할 수 있습니다. 예를 들어 Azure Automanage는 게스트 구성 할당을 만들거나 컴퓨터를 배포할 때 구성을 할당할 수 있습니다.
테넌트 전체에서 모든 게스트 구성 할당을 보려면 Azure Portal에서 게스트 할당 페이지를 엽니다. 자세한 규정 준수 정보를 보려면 이름 열의 링크를 사용하여 각 할당을 선택합니다.
변경 기록(미리 보기)
새 공개 미리 보기의 일부로, 전체 모드 삭제를 지원하는 모든 Azure 리소스에 대해 지난 14일 간의 변경 기록을 사용할 수 있습니다. 변경 기록은 변경이 검색된 시간 및 각 변경의 시각적 차이에 대한 세부 정보를 제공합니다. 변경 검색은 Azure Resource Manager 속성이 추가, 제거 또는 변경될 때 트리거됩니다.
모든 서비스를 선택한 후 정책을 검색하고 선택하여 Azure Portal에서 Azure Policy 서비스를 시작합니다.
개요 또는 준수 페이지에서 준수 상태에 있는 정책을 선택합니다.
정책 준수 페이지의 리소스 준수 탭에서 리소스를 선택합니다.
리소스 준수 페이지에서 변경 기록(미리 보기) 탭을 선택합니다. 검색된 변경 목록이 표시됩니다(있는 경우).
검색된 변경 중 하나를 선택합니다. 리소스의 시각적 차이는 변경 기록 페이지에 표시됩니다.
시각적 차이는 리소스 변경 내용을 식별하는 데 도움이 됩니다. 검색된 변경 내용은 리소스의 현재 규정 준수 상태와 관련이 없을 수 있습니다.
변경 기록 데이터는 Azure Resource Graph에 의해 제공됩니다. Azure Portal 외부에서 이 정보를 쿼리하려면 리소스 변경 내용 가져오기를 참조하세요.
다음 단계
- Azure Policy 샘플에서 예제를 검토합니다.
- Azure Policy 정의 구조를 검토합니다.
- 정책 효과 이해를 검토합니다.
- 프로그래밍 방식으로 정책을 만드는 방법을 이해합니다.
- 규정 준수 데이터를 가져오는 방법을 알아봅니다.
- 규정 비준수 리소스를 수정하는 방법을 알아봅니다.
- Azure 관리 그룹으로 리소스 구성을 포함하는 관리 그룹을 검토합니다.