Gerenciamento secreto do Spring Cloud Azure
Este artigo aplica-se a: ✔️ Versão 4.14.0 Versão 5.8.0 ✔️
Construção do Spring Cloud Azure que contém segredos armazenados nos Segredos do Cofre de Chaves do Azure PropertySource
.
Configuração de dependência
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>
</dependency>
Gorjeta
Nós também fornecemos spring-cloud-azure-starter-keyvault
suporte a todos os recursos do Key Vault. Se você optar por usá-lo, spring.cloud.azure.keyvault.enable
é a propriedade a ser configurada e o valor padrão é true. Em seguida, você pode usar spring.cloud.azure.keyvault.<keyvault-service>.enable
para desativar serviços desnecessários.
Utilização básica
Se você quiser autenticar por client-id
e client-secret
, as seguintes propriedades sã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);
}
}
Utilização avançada
Caracteres especiais no nome da propriedade
Os nomes secretos do Cofre de Chaves suportam apenas caracteres no [0-9a-zA-Z-]
. Para obter mais informações, consulte a seção Nome docofre e Nome do objeto da visão geral de chaves, segredos e certificados do Cofre da Chave do Azure. Se o nome da propriedade contiver outros caracteres, você poderá usar as soluções alternativas descritas nas seções a seguir.
Use -
em vez de .
em nomes secretos
.
não é suportado em nomes secretos. Se seu aplicativo tiver um nome de propriedade que contenha .
, como spring.datasource.url
, substitua .
por -
ao salvar o segredo no Cofre de Chaves do Azure. Por exemplo, salve spring-datasource-url
no Cofre da Chave do Azure. No seu aplicativo, você ainda pode usar spring.datasource.url
para recuperar o valor da propriedade.
Nota
Este método não pode satisfazer um requisito como spring.datasource-url
. Quando você salva spring-datasource-url
no Cofre da Chave, somente spring.datasource.url
e spring-datasource-url
é suportado para recuperar o valor da propriedade, mas spring.datasource-url
não é suportado. 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 em seu arquivo application.properties :
property.with.special.character__=${propertyWithoutSpecialCharacter}
O aplicativo obterá um nome de propertyWithoutSpecialCharacter
chave e atribuirá seu valor ao 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 Cofre da Chave
Se você armazenou 1000 segredos no Cofre da Chave, e você só quer usar 3 deles. Você pode listar os 3 nomes secretos por spring.cloud.azure.keyvault.secret.property-sources[].secret-keys
.
Definindo o intervalo de atualização
Por padrão, os segredos serão atualizados a KeyVaultPropertySource
cada 30 minutos. Você pode configurar o tempo por 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 desativar a atualização automática.
Prioridade PropertySource
Se a chave existir em vários PropertySources, o que entrará em vigor será decidido pela prioridade.
- Se não houver na
SystemEnvironmentPropertySource
lista PropertySource, entãoKeyVaultPropertySource
terá a prioridade mais alta. - Se houver
SystemEnvironmentPropertySource
na lista PropertySource, entãoSystemEnvironmentPropertySource
tenha prioridade maior do que KeyVaultPropertySource. Isso significa que você pode usar a variável de ambiente para substituir o valor secreto do Cofre da Chave em seu aplicativo. - Se houver vários KeyVaultPropertySource na lista PropertySource, a ordem de definição será a ordem de prioridade. Tome a amostra acima como exemplo,
key-vault-property-souece-1
tem prioridade maior do quekey-vault-property-souece-2
.
Todas as propriedades configuráveis
Property | Valor predefinido | Description |
---|---|---|
spring.cloud.azure.keyvault.secret.property-source-enabled | verdadeiro | Se a fonte da propriedade Key Vault deve ser ativada. |
spring.cloud.azure.keyvault.secret.property-sources[].name | Nome desta 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 | false | Se as chaves secretas diferenciam maiúsculas de minúsculas. |
spring.cloud.azure.keyvault.secret.property-sources[].secret-keys | As chaves secretas suportadas para esta fonte de propriedade. Todas as chaves serão recuperadas se esta propriedade estiver ausente. | |
spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval | 30 minutos | Intervalo de tempo para atualizar todos os segredos do Cofre da Chave. |
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[].cliente | Propriedades relacionadas ao cliente. | |
spring.cloud.azure.keyvault.secret.property-sources[].credential | Propriedades relacionadas a credenciais. | |
spring.cloud.azure.keyvault.secret.property-sources[].profile | Propriedades relacionadas ao perfil. | |
spring.cloud.azure.keyvault.secret.property-sources[].proxy | Propriedades relacionadas a proxy. | |
spring.cloud.azure.keyvault.secret.property-sources[].retry | Tente novamente propriedades relacionadas. |
- Consulte Autorizar acesso com a ID do Microsoft Entra para se certificar de que a entidade de segurança recebeu a permissão suficiente para aceder aos Segredos do Cofre da Chave do Azure.
- Se propriedades comuns como
client
, , , , não estiverem configuradas emspring.cloud.azure.keyvault.secret.property-sources[].xxx
,spring.cloud.azure.xxx
proxy
credential
profile
retry
serão usadas. 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.
Exemplos
Veja os exemplos spring-cloud-azure-starter-keyvault-secrets no GitHub.
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários