gpt4 book ai didi

Azure ARM 在复制 block 中部署具有多个访问策略的 keyVault

转载 作者:行者123 更新时间:2023-12-03 00:55:20 25 4
gpt4 key购买 nike

我正在尝试基于数组中的 objectIds 部署具有多个 accessPolicies 的 Azure KeyVault。我想使用复制 block ,因为将来可能会添加更多 Id,并且我不想在模板中多次复制整个 block ,而是将它们作为参数列表传递。

我无法在 KeyVault/vaults 资源内添加 accessPolicies 的复制 block ,因为它需要多个 keyVault 而不是多个 accessPolicies。这就是为什么我将 KeyVault/vaults/accessPolicies 作为顶级资源,并拥有自己的复制 block - 位于 this documentation 之后.

但是,现在我遇到了命名 accessPolicies block 的问题:根据 this documentation我需要在parent-keyVault-resource之后命名accessPolicies block ,并使用扩展名/add - 但ARM还提示我无法拥有多个资源相同的名称

我尝试将 accessPolicies block 的名称更改为:

  • concat('/add/', copyIndex()) -> 错误:段长度不正确
  • concat('/add', copyIndex()) -> 错误:提供的 concat 参数无效。所有参数都必须是数组,或者全部参数都必须不是数组

我已经不知道如何将复制 block 与 accessPolicies 结合使用作为顶级资源。有什么想法可以解决这个问题吗?

JSON:

"parameters":{
"objectIdList": {
"type": "array"
}
},

"variables": {
"keyVaultName" : "[....]"
},

"resources": [
{
"type": "Microsoft.KeyVault/vaults",
"name": "[variables('keyVaultName')]",
"location": "[resourceGroup().location]",
"apiVersion": "2019-09-01",
"properties": {
"sku": {
"family": "A",
"name": "standard"
},
"tenantId": "[subscription().tenantId]",
"enableRbacAuthorization": false,
"accessPolicies": [
],
"publicNetworkAccess": "Enabled",
"networkAcls": {
"defaultAction": "Allow",
"bypass": "AzureServices"
}
},


{
"type": "Microsoft.KeyVault/vaults/accessPolicies",
"apiVersion": "2019-09-01",
"name": "[concat(variables('keyVaultName'), '/add')]",
"properties": {
"accessPolicies": [
{
"objectId": "[parameters('objectIdList')[copyIndex()]]",
"permissions": {
"certificates": [ "all" ],
"keys": [ "all" ],
"secrets": [ "all" ],
"storage": [ "all" ]
},
"tenantId": "[subscription().tenantId]"
}
]
},
"copy": {
"name": "accessPolicies",
"count": "[length(parameters('objectIdList'))]"
},
"dependsOn": [
"[variables('keyVaultName')]"
]
}

最佳答案

15 分钟后找到了解决方案...还有另一种 copy block 语法可以在此处使用。

我只需/add一个顶级accessPolicies资源,其中包含多个策略,并使用带有accessPolicies的复制 block 作为properties block 中的 name 来迭代我的数组。

JSON 解决方案:

{
"type": "Microsoft.KeyVault/vaults/accessPolicies",
"apiVersion": "2019-09-01",
"name": "[concat(variables('keyVaultName'), '/add')]",
"properties": {
"copy": [
{
"name": "accessPolicies",
"count": "[length(parameters('objectIdList'))]",
"input": {
"objectId": "[parameters('objectIdList')[copyIndex('accessPolicies')]]",
"permissions": {
"certificates": [ "all", "purge" ],
"keys": [ "all", "purge" ],
"secrets": [ "all", "purge" ],
"storage": [ "all" ]
},
"tenantId": "[subscription().tenantId]"
}
}
]
},
"dependsOn": [
"[variables('keyVaultName')]"
]
}

关于Azure ARM 在复制 block 中部署具有多个访问策略的 keyVault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70830810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com