Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Construção do Spring Cloud Azure PropertySource que contém segredos armazenados nos Segredos do Azure Key Vault.
Configuração de dependência
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>
</dependency>
Ponta
Também fornecemos spring-cloud-azure-starter-keyvault para dar suporte a todos os recursos do Key Vault. Se você optar por usá-lo, spring.cloud.azure.keyvault.enable será a propriedade a ser configurada e o valor padrão será true. Em seguida, você pode usar spring.cloud.azure.keyvault.<keyvault-service>.enable para desabilitar serviços desnecessários.
Uso básico
Se você quiser autenticar por client-id e client-secret, as seguintes propriedades serão necessárias:
Propriedades de configuração
spring:
cloud:
azure:
keyvault:
secret:
property-sources:
- name: key-vault-property-source-1
endpoint: ${ENDPOINT_1}
- name: key-vault-property-source-2
endpoint: ${ENDPOINT_2}
Código Java
@SpringBootApplication
public class SampleApplication implements CommandLineRunner {
@Value("${sampleProperty1}")
private String sampleProperty1;
@Value("${sampleProperty2}")
private String sampleProperty2;
@Value("${samplePropertyInMultipleKeyVault}")
private String samplePropertyInMultipleKeyVault;
public static void main(String[] args) {
SpringApplication.run(SampleApplication.class, args);
}
public void run(String[] args) {
System.out.println("sampleProperty1: " + sampleProperty1);
System.out.println("sampleProperty2: " + sampleProperty2);
System.out.println("samplePropertyInMultipleKeyVault: " + samplePropertyInMultipleKeyVault);
}
}
Uso avançado
Caracteres especiais no nome da propriedade
Os nomes de segredo do Key Vault dão suporte apenas a caracteres em [0-9a-zA-Z-]. Para obter mais informações, consulte a seção nome do cofre
Usar - em vez de . em nomes secretos
. não tem suporte em nomes secretos. Se o aplicativo tiver um nome de propriedade que contenha ., como spring.datasource.url, substitua . por - ao salvar o segredo no Azure Key Vault. Por exemplo, salve spring-datasource-url no Azure Key Vault. Em seu aplicativo, você ainda pode usar spring.datasource.url para recuperar o valor da propriedade.
Nota
Esse método não pode atender a um requisito como spring.datasource-url. Quando você salva spring-datasource-url no Key Vault, há suporte apenas para spring.datasource.url e spring-datasource-url para recuperar o valor da propriedade, mas não há suporte para spring.datasource-url. Para lidar com esse caso, consulte a seção Usar espaços reservados de propriedade.
Usar espaços reservados de propriedade
Por exemplo, suponha que você esteja definindo essa propriedade no arquivo application.properties:
property.with.special.character__=${propertyWithoutSpecialCharacter}
O aplicativo obterá um nome de chave propertyWithoutSpecialCharacter e atribuirá seu valor a property.with.special.character__.
Diferencia maiúsculas de minúsculas
Para habilitar o modo que diferencia maiúsculas de minúsculas, você pode definir a seguinte propriedade:
spring.cloud.azure.keyvault.secret.property-sources[].case-sensitive=true
Não recuperar todos os segredos no Key Vault
Se você armazenou 1000 segredos no Key Vault e só deseja usar 3 deles. Você pode listar os 3 nomes de segredo spring.cloud.azure.keyvault.secret.property-sources[].secret-keys.
Configurando o intervalo de atualização
Por padrão, os segredos em KeyVaultPropertySource serão atualizados a cada 30 minutos. Você pode configurar o horário spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval. Por exemplo: spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval=60m significa atualizar a cada 60 minutos. Defina como 0 para desabilitar a atualização automática.
Prioridade do PropertySource
Se houver chave em vários PropertySources, o que entrará em vigor será decidido pela prioridade.
- Se não houver
SystemEnvironmentPropertySourcena listaPropertySource,KeyVaultPropertySourceterá a prioridade mais alta. - Se houver
SystemEnvironmentPropertySourcena lista dePropertySource,SystemEnvironmentPropertySourceterá prioridade maior queKeyVaultPropertySource, o que significa que você pode usar uma variável de ambiente para substituir o valor do segredo do Key Vault em seu aplicativo. - Se houver várias fontes de propriedade do cofre de chaves na lista de
PropertySource, a ordem de definição será a ordem de prioridade. Tomando o exemplo acima como exemplo,key-vault-property-source-1tem uma prioridade maior do quekey-vault-property-source-2.
Configurar credencial de token para fonte de propriedade do Key Vault
Se você precisar usar uma credencial de token especificada para o Key Vault PropertySource, poderá registrar o bean TokenCredential no ConfigurableBootstrapContext para KeyVaultEnvironmentPostProcessor, esse recurso terá suporte do Spring Cloud Azure 5.16.0. Aqui está um exemplo para usar AzureCliCredential:
public static void main(String[] args) {
SpringApplication application = new SpringApplication(PropertySourceApplication.class);
application.addBootstrapRegistryInitializer(registry ->
registry.register(TokenCredential.class, context -> new AzureCliCredentialBuilder().build()));
application.run(args);
}
Todas as propriedades configuráveis
| Propriedade | Valor padrão | Descrição |
|---|---|---|
| spring.cloud.azure.keyvault.secret.property-source-enabled | verdadeiro | Se deseja habilitar a fonte de propriedade do Key Vault. |
| spring.cloud.azure.keyvault.secret.property-sources[].name | Nome dessa fonte de propriedade. | |
| spring.cloud.azure.keyvault.secret.property-sources[].endpoint | Ponto de extremidade do Azure Key Vault. | |
| spring.cloud.azure.keyvault.secret.property-sources[].sensível a maiúsculas e minúsculas | falso | Se as chaves secretas diferenciam maiúsculas de minúsculas. |
| spring.cloud.azure.keyvault.secret.property-sources[].secret-keys | As chaves secretas com suporte para essa fonte de propriedade. Todas as chaves serão recuperadas se essa propriedade estiver ausente. | |
| spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval | 30 milhões | Intervalo de tempo para atualizar todos os segredos do Key Vault. |
| spring.cloud.azure.keyvault.secret.property-sources[].service-version | Versão do serviço secreto usada ao fazer solicitações de API. | |
| spring.cloud.azure.keyvault.secret.property-sources[].client | Propriedades relacionadas ao cliente. | |
| spring.cloud.azure.keyvault.secret.property-sources[].credential | Propriedades relacionadas à credencial. | |
| spring.cloud.azure.keyvault.secret.property-sources[].profile | Propriedades relacionadas ao perfil. | |
| spring.cloud.azure.keyvault.secret.property-sources[].proxy | Propriedades relacionadas ao proxy. | |
| spring.cloud.azure.keyvault.secret.property-sources[].retry | Tente novamente as propriedades relacionadas. |
- Consulte Autorizar o acesso com o Microsoft Entra ID para garantir que a entidade de segurança tenha recebido a permissão suficiente para acessar os Segredos do Azure Key Vault.
- Se propriedades comuns como
client,credential,profile,proxy,retrynão estiverem configuradas emspring.cloud.azure.keyvault.secret.property-sources[].xxx,spring.cloud.azure.xxxserá usado. Consulte configuração do Spring Cloud Azure para obter mais informações sobre essas propriedades comuns. - Consulte propriedades de configuração do Spring Cloud Azure para obter mais informações sobre propriedades aninhadas.
Amostras
Consulte os exemplos de spring-cloud-azure-starter-keyvault-secrets no GitHub.