如何使用蓝图将访问策略分配给 Azure Key Vault

How to assign Access Policies to an Azure Key Vault using Blueprints

我正在通过 Azure 蓝图创建密钥保管库:创建时没有问题。 问题是,为了访问 Key Vault(列出它、放置或获取值)必须配置访问策略。

使用 ARM 模板,我可以插入如下部分:

"accessPolicies": [
                    {
                        "tenantId": "22222222-3333-4444-aaaa-eeeeeeeeeeee",
                        "objectId": "77777777-6666-4444-8888-111111111111",
                        "permissions": {
                            "keys": [
                                "Get",
                                ...
                                "Restore"
                            ],
                            "secrets": [
                                "Get",
                                ...
                                "Restore"
                            ],
                            "certificates": []
                        }
                    },

但我需要有一个 TenantId 和一个 ObjectId 来硬编码,或者作为参数获取,这不是正确的方法。 不幸的是,我找不到将这些访问策略分配给 Key Vault 的方法,否则 Key Vault 本身就无法使用,除非手动设置这些设置(并在每次升级蓝图时删除它们)。

是否有以正确方式执行此操作的指南或最佳实践?

您可以使用 "[subscription().tenantId]" 动态获取 tenantId。参见 official documentation

关于objectId,使用参数通常是中所述的正确方法。 ObjectID 与 ARM 组件不在同一层,因此没有真正的方法可以使用 ARM 动态获取它们。

从@jul_DW的回答开始,我意识到ARM无法简单地设置用户,所以我应该习惯Blueprint中的东西。 事实上,Blueprint 的主要功能之一是 Role Assignment.

要使用此方法,我们需要为 Key Vault 启用 RBAC,但这在 ARM 模板本身中很容易完成:

   ...
   "type": "Microsoft.KeyVault/vaults",
   "properties": {
     ...
     "enableRbacAuthorization": true,
     ...
   }

启用 RBAC 后,ARM 模板应远离分配权限,应使用蓝图中的角色分配功能。

就我而言,我为所需的用户组分配了一个 Key Vault Administrator 角色,该角色可以作为参数指示。这样ARM模板就尽可能简单了,同时我们在各种环境下给不同的用户分配角色也有很大的灵活性。