azure - Azure kubernetes - java spring 应用程序和托管标识访问密钥库?
问题描述
我正在尝试 Dockerize java spring 应用程序并将其部署在 Azure kubernetes 中。此应用程序已连接到数据库,当前它从配置文件中读取连接字符串。
由于此应用程序将在 AKS 上进行 Docker 化和部署,因此我想使用托管标识从 Azure Key Vault 读取连接字符串。
是否有任何可用的示例来演示上述场景?
解决方案
您可以将连接存储为 keyvault 机密,然后使用 java sdk 获取它。
确保您已将MSI(托管标识)添加到 keyvault 访问策略,然后使用下面的代码。
1.创建秘密客户端
它用于DefaultAzureCredential
身份验证,不设置环境变量,然后它将使用您的 MSI 自动进行身份验证,您也可以使用ManagedIdentityCredentialBuilder
代替DefaultAzureCredentialBuilder
,指定clientId
您的 MSI。
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.security.keyvault.secrets.SecretClient;
import com.azure.security.keyvault.secrets.SecretClientBuilder;
SecretClient secretClient = new SecretClientBuilder()
.vaultUrl("<your-key-vault-url>")
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
2.找回秘密
KeyVaultSecret secret = secretClient.getSecret("<secret-name>");
System.out.printf("Retrieved secret with name \"%s\" and value \"%s\"%n", secret.getName(), secret.getValue());
有关更多详细信息,请参阅 -适用于 Java 的 Azure Key Vault Secret 客户端库 - 版本 4.2.0
推荐阅读
- azure - Azure Application Insights 云角色名称到 API 管理
- python - 是一种对命令使用前缀和 ping 的方法吗?
- c++ - 从 C++ std::vector 转换的最佳方法是什么
到 Rust Vec ? - php - PHP上传的文件没有去我想要的地方
- linux - 由于 GCC 7,Nvidia Jetson 的 Yocto 失败 - 无法计算目标文件的后缀
- python - 将 2D 元素的大列表覆盖到 3D NumPy 数组 - 内存问题
- r - R - 对 data.table 列的递归
- bash - 为什么我无法访问从“ls”输出中收到的文件?
- thymeleaf - 如何解析th:带有空格的文本到百里香中的选择框?
- sql - 计算最快的 50 公里骑行