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

如何通过Azure Blueprints为Azure Key Vault分配Access Policies

Azure Blueprint 配置Key Vault访问策略的最佳实践

方案1:使用ARM内置函数动态获取值,避免硬编码

不需要在模板中写死TenantId和ObjectId,可通过ARM自带的函数动态拉取当前环境的对应值:

  • TenantId直接通过tenant()函数获取,写法为 "tenantId": "[tenant().tenantId]"
  • 如果要给Blueprint部署用的托管标识分配权限,可通过以下写法动态获取标识的ObjectId,无需手动传参:
    [reference(resourceId('Microsoft.Blueprint/blueprintAssignments', parameters('blueprintAssignmentName')), '2018-11-01-preview').identity.principalId]
    示例配置代码段如下:
"accessPolicies": [
    {
        "tenantId": "[tenant().tenantId]",
        "objectId": "[reference(resourceId('Microsoft.Blueprint/blueprintAssignments', parameters('blueprintAssignmentName')), '2018-11-01-preview').identity.principalId]",
        "permissions": {
            "keys": [
                "Get",
                "List",
                "Create",
                "Restore"
            ],
            "secrets": [
                "Get",
                "List",
                "Set",
                "Restore"
            ],
            "certificates": []
        }
    }
]

方案2:拆分访问策略为独立Blueprint工件

如果需要给多个不同标识分配权限,可将访问策略从Key Vault的基础模板中拆分出来,作为单独的ARM工件挂载到Blueprint下:

  • Key Vault的基础模板中不定义accessPolicies属性,或设置为空数组
  • 单独创建类型为Microsoft.KeyVault/vaults/accessPolicies的ARM模板,每条访问策略可单独作为一个工件,也可以合并为一个批量配置的工件
  • 所有访问策略工件的部署模式设置为增量,Blueprint升级时只会追加配置,不会覆盖已有的访问策略

方案3:保留手动配置的访问策略

如果有必须手动配置的访问策略,需要做两个设置避免Blueprint升级时被清除:

  • Key Vault对应的Blueprint工件部署模式设置为增量
  • Key Vault的ARM模板中完全省略accessPolicies字段,不要定义空数组也不要写任何策略配置,增量部署时ARM不会修改已有的访问策略内容

注意事项

  • 建议将所有需要持久化的访问策略全部纳入Blueprint配置管理,避免出现配置漂移问题
  • 若要给指定用户、用户组或固定服务主体分配权限,可将对应ObjectId设置为Blueprint的安全参数,分配Blueprint时统一填写,参数值会在后续Blueprint升级时自动继承,无需重复输入

内容的提问来源于stack exchange,提问作者Ing. Luca Stucchi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:24:05