Key Vault의 Azure 정책 구현 관련 문제 해결

이 문서에서는 Key Vault용 Azure Policy를 설정할 때 발생할 수 있는 일반적인 오류를 해결하는 방법을 안내하고 이를 해결하는 방법을 제안합니다.

Key Vault용 Azure 정책 정보

Azure Policy는 사용자에게 대규모로 Azure 환경을 감사 및 관리하는 기능을 제공하는 거버넌스 도구입니다. Azure Policy를 사용하여 할당된 정책 규칙을 준수하도록 Azure 리소스에 가드 레일을 적용할 수 있습니다. 이를 통해 사용자는 Azure 환경의 감사, 실시간 적용 및 수정을 수행할 수 있습니다. 정책에 의해 수행되는 감사 결과는 규정 준수 대시보드의 사용자가 사용할 수 있으며 여기에서 어떤 리소스와 구성 요소가 규정을 준수하는지 드릴다운할 수 있습니다.

로깅

정책 평가가 수행되는 방법을 모니터링하려면 Key Vault 로그를 검토할 수 있습니다. 제공한 Azure 스토리지 계정에 정보를 저장하는 Azure Key Vault에서 로깅을 사용하도록 설정합니다. 단계별 지침은 Key Vault 로깅을 사용하는 방법을 참조하세요.

로깅을 사용하도록 설정하면 지정된 스토리지 계정에서 정책 관련 로깅 정보를 수집하기 위해 AzurePolicyEvaluationDetails라는 새 컨테이너가 자동으로 생성됩니다.

참고 항목

중요한 정보가 포함될 수 있는 모니터링 데이터, 특히 로그 파일에 대한 액세스를 엄격하게 규제해야 합니다. 기본 제공 모니터링 Azure 역할 적용 및 액세스 제한에 대해 자세히 알아봅니다.

개별 Blob은 JSON Blob 형식으로 텍스트로 저장됩니다.

키 정책에 대한 예제 로그 항목은 키에는 만료 날짜 집합이 있어야 함을 참조하세요. 이 정책은 만료 날짜가 비준수로 설정되지 않은 Key Vault 및 플래그 키의 모든 키를 평가합니다.

{
  "ObjectName": "example",
  "ObjectType": "Key",
  "IsComplianceCheck": false,
  "EvaluationDetails": [
    {
      "AssignmentId": "<subscription ID>",
      "AssignmentDisplayName": "[Preview]: Key Vault keys should have an expiration date",
      "DefinitionId": "<definition ID>",
      "DefinitionDisplayName": "[Preview]: Key Vault keys should have an expiration date",
      "Outcome": "NonCompliant",
      "ExpressionEvaluationDetails": [
        {
          "Result": "True",
          "Expression": "type",
          "ExpressionKind": "Field",
          "ExpressionValue": "Microsoft.KeyVault.Data/vaults/keys",
          "TargetValue": "Microsoft.KeyVault.Data/vaults/keys",
          "Operator": "Equals"
        },
        {
          "Result": "True",
          "Expression": "Microsoft.KeyVault.Data/vaults/keys/attributes.expiresOn",
          "ExpressionKind": "Field",
          "ExpressionValue": "******",
          "TargetValue": "False",
          "Operator": "Exists"
        }
      ]
    }
  ]
}

다음 표에는 필드 이름 및 설명이 나와 있습니다.

필드 이름 설명
ObjectName 개체의 이름
ObjectType 키 자격 증명 모음 개체의 유형: 인증서, 비밀 또는 키
IsComplianceCheck 야간 감사 중에 평가가 발생한 경우 True, 리소스 만들기 또는 업데이트 중에 평가가 발생한 경우 false
AssignmentId 정책 할당의 ID
AssignmentDisplayName 정책 할당의 친숙한 이름
DefinitionId 할당에 대한 정책 정의 ID
DefinitionDisplayName 할당에 대한 정책 정의의 친숙한 이름
결과 정책 평가 결과
ExpressionEvaluationDetails 정책 평가 중에 수행된 평가에 대한 세부 정보
ExpressionValue 정책 평가 중에 지정된 필드의 실제 값
TargetValue 지정된 필드의 예상 값

자주 묻는 질문

Azure 정책에 의해 차단된 Key Vault 복구

이유 중 하나는 구독(또는 관리 그룹)에 복구를 차단하는 정책이 있다는 것일 수 있습니다. 수정 방법은 자격 증명 모음을 복구할 때 적용되지 않도록 정책을 조정하는 것입니다.

기본 제공 정책으로 인해 복구에 대한 오류 유형 RequestDisallowedByPolicy가 표시될 경우 가장 최근에 업데이트된 버전을 사용하고 있는지 확인합니다.

사용자 논리를 사용자 지정 정책을 만든 경우 소프트 삭제를 요구하는 데 사용할 수 있는 정책의 부분적인 예제는 다음과 같습니다. 소프트 삭제된 자격 증명 모음의 복구는 자격 증명 모음을 만들거나 업데이트할 때와 동일한 API를 사용합니다. 그러나 자격 증명 모음의 속성을 지정하는 대신, “recover”라는 값이 있는 단일 “createMode” 속성이 있습니다. 자격 증명 모음은 삭제된 모든 속성으로 복원됩니다. 특정 속성이 구성되지 않는 한, 요청을 차단하는 정책은 소프트 삭제된 자격 증명 모음의 복구를 차단합니다. 수정 방법은 정책이 “createMode”가 “recover”인 요청을 무시하게 하는 절을 포함하는 것입니다.

“createMode”가 “recover”가 아닌 경우에만 정책이 적용되도록 하는 절이 있습니다.


    "policyRule": { 
      "if": {
        "allOf": [
          {
            "field": "type",
            "equals": "Microsoft.KeyVault/vaults"
          }, 
          {
            "not": {
              "field": "Microsoft.Keyvault/vaults/createMode",
              "equals": "recover"
            }
          },
          {
            "anyOf": [
              {
                "field": "Microsoft.KeyVault/vaults/enableSoftDelete",
                "exists": "false"
              },
              {
                "field": "Microsoft.KeyVault/vaults/enableSoftDelete",
                "equals": "false"
              }
            ]
          }
        ]
      },
      "then": {
        "effect": "[parameters('effect')]"
      }
    }

Key Vault에서 Azure 정책 할당 삭제 시 대기 시간 발생

Microsoft.KeyVault.Data: 삭제된 정책 할당은 적용을 중지하는 데 최대 24시간이 걸릴 수 있습니다.

완화 방법: 정책 할당의 효과를 ‘Disabled’로 업데이트합니다.

ARM 템플릿을 통한 비밀을 만들 때 정책 평가가 누락됨

비밀 생성을 평가하는 데이터 평면 정책은 비밀을 만들 때 ARM 템플릿을 통해 만든 비밀에 적용되지 않습니다. 24시간 후에 자동화된 규정 준수 검사가 발생하고 규정 준수 결과를 검토할 수 있습니다.

다음 단계