You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure内置KeyVault证书策略转自定义时provider不存在报错如何解决

问题根本原因

该报错由两个配置错误共同导致:

  1. 策略定义的mode配置不符合要求:Microsoft.KeyVault.Data是Key Vault数据平面专属的资源提供程序,仅支持Microsoft.KeyVault.Data模式,你当前配置的All模式仅适配Azure资源管理器平面的资源别名,无法识别数据平面的提供程序标识。
  2. 字段别名修改错误:validityInMonths是证书专属属性,仅存在于Microsoft.KeyVault.Data/vaults/certificates/properties.validityInMonths路径下,你修改为secrets相关路径后,该别名本身就不存在。

修复步骤

  • 第一步:将azurerm_policy_definition资源中的mode参数值从All改为Microsoft.KeyVault.Data
  • 第二步:还原内置策略JSON中40、43行的字段配置,改回原始的Microsoft.KeyVault.Data/vaults/certificates/properties.validityInMonths
  • 第三步:重新执行terraform apply即可完成策略创建

修复后的核心配置示例

resource "azurerm_policy_definition" "CertificatesShouldHaveSpecifiedMaximumValidityPeriod" {
  name         = "CertificatesShouldHaveSpecifiedMaximumValidityPeriod"
  policy_type  = "Custom"
  # 仅此处修改为数据平面专属模式,其余配置保持不变
  mode         = "Microsoft.KeyVault.Data"
  display_name = "CertificatesShouldHaveSpecifiedMaximumValidityPeriod"
  description  = "Manage your organizational compliance requirements by specifying the maximum amount of time that a certificate can be valid within your key vault."
  metadata     = jsonencode(local.json_keyvault_certmaxvalidityperiod.properties.metadata)
  policy_rule  = jsonencode(local.json_keyvault_certmaxvalidityperiod.properties.policyRule)
  parameters   = <<PARAMETERS
    {
        "effect" : {
            "type": "string",
            "metadata": {
                "description": "Enable or disable the execution of the policy",
                "displayName": "Effect"
            }
        },
        "maximumValidityInMonths": {
            "type": "integer",
            "metadata": {
                "description": "The limit to how long a certificate may be valid for. Certificates with lengthy validity periods aren't best practice.",
                "displayName": "The maximum validity in months"
            }
        }
    }
  PARAMETERS
}

额外注意事项

  • 该策略为数据平面策略,分配后最长需要15分钟完成生效,即可扫描存量证书的合规状态
  • 需提前确认对应订阅已完成Microsoft.KeyVault资源提供程序的注册,否则仍可能出现别名识别错误
  • 若部署在Azure边缘区域,可先通过Azure Policy别名查询接口确认对应区域是否已支持该数据平面别名

内容的提问来源于stack exchange,提问作者Big Bear Brian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 11:36:04