Управление секретами Spring Cloud Azure
Эта статья относится к: ✔️ версия 4.14.0 ✔️ версии 5.8.0
Конструкция PropertySource
Spring Cloud Azure, содержащая секреты, хранящиеся в секретах 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-]
. Дополнительные сведения см. вразделе "Имя хранилища" и "Имя объекта" в разделе "Ключи 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
не поддерживается. Сведения об этом случае см. в разделе "Использование заполнителей свойств".
Использование заполнителей свойств
Например, предположим, что вы задаете это свойство в файле 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, который вступит в силу приоритетом.
- Если в списке PropertySource нет
SystemEnvironmentPropertySource
,KeyVaultPropertySource
то будет иметь наивысший приоритет. - Если в списке PropertySource имеется
SystemEnvironmentPropertySource
более высокий приоритет,SystemEnvironmentPropertySource
чем KeyVaultPropertySource. Это означает, что можно использовать переменную среды для переопределения значения секрета Key Vault в приложении. - Если в списке PropertySource имеется несколько keyVaultPropertySource, то порядок определения является приоритетом. Рассмотрим приведенный выше пример, как пример,
key-vault-property-souece-1
имеет более высокий приоритет, чемkey-vault-property-souece-2
.
Все настраиваемые свойства
Свойство | Значение по умолчанию | Description |
---|---|---|
spring.cloud.azure.keyvault.secret.property-source-enabled | true | Следует ли включить источник свойств 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 | false | Учитывает ли секретные ключи регистр. |
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 | Повторите связанные свойства. |
- Чтобы убедиться, что субъекту безопасности предоставлено достаточное разрешение на доступ к секретам Azure Key Vault, см. в разделе "Авторизация доступа с помощью идентификатора Microsoft Entra ID".
- Если будут использоваться общие свойства,
credential
напримерclient
,profile
,retry
proxy
не настроеныspring.cloud.azure.keyvault.secret.property-sources[].xxx
spring.cloud.azure.xxx
. Дополнительные сведения об этих общих свойствах см . в конфигурации Spring Cloud Azure. - Дополнительные сведения о вложенных свойствах см. в свойствах конфигурации Azure Spring Cloud.
Примеры
См. примеры spring-cloud-azure-starter-keyvault-secret на сайте GitHub.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по