Azure kubernetes - java spring 应用程序和托管身份以访问密钥保管库?

Azure kubernetes - java spring app & managed identity to access key vault?

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

由于此应用程序将被 Dockerized 并部署在 AKS 上,我想使用托管标识从 Azure Key Vault 读取连接字符串。

是否有任何示例可以证明上述情况?

您可以将连接存储为 keyvault 机密,然后使用 java sdk 获取它。

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

1.Create secret client

它使用 DefaultAzureCredential to authenticate, don't set the environment vars, then it will use your MSI to authenticate automatically, you can also use ManagedIdentityCredentialBuilder instead of DefaultAzureCredentialBuilder, specify the 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