gpt4 book ai didi

java - 带 Spring 启动的 Keyvault MSI : How to config keyvault to use Azure cli credentials instead of managed identity while running on local?

转载 作者:行者123 更新时间:2023-12-03 03:48:43 30 4
gpt4 key购买 nike

我创建了一个简单的 Spring Boot 应用程序来从 keyvault 检索 secret 。我添加了以下依赖项来解决,

<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>azure-spring-boot-starter-keyvault-secrets</artifactId>
<version>3.5.0</version>
</dependency>

并在 application.properties 中添加以下内容

azure.keyvault.enabled=true
azure.keyvault.uri=<URL>

#keys
mySecretProperty=secret

和我的主要应用程序,

@SpringBootApplication
public class KeyVaultSample implements CommandLineRunner {

@Value("${mySecretProperty}")
private String mySecretProperty;

public static void main(String[] args) {
SpringApplication.run(KeyVaultSample.class, args);
}

@Override
public void run(String... args) {
System.out.println("property your-property-name value is: " + mySecretProperty);
}
}

但是每次我尝试在本地运行上述应用程序时,它都会尝试使用 ManagedIdentityCredential 进行连接。因此,我添加了一个配置类,用于使用 AzureCliCredential 为 SecretClient 创建 bean,但结果也是一样的。

我的配置类,

@Configuration
public class AppConfiguration {

@Bean
public SecretClient secretClient() {
AzureCliCredential az = new AzureCliCredentialBuilder().build();
SecretClient sec = new SecretClientBuilder().vaultUrl("<url>")
.credential(az).buildClient();
return sec;
}
}​

我正在寻找可以在本地使用/测试此 keyvault 的方法。我是否可以在属性文件中放入任何配置,使其使用 AzureCliCredential 而不是 ManagedIdentityCredential?

最佳答案

azure-spring-boot-starter-keyvault-secrets使用 MSI/托管身份。

如果您想使用 Azure CLI 进行身份验证,只需使用 azure-identityazure-security-keyvault-secrets .

public void getSecretWithAzureCliCredential() {
AzureCliCredential cliCredential = new AzureCliCredentialBuilder().build();

// Azure SDK client builders accept the credential as a parameter
SecretClient client = new SecretClientBuilder()
.vaultUrl("https://{YOUR_VAULT_NAME}.vault.azure.net")
.credential(cliCredential)
.buildClient();

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

}

关于java - 带 Spring 启动的 Keyvault MSI : How to config keyvault to use Azure cli credentials instead of managed identity while running on local?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67965842/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com