gpt4 book ai didi

Azure Keyvault 通过 ARM 添加功能 MSI

转载 作者:行者123 更新时间:2023-12-04 15:07:15 26 4
gpt4 key购买 nike

我认为托管服务身份是一个很棒的概念,我喜欢 keyvault。但是:

当我使用增量资源组部署的脚本时:

为简洁起见,对示例进行了修改

{
"type": "Microsoft.KeyVault/vaults",
"name": "[parameters('keyvaultName')]",
"apiVersion": "2015-06-01",
"properties": {
"accessPolicies": [
{
"objectId": "[reference(parameters('functionAppName'), '2016-08-01', 'Full').identity.principalId]",
"permissions": {
"keys": [],
"secrets": [
"Get"
]
}
}
]
},
"dependsOn": [
"[resourceId('Microsoft.Web/sites', parameters('functionAppName'))]"
]
},
{
"apiVersion": "2016-08-01",
"type": "Microsoft.Web/sites",
"name": "[parameters('functionAppName')]",
"kind": "functionapp",
"identity": {
"type": "SystemAssigned"
},
}

它部署成功并将 MSI 添加到 keyvault,但是 -

它破坏了已经分配的访问策略。 Arm 是否可以保留 accessPolicies 并仅添加/更新匹配的策略?

如果没有这个,就不可能使用 MSI 完整地编写部署脚本并将主体分配给 keyvault。

我错过了什么吗?

最佳答案

作为 blog post 的作者,我将发布每个模组的详细信息:

当您部署名为“add”的 Microsoft.KeyVault/vaults/accessPolicies 类型的资源时,它将合并到您的更改中。创建这种特殊的子资源类型是为了允许托管服务身份方案,在该方案中,您在部署 VM 之前不知道 VM 的身份,并且希望在部署期间授予该身份对保管库的访问权限。

增量部署可以与此 json 一起使用来实现目标:

{
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vaultName": {
"type": "string"
}
},
"resources": [
{
"type": "Microsoft.KeyVault/vaults/accessPolicies",
"name": "[concat(parameters('vaultName'), '/add')]",
"apiVersion": "2016-10-01",
"properties": {
"accessPolicies": [
{
"tenantId": "dfe47ca8-acfc-4539-9519-7d195a9e79e4",
"objectId": "5abe9358-10ae-4195-ba23-d34111430329",
"permissions": {
"keys": ["all"],
"secrets": ["all"],
"certificates": ["all"],
"storage": ["all"]
}
}
]
}
}
],
"outputs": {
}
}

关于Azure Keyvault 通过 ARM 添加功能 MSI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47667050/

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