Azure DevOps-ARM部署-关键保管库和托管身份

时间:2019-12-17 04:53:08

标签: azure azure-devops azure-keyvault

我正在寻找一种更好的方法,以将Key Vault集成到Azure DevOps中的ARM部署中。

例如,部署应用程序服务并创建托管服务身份,以便它可以从现有数据库的密钥库中获取机密。

1)在Azure门户中,我已经为访问策略中具有“获取”和“列表”权限的App服务手动创建了新的服务主体。

2)在我的DevOps项目的项目设置下,我创建了服务连接。

3)我已经在DevOps中创建了具有相关密钥库秘密的变量组。

4)在我的App Service ARM模板中,我已参考变量参数引用了服务标识。

这是将Key Vault与DevOps部署集成的正确方法吗?

每当我需要将新服务部署到环境中(例如现在我要部署API)时,是否需要在Azure中为Key Vault Access手动创建另一个托管身份,或者是否可以通过以下方式创建它: API服务的初始部署的一部分?

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

如果您使用的是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。

如果使用此选项,请确保使App Service配置取决于密钥保管库和机密(如果引用了ARM模板中的机密),则访问策略取决于密钥保管库和App Service的创建以及所创建的任何机密集还要依靠Key Vault来确保分配以正确的顺序进行。