如何通过 ARM 模板将访问策略添加到不同资源组中的 Keyvault
How to add Access Policy to a Keyvault in different Resource Group through ARM Templates
我有 3 个应用共享 1 个密钥库。所以我决定创建 4 个 RG。 3 个 RG 用于 3 个应用程序,1 个 RG 用于 keyvault 和其他公共资源。
一切正常。我可以通过自己的 ARM 模板创建 3 个应用程序,通过它自己的 ARM 模板创建 Keyvault。
因此,当应用程序资源被配置时,我想通过 ARM 模板在 keyvault 中为该应用程序添加访问策略。
{
"apiVersion": "2018-05-01",
"name": "accesspolicies_deployment",
"resourceGroup": "Common-RG",
"type": "Microsoft.Resources/deployments",
"dependsOn": [],
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"variables": {},
"resources": [
{
"type": "Microsoft.KeyVault/vaults/accessPolicies",
"name": "[concat('kvdevwus', '/add')]",
"apiVersion": "2018-02-14",
"properties": {
"accessPolicies": [
{
"tenantId": "[reference(variables('website'),'2018-02-01','Full').identity.tenantId]",
"objectId": "[reference(variables('website'),'2018-02-01','Full').identity.principalId]",
"permissions": {
"keys": [
"all"
],
"secrets": [
"all"
],
"certificates": [
"all"
],
"storage": [
"all"
]
}
}
]
}
}
],
"outputs": {
"principalId": {
"type": "string",
"value": "[reference(variables('website'),'2018-02-01','Full').identity.principalId]"
}
}
}
}
}
我在 app
s 模板中使用上述模板。但是出现 Resource Not Found
错误。
是设计本身有问题还是我遗漏了什么?
必须查看更多代码才能确定,但我怀疑您无法通过内联部署执行您想要的操作,您必须使用链接模板。我们正在努力解决该问题,但尚不可用。
我认为您缺少 accesspolicies_deployment 资源中的 "dependsOn": []。我有和你一样的 set-up 我在一个公共资源组中有密钥保管库,在不同的资源中有我的 Web 应用程序。
在我创建网站的 ARM 模板中,我还添加了 accesspolicies_deployment 但添加了 "dependsOn": [webapp01] 以确保它首先创建的网站和创建 keyvalut 访问策略之前创建的身份
我有 3 个应用共享 1 个密钥库。所以我决定创建 4 个 RG。 3 个 RG 用于 3 个应用程序,1 个 RG 用于 keyvault 和其他公共资源。
一切正常。我可以通过自己的 ARM 模板创建 3 个应用程序,通过它自己的 ARM 模板创建 Keyvault。
因此,当应用程序资源被配置时,我想通过 ARM 模板在 keyvault 中为该应用程序添加访问策略。
{
"apiVersion": "2018-05-01",
"name": "accesspolicies_deployment",
"resourceGroup": "Common-RG",
"type": "Microsoft.Resources/deployments",
"dependsOn": [],
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"variables": {},
"resources": [
{
"type": "Microsoft.KeyVault/vaults/accessPolicies",
"name": "[concat('kvdevwus', '/add')]",
"apiVersion": "2018-02-14",
"properties": {
"accessPolicies": [
{
"tenantId": "[reference(variables('website'),'2018-02-01','Full').identity.tenantId]",
"objectId": "[reference(variables('website'),'2018-02-01','Full').identity.principalId]",
"permissions": {
"keys": [
"all"
],
"secrets": [
"all"
],
"certificates": [
"all"
],
"storage": [
"all"
]
}
}
]
}
}
],
"outputs": {
"principalId": {
"type": "string",
"value": "[reference(variables('website'),'2018-02-01','Full').identity.principalId]"
}
}
}
}
}
我在 app
s 模板中使用上述模板。但是出现 Resource Not Found
错误。
是设计本身有问题还是我遗漏了什么?
必须查看更多代码才能确定,但我怀疑您无法通过内联部署执行您想要的操作,您必须使用链接模板。我们正在努力解决该问题,但尚不可用。
我认为您缺少 accesspolicies_deployment 资源中的 "dependsOn": []。我有和你一样的 set-up 我在一个公共资源组中有密钥保管库,在不同的资源中有我的 Web 应用程序。
在我创建网站的 ARM 模板中,我还添加了 accesspolicies_deployment 但添加了 "dependsOn": [webapp01] 以确保它首先创建的网站和创建 keyvalut 访问策略之前创建的身份