Azure DevOps-ARM部署-密钥库和托管身份
我正在寻求在Azure DevOps中集成ARM部署中的关键Vault的最佳方法 例如,部署应用程序服务并创建托管服务标识,以便它可以从现有数据库的密钥库中获取机密 1) 在Azure门户中,我为应用程序服务手动创建了一个新的服务主体,在访问策略中具有“Get”和“List”权限 2) 在项目设置下的DevOps项目中,我创建了一个服务连接 3) 我在DevOps中创建了一个变量组,其中包含相关的关键Vault机密 4) 在我的应用程序服务ARM模板中,我参考了变量参数引用了服务标识 这是将Key Vault与DevOps部署集成的正确方法吗 每当我需要将新服务部署到环境中时(比如现在我想要部署API),我是否需要在Azure中手动创建另一个托管标识以用于密钥Vault访问,或者是否有方法将其创建为API服务初始部署的一部分Azure DevOps-ARM部署-密钥库和托管身份,azure,azure-devops,azure-keyvault,Azure,Azure Devops,Azure Keyvault,我正在寻求在Azure DevOps中集成ARM部署中的关键Vault的最佳方法 例如,部署应用程序服务并创建托管服务标识,以便它可以从现有数据库的密钥库中获取机密 1) 在Azure门户中,我为应用程序服务手动创建了一个新的服务主体,在访问策略中具有“Get”和“List”权限 2) 在项目设置下的DevOps项目中,我创建了一个服务连接 3) 我在DevOps中创建了一个变量组,其中包含相关的关键Vault机密 4) 在我的应用程序服务ARM模板中,我参考了变量参数引用了服务标识 这是将Ke
提前感谢您的帮助。如果您使用的是MSI,建议在ARM模板中通过
"identity": {
"type": "SystemAssigned"
},
在定义应用程序服务时。这将在每次部署时重新创建MSI。它将被命名为相同的,但在每次部署后在AD中有不同的指纹。对于钥匙保险库来说,这是非常好的
在密钥Vault ARM模板中(如果不在同一模板中),访问策略可以通过以下方式引用MSI:
"tenantID": "[subscription().tenantId]",
"objectId": "[reference(resourceId('Microsoft.Web/sites', INSERT APP SERVICE NAME), '2018-02-01', 'Full').identity.principalId]",
这将引用应用程序服务部署正在创建的ID
如果使用此选项,请确保应用程序服务配置取决于密钥库和机密(如果在ARM模板中引用机密),访问策略取决于密钥库和应用程序服务创建,创建的任何机密都要设置为依赖于密钥库,以确保按正确的顺序进行分配。如果您使用的是MSI,建议在ARM模板中通过放置
"identity": {
"type": "SystemAssigned"
},
在定义应用程序服务时。这将在每次部署时重新创建MSI。它将被命名为相同的,但在每次部署后在AD中有不同的指纹。对于钥匙保险库来说,这是非常好的
在密钥Vault ARM模板中(如果不在同一模板中),访问策略可以通过以下方式引用MSI:
"tenantID": "[subscription().tenantId]",
"objectId": "[reference(resourceId('Microsoft.Web/sites', INSERT APP SERVICE NAME), '2018-02-01', 'Full').identity.principalId]",
这将引用应用程序服务部署正在创建的ID
如果使用此选项,请确保应用程序服务配置取决于密钥库和机密(如果在ARM模板中引用机密),访问策略取决于密钥库和应用程序服务创建,创建的任何机密都将取决于密钥库,以确保按正确的顺序进行分配。因此,您不需要直接创建服务原则:您可以创建用户分配标识或创建系统分配标识。这完全取决于您,所以您不需要直接创建服务:您可以创建用户分配标识或创建系统分配标识。真的取决于你我还必须将应用程序服务添加到密钥库的dependsOn列表中,以确保在应用程序服务部署后部署。@juunas,谢谢,我已使用此选项以及设置此选项时所需的其他依赖项更新了答案。我还必须将应用程序服务添加到密钥库的依赖项列表中,以确保在部署应用程序服务后将其部署。@juunas,谢谢,我已使用此选项以及设置此选项时所需的其他依赖项更新了答案。