1

我正在通过 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 本身,除非手动进行这些设置(并在每次升级蓝图时删除它们)。

是否有指导方针或最佳实践以正确的方式做到这一点?

4

2 回答 2

1

tenantId您可以动态使用"[subscription().tenantId]". 见官方文档

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

于 2021-11-11T10:56:28.200 回答
0

从@jul_DW 的回答开始,我意识到 ARM 无法轻松设置用户,所以我应该习惯蓝图中的一些东西。事实上,蓝图的关键特性之一是角色分配

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

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

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

在我的例子中,我为所需的用户组分配了Key Vault 管理员角色,可以将其指示为参数。通过这种方式,ARM 模板保持尽可能简单,同时我们在为各种环境中的不同用户分配角色方面具有很大的灵活性。

于 2021-11-11T13:55:10.967 回答