Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure DevOps-ARM部署-密钥库和托管身份_Azure_Azure Devops_Azure Keyvault - Fatal编程技术网

Azure DevOps-ARM部署-密钥库和托管身份

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

我正在寻求在Azure DevOps中集成ARM部署中的关键Vault的最佳方法

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

1) 在Azure门户中,我为应用程序服务手动创建了一个新的服务主体,在访问策略中具有“Get”和“List”权限

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

3) 我在DevOps中创建了一个变量组,其中包含相关的关键Vault机密

4) 在我的应用程序服务ARM模板中,我参考了变量参数引用了服务标识

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

每当我需要将新服务部署到环境中时(比如现在我想要部署API),我是否需要在Azure中手动创建另一个托管标识以用于密钥Vault访问,或者是否有方法将其创建为API服务初始部署的一部分


提前感谢您的帮助。

如果您使用的是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,谢谢,我已使用此选项以及设置此选项时所需的其他依赖项更新了答案。