Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Конструкция Spring Cloud Azure PropertySource, в которой хранятся секреты, хранящиеся в секретах Azure Key Vault.
Настройка зависимостей
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>
</dependency>
Кончик
Мы также предоставляем spring-cloud-azure-starter-keyvault для поддержки всех функций Key Vault. Если вы решили использовать его, spring.cloud.azure.keyvault.enable является свойством для настройки, а значение по умолчанию — true. Затем можно использовать spring.cloud.azure.keyvault.<keyvault-service>.enable для отключения ненужных служб.
Базовое использование
Если требуется пройти проверку подлинности по client-id и client-secret, требуются следующие свойства:
Свойства конфигурации
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}
Код 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);
}
}
Расширенное использование
Специальные символы в имени свойства
Имена секретов Key Vault поддерживают только символы в [0-9a-zA-Z-]. Дополнительные сведения см. в разделеVault-name и Object-name раздела ключей Azure Key Vault, секретов и сертификатов. Если имя свойства содержит другие символы, можно использовать обходные пути, описанные в следующих разделах.
Используйте - вместо . в именах секретов
. не поддерживается в именах секретов. Если у приложения есть имя свойства, содержащее ., например spring.datasource.url, замените . на - при сохранении секрета в Azure Key Vault. Например, сохраните spring-datasource-url в Azure Key Vault. В приложении можно по-прежнему использовать spring.datasource.url для получения значения свойства.
Заметка
Этот метод не может удовлетворить требование, например spring.datasource-url. При сохранении spring-datasource-url в Key Vault поддерживается только spring.datasource.url и spring-datasource-url для получения значения свойства, но spring.datasource-url не поддерживается. Сведения об этом случае см. в разделе Use Property Placeholders section.
Использование заполнителей свойств
Например, предположим, что вы задаете это свойство в файле application.properties:
property.with.special.character__=${propertyWithoutSpecialCharacter}
Приложение получит имя ключа propertyWithoutSpecialCharacter и присвоит ему значение property.with.special.character__.
Учет регистра
Чтобы включить режим с учетом регистра, можно задать следующее свойство:
spring.cloud.azure.keyvault.secret.property-sources[].case-sensitive=true
Не извлекает все секреты в Key Vault
Если вы храните 1000 секретов в Key Vault, и вы просто хотите использовать 3 из них. Вы можете указать 3 имена секретов, spring.cloud.azure.keyvault.secret.property-sources[].secret-keys.
Настройка интервала обновления
По умолчанию секреты в KeyVaultPropertySource будут обновляться каждые 30 минут. Время можно настроить spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval. Например, spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval=60m означает обновление каждые 60 минут. Установите значение 0, чтобы отключить автоматическое обновление.
Приоритет PropertySource
Если ключ существует в нескольких PropertySources, который вступит в силу приоритетом.
- Если в списке
SystemEnvironmentPropertySourceнетPropertySource,KeyVaultPropertySourceбудет иметь наивысший приоритет. - Если в списке
SystemEnvironmentPropertySourceестьPropertySource,SystemEnvironmentPropertySourceимеет более высокий приоритет, чемKeyVaultPropertySource. Это означает, что можно использовать переменную среды для переопределения значения секрета Key Vault в приложении. - Если в списке
PropertySourceесть несколько источников свойств хранилища ключей, то порядок определения является приоритетом. При принятии приведенного выше примераkey-vault-property-source-1имеет более высокий приоритет, чемkey-vault-property-source-2.
Настройка учетных данных маркера для источника свойств Key Vault
Если необходимо использовать указанные учетные данные токена для Key Vault PropertySource, можно зарегистрировать TokenCredential боб в ConfigurableBootstrapContext для KeyVaultEnvironmentPostProcessor, эта функция поддерживается в Spring Cloud Azure 5.16.0. Ниже приведен пример использования 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);
}
Все настраиваемые свойства
| Свойство | Значение по умолчанию | Описание |
|---|---|---|
| spring.cloud.azure.keyvault.secret.property-source-enabled | истинный | Следует ли включить источник свойств Key Vault. |
| spring.cloud.azure.keyvault.secret.property-sources[].name | Имя источника этого свойства. | |
| spring.cloud.azure.keyvault.secret.property-sources[].endpoint | Конечная точка Azure Key Vault. | |
| spring.cloud.azure.keyvault.secret.property-sources[].case-sensitive | ложный | Учитывает ли секретные ключи регистр. |
| spring.cloud.azure.keyvault.secret.property-sources[].secret-keys | Секретные ключи, поддерживаемые для этого источника свойств. Все ключи извлекаются, если это свойство отсутствует. | |
| spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval | 30 млн | Интервал времени для обновления всех секретов Key Vault. |
| spring.cloud.azure.keyvault.secret.property-sources[].service-version | Версия секретной службы, используемая при выполнении запросов API. | |
| spring.cloud.azure.keyvault.secret.property-sources[].client | Свойства, связанные с клиентом. | |
| spring.cloud.azure.keyvault.secret.property-sources[].credential | Свойства, связанные с учетными данными. | |
| spring.cloud.azure.keyvault.secret.property-sources[].profile | Связанные свойства профиля. | |
| spring.cloud.azure.keyvault.secret.property-sources[].proxy | Связанные с прокси-сервером свойства. | |
| spring.cloud.azure.keyvault.secret.property-sources[].retry | Повторите связанные свойства. |
- Ознакомьтесь с авторизацией доступа с помощью идентификатора Microsoft Entra ID, чтобы убедиться, что субъект безопасности был предоставлен достаточный доступ к секретам Azure Key Vault.
- Если общие свойства, такие как
client,credential,profile,proxy,retryне настроены вspring.cloud.azure.keyvault.secret.property-sources[].xxx, будут использоватьсяspring.cloud.azure.xxx. Дополнительные сведения об этих общих свойствах см. вконфигурации Azure Spring Cloud. - Дополнительные сведения о вложенных свойствах см. в разделе Свойства конфигурации Azure Spring Cloud.
Образцы
См. примеры spring-cloud-azure-starter-keyvault-secret на сайте GitHub.