你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本文介绍如何排查在设置 Key Vault 的 Azure Policy 时可能发生的常规错误,并建议解决这些问题的方法。
关于 Key Vault 的 Azure 策略
Azure Policy 是一种治理工具,可用于大规模审核和管理 Azure 环境。 它允许你在 Azure 资源上放置防护措施,以确保它们符合分配的策略规则。 借助 Azure Policy,可以执行 Azure 环境的审核、实时强制实施和修正。 审核结果在符合性仪表板中提供,可在其中查看符合性和不符合资源和组件的详细细分。
伐木业
为了监视策略评估的执行方式,可以查看 Key Vault 日志。 还可以为 Azure Key Vault 启用日志记录,该日志记录将信息保存在你提供的 Azure 存储帐户中。 有关分步指南,请参阅如何启用 Key Vault 日志记录。
启用记录时,会自动创建名为 AzurePolicyEvaluationDetails 的新容器,以收集指定存储帐户中与策略相关的记录信息。
注释
应严格控制对监视数据(尤其是日志文件)的访问,因为它们可以包含敏感信息。 了解如何应用 内置监视 Azure 角色 和限制访问权限。
每个 Blob 存储为文本,并格式化为 JSON Blob。
让我们看看密钥策略的示例日志条目: 密钥应设置过期日期。 此策略评估密钥保管库中的所有密钥,并标记未将过期日期设置为不符合的密钥。
{
"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"
}
]
}
]
}
下表列出了字段的名称和描述:
字段名 | DESCRIPTION |
---|---|
ObjectName | 对象的名称 |
ObjectType | 密钥保管库对象的类型:证书、机密或密钥 |
IsComplianceCheck | 如果评估发生在夜间审核中,则为 true;如果评估在资源创建或更新期间发生,则为 false。 |
AssignmentId | 策略分配的 ID |
AssignmentDisplayName | 策略分配的易记名称 |
DefinitionId | 用于分配的策略定义的 ID |
DefinitionDisplayName | 用于分配的策略定义的易记名称 |
结果 | 策略评估的结果 |
表达式评估详细信息 | 有关在策略评估期间执行的评估的详细信息 |
ExpressionValue | 策略评估期间指定字段的实际值 |
TargetValue | 指定字段的预期值 |
常见问题
Key Vault 恢复被 Azure 策略阻止
原因之一可能是订阅(或管理组)有阻止恢复的策略。 解决方法是调整该策略,使其在恢复保管库时不应用。
如果在恢复时看到因内置策略导致的错误类型 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 Policy 分配删除延迟
Microsoft.KeyVault.Data:已删除的策略分配最多可能需要 24 小时才能停止强制执行。
缓解:将策略分配的效果更新为“已禁用”。
通过 ARM 模板创建机密时缺少策略评估
用于评估创建机密的数据平面策略不适用于在创建机密时通过 ARM 模板创建的机密。 24 小时后,将进行自动合规性检查,并可以查看合规结果。