Azure Kubernetes-Java Spring应用程序和托管身份以访问密钥库吗?

时间:2020-09-10 11:46:40

标签: azure kubernetes azure-active-directory azure-keyvault azure-managed-identity

我正在尝试对java spring应用程序进行Docker化并将其部署在Azure kubernetes中。该应用程序已连接到数据库,当前正在从配置文件中读取连接字符串。

由于此应用程序将被Docker化并部署在AKS上,因此我想使用托管身份从Azure密钥保管库读取连接字符串。

是否有任何样本可以证明上述情况?

1 个答案:

答案 0 :(得分:2)

您可以将连接存储为密钥库机密,然后使用java sdk进行获取。

确保您拥有added your MSI(managed identity) to the keyvault access policy,然后使用下面的代码。

1。Create secret client

它使用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。Retrieve a secret

KeyVaultSecret secret = secretClient.getSecret("<secret-name>");
System.out.printf("Retrieved secret with name \"%s\" and value \"%s\"%n", secret.getName(), secret.getValue());

有关更多详细信息,请参见-Azure Key Vault Secret client library for Java - Version 4.2.0