java - 如何使用 MSI 从 Spring Boot 应用程序连接到 Azure key 保管库以进行本地开发

标签 java azure spring-boot azure-functions azure-keyvault

我正在尝试从本地运行的 Spring Boot 应用程序连接到 Azure KeyVault。在开发过程中,我无法将这些 secret 保存在不同属性或 yaml 中的 keyvault 中,因为我的应用程序将在运行时生成和删除如此多的 secret 和 token ,以保存在 keyvault 中。

我了解我们可以通过您的应用程序注册创建 Azure 服务主体的过程。并使用

azure.keyvault.client-id azure.keyvault.client-key

在 application.properties 中进行连接。

但在我们的示例中可能不允许创建 Azure 服务主体。那么有没有办法从本地运行的 SpringBoot 应用程序使用 MSI 连接到 key 保管库。

使用 MSI_ENDPOINT 和 MSI_SECRET

最佳答案

So is there any way to connect to key vault using MSI from locally running SpringBoot application. using MSI_ENDPOINT and MSI_SECRET

我认为您不能使用 MSI_ENDPOINTMSI_SECRET 在本地获取 token ,它仅在 Web 应用程序在云端发布时有效。

But it may not be allowed to be created Azure service principal in our case.

如您所知,您可以使用服务主体客户端 IDsecret(key) 来访问 keyvault。实际上,当启用Web应用程序的MSI时,它会自动在您的Azure AD租户中创建一个服务主体。所以你可以只使用客户端 ID 和它的 secret 。

导航到门户 -> Azure Active Directory -> 企业应用程序 -> 搜索您的 Web 应用程序名称(选择应用程序类型所有应用程序),然后您将获得客户端ID(应用程序ID)

注意:请记住将服务主体的对象 ID 与您的 Web 应用程序 -> Identity 中的对象 ID 进行检查,确保使用正确的对象 ID。

enter image description here

对于服务主体 key ,您可以通过 powershell 创建它,如下所示(您的帐户需要 AAD 租户中的管理员角色应用程序管理员全局管理员)。

New-AzureADServicePrincipalPasswordCredential -ObjectId <service principal object id>

enter image description here

然后您将能够使用客户端 ID 和 key 访问 keystore 。 java方面的详细可以引用这个link .

关于java - 如何使用 MSI 从 Spring Boot 应用程序连接到 Azure key 保管库以进行本地开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57460223/

相关文章:

node.js - Azure Function v2 文件系统写入不再有效并抛出 4058 无此类文件或目录错误

java - tuProlog - 通过咨询使用多个文件 - 无法让引擎通过咨询加载其他文件(otherFile.pl)

java - 在 onClick 事件后创建对话框

每个索引和第一个索引的 Java 8

json - 用于 JSON 转换的 U-SQL 脚本

java - 如何在rest api中编写自定义验证?

java - 使用 Hibernate 时出现通信异常

azure - 用户流 "Sign in v2"的 AD B2C forceChangePasswordNextLogin 不会启动密码重置并阻止成功登录

java - 在 Weblogic 上使用 Spring 在 REST 中定义自定义错误消息

spring-boot - 从运行 SpringBoot 应用程序的 Pod 连接到 GC Storage