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

使用托管身份从JAVA Azure App服务访问Azure密钥库

穆高澹
2023-03-14

我在Azure App Service中部署了一个spring boot应用程序,该应用程序使用用户管理的身份访问Azure Key Vault。

我遵循了以下提到的步骤:

  1. 创建了用户管理标识
  2. 在Azure app Service中部署了spring boot app
  3. 通过身份选项将新创建的用户管理身份添加到应用程序服务中
  4. 在应用程序服务中IAM的角色分配下添加用户托管标识为所有者角色
  5. 创建Azure密钥库并向其添加秘密
  6. 在新创建的密钥存储库的访问策略下添加了用户托管标识,并在机密权限中使用获取、列表、设置权限部分
  7. 将用户托管标识添加为密钥存储库中IAM的角色分配下的所有者角色

我从应用程序访问密钥存储库的Java代码如下所示:

MSICredentials msiCredentials = new MSICredentials(AzureEnvironment.AZURE);
msiCredentials = msiCredentials.withClientId("client_id");
KeyVaultClient keyVaultClient = new KeyVaultClient(msiCredentials);
SecretBundle secretBundle = keyVaultClient.getSecret("key_vault_base_url","secret_name");

有人能在设置上指导我摆脱这个问题吗?我是否缺少任何配置?任何指针都会很有帮助。

共有1个答案

龙华翰
2023-03-14

使用系统管理标识而不是用户管理标识解决了这个问题,因为用户管理标识目前似乎不适合Azure KeyVault。

在GitHub中创建了一个repo,其中包含使用系统托管标识从AppService连接到Azure资源的示例代码。repo链接如下所示-Azure_AppService_ManagedIdentity

 类似资料:
  • 我正在寻求在Azure DevOps中的ARM部署中集成密钥库的最佳方法。 例如,部署一个应用程序服务并创建一个托管服务标识,这样它就可以从密钥库中获取预先存在的数据库的机密。 1)在Azure portal中,我手动为App服务创建了一个新的服务主体,在访问策略中使用“get”和“list”权限。 2)在我的DevOps项目中,在项目设置下,我创建了一个服务连接。 3)我已经在DevOps中创建

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

  • null 身份验证工作流会是什么样子?有任何可用的例子吗?我们可以通过使用MSAL来实现吗? 假设我们已经创建了一个Azure密钥库,并在该库中保存了一些秘密。如何在Windows 10下运行的桌面应用程序中实现以下功能: 当前Windows用户是Azure AD组GroupA的一部分,位于Azure密钥库的同一承租人之下。 当当前用户从同一用户会话启动桌面应用程序时,应用程序可以访问所述密钥库中

  • 我无法获得足够的权限来使用我的应用程序访问Azure Key Vault(而不是通过用户登录)。以下是我的设置: 我已经给了我的名为“keyvault”的应用程序所有的许可。 我的应用程序注册了Azure Active Directory。我已经允许它进入密钥库:

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