是否可以通过ARM模板使用数组类型的参数为多个对象ID设置密钥库访问策略?
"policies": {
"value": [
{
"objectId": "<object-id-1>",
"permissions": ["get", "set", "list"]
},
{
"objectId": "<object-id-2>",
"permissions": ["get", "set", "list"]
}
]
}
我需要将密钥库访问策略设置为两个对象ID,如上所示。这是我尝试过的:
我看到以下错误:
答案 0 :(得分:3)
好像您快到了。这是对您发布的内容的修改。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"keyVaultName": {
"type": "string"
},
"policies": {
"type": "array",
"metadata": {
"description": "Array of object ids and permissions."
}
}
},
"resources": [
{
"type": "Microsoft.KeyVault/vaults/accessPolicies",
"name": "[concat(parameters('keyVaultName'), '/add')]",
"apiVersion": "2019-09-01",
"properties": {
"copy": [
{
"name": "accessPolicies",
"count": "[length(parameters('policies'))]",
"input": {
"tenantId": "[parameters('policies')[copyIndex('accessPolicies')].tenantId]",
"objectId": "[parameters('policies')[copyIndex('accessPolicies')].objectId]",
"permissions": {
"keys": "[parameters('policies')[copyIndex('accessPolicies')].keys]",
"secrets": "[parameters('policies')[copyIndex('accessPolicies')].secrets]",
"certificates": "[parameters('policies')[copyIndex('accessPolicies')].certificates]"
}
}
}
]
}
}
]
}
这是我在部署调用中使用的PowerShell变量。
$parameters = @{
'keyVaultName' = 'kv62443460'
'policies' = @(
@{
'tenantId' = '<GUID>'
'objectId' = '<GUID>'
'keys' = @()
'secrets' = @('get')
'certificates' = @()
},
@{
'tenantId' = '<GUID>'
'objectId' = '<GUID>'
'keys' = @()
'secrets' = @()
'certificates' = @('list')
}
)
}