当前位置: 首页 > 知识库问答 >
问题:

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

宰父单弓
2023-03-14

我正在寻求在Azure DevOps中的ARM部署中集成密钥库的最佳方法。

例如,部署一个应用程序服务并创建一个托管服务标识,这样它就可以从密钥库中获取预先存在的数据库的机密。

1)在Azure portal中,我手动为App服务创建了一个新的服务主体,在访问策略中使用“get”和“list”权限。

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

3)我已经在DevOps中创建了一个变量组,里面有相关的密钥库秘密。

提前感谢您的协助。

共有1个答案

干善
2023-03-14

如果您正在使用MSI,建议在ARM模板中通过将

  "identity": {
    "type": "SystemAssigned"
  },

在定义应用程序服务时。这将在每次部署时重新创建MSI。它将被命名为相同的,但在每次部署后,它将在AD中有不同的指纹。对于密钥库来说,这是非常好的。

在您的密钥库ARM模板中(如果不是全部在同一个模板中),访问策略可以通过以下方式引用MSI:

  "tenantID": "[subscription().tenantId]",
        "objectId": "[reference(resourceId('Microsoft.Web/sites', INSERT APP SERVICE NAME), '2018-02-01', 'Full').identity.principalId]",

如果使用此方法,请确保应用程序服务配置依赖于密钥库和机密(如果在ARM模板中引用机密),访问策略依赖于密钥库和应用程序服务创建,并且将创建的任何机密设置为依赖于密钥库,以确保以正确的顺序进行分配。

 类似资料:
  • 我有一个在Azure VM中托管的php应用程序,在密钥库中有一些秘密。我已经设置了托管身份并获得了进入保险库的权限。 Azure SDK for php不支持密钥库,所以我使用REST接口。 我的问题是当在本地运行时,即我的代码在桌面上以VSCode运行时,我不能调用AIMS来获取令牌,因为我在本地机器上没有托管标识。 我只能想到两个选择: null 请注意,Visual Studio提供了Az

  • 我刚刚在AKS群集中设置了托管标识,以使用Azure Key Vault资源进行身份验证,使用以下指南:https://dev.to/vivekanandrapaka/access-secrets-from-akv-using-managed-identities-for-aks-91p 在指南中,我们在VMS中设置了系统分配的托管标识。然后,我们将VMS应用程序添加到keyvault中的访问策略

  • 我们有一个web api(.NET 5),可以访问Azure KeyVault中的一些秘密 在local machine for development中,由于我是新创建的vault的所有者,因此我的电子邮件具有访问keyvault的权限。 因此我选择了我的账户-- 我有下面的代码从Keyvault获取机密,并通过配置访问,就像访问appsettings值一样。 我们在服务层和控制器层访问像_co

  • 我试图用和部署一个密钥存储库,并在azure devops中创建了一个包含所有秘密的变量组,我在参数文件中使用了以下参数,但是当部署这个参数时,秘密值将存储为$(secret),而不是实际存储在azure devops任务组中的密码。 这是我在密钥库模板中得到的:

  • 我在Azure App Service中部署了一个spring boot应用程序,该应用程序使用用户管理的身份访问Azure Key Vault。 我遵循了以下提到的步骤: 创建了用户管理标识 在Azure app Service中部署了spring boot app 通过身份选项将新创建的用户管理身份添加到应用程序服务中 在应用程序服务中IAM的角色分配下添加用户托管标识为所有者角色 创建Azu

  • 每个环境(例如生产、测试等)都有一个密钥库 全局使用一个密钥库。 如果我想使用ARM模板自动创建Azure资源,那么第二种方法似乎更好。但是,将测试机密和生产机密存储在一起可能会导致错误发生,除非您对机密名称使用某种命名方案。