我正在寻求在Azure DevOps中将Key Vault集成到ARM部署中的最佳方法的明确说明。
例如,部署应用程序服务并创建托管服务身份,以便它可以从现有数据库的密钥库中获取机密。
1]在Azure门户中,我为访问权限策略中具有“获取”和“列表”权限的App服务手动创建了一个新的服务主体。
2)在我的DevOps项目的项目设置下,我创建了服务连接。
3)我在DevOps中创建了具有相关密钥库机密的变量组。
4)在我的App Service ARM模板中,我已参考变量参数引用了服务标识。
这是将Key Vault与DevOps部署集成的正确方法吗?
[每当我需要将新服务部署到环境中时(例如现在我要部署API),是否都需要在Azure中为Key Vault Access手动创建另一个托管身份,或者是否可以将其作为一部分来创建API服务的初始部署是什么?
谢谢您的帮助。
如果使用的是MSI,建议通过放置在ARM模板中进行设置
"identity": {
"type": "SystemAssigned"
},
在定义应用程序服务时。这将在每次部署时重新创建MSI。每次部署后,其名称将相同,但在AD中将具有不同的指纹。出于Key Vault的目的,这非常好。
在Key Vault ARM模板中(如果不是同一模板中的全部),访问策略可以通过以下方式引用MSI:
"tenantID": "[subscription().tenantId]",
"objectId": "[reference(resourceId('Microsoft.Web/sites', INSERT APP SERVICE NAME), '2018-02-01', 'Full').identity.principalId]",
这将引用由App Service部署创建的ID。