Správa tajných kódů Azure Spring Cloud
Tento článek se vztahuje na:✅ verze 4.19.0 ✅ verze 5.19.0
Konstruktor Azure Spring Cloud PropertySource
, který obsahuje tajné kódy uložené v tajných klíčích služby Azure Key Vault.
Nastavení závislostí
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>
</dependency>
Spropitné
Poskytujeme také spring-cloud-azure-starter-keyvault
pro podporu všech funkcí služby Key Vault. Pokud se rozhodnete ji použít, spring.cloud.azure.keyvault.enable
je vlastnost, která se má nakonfigurovat a výchozí hodnota je true
. Potom můžete pomocí spring.cloud.azure.keyvault.<keyvault-service>.enable
zakázat nepotřebné služby.
Základní využití
Pokud chcete provést ověření pomocí client-id
a client-secret
, jsou vyžadovány následující vlastnosti:
Vlastnosti konfigurace
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}
Kód 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);
}
}
Pokročilé využití
Speciální znaky v názvu vlastnosti
Názvy tajných kódů služby Key Vault podporují pouze znaky v [0-9a-zA-Z-]
. Další informace najdete v částiNázev trezoru a název objektuklíče, tajné kódy a certifikáty služby Azure Key Vault s přehledem. Pokud název vlastnosti obsahuje další znaky, můžete použít alternativní řešení popsaná v následujících částech.
Použití -
místo .
v názvech tajných kódů
.
se v názvech tajných kódů nepodporuje. Pokud má vaše aplikace název vlastnosti, která obsahuje .
, například spring.datasource.url
, nahraďte .
-
při ukládání tajného kódu ve službě Azure Key Vault. Například uložte spring-datasource-url
ve službě Azure Key Vault. V aplikaci můžete stále použít spring.datasource.url
k načtení hodnoty vlastnosti.
Poznámka
Tato metoda nemůže splnit požadavek, jako je spring.datasource-url
. Při ukládání spring-datasource-url
ve službě Key Vault se k načtení hodnoty vlastnosti podporuje jenom spring.datasource.url
a spring-datasource-url
, ale spring.datasource-url
se nepodporuje. Pokud chcete tento případ zpracovat, podívejte se na část Použití zástupných symbolů vlastností.
Použití zástupných symbolů vlastností
Předpokládejme například, že tuto vlastnost nastavujete v souboru application.properties:
property.with.special.character__=${propertyWithoutSpecialCharacter}
Aplikace získá název klíče propertyWithoutSpecialCharacter
a přiřadí jeho hodnotu property.with.special.character__
.
Rozlišují se malá a velká písmena.
Pokud chcete povolit režim rozlišující malá a velká písmena, můžete nastavit následující vlastnost:
spring.cloud.azure.keyvault.secret.property-sources[].case-sensitive=true
Nečíst všechny tajné kódy ve službě Key Vault
Pokud jste ve službě Key Vault uložili 1000 tajných kódů a chcete jich jenom použít 3. Seznam 3 názvů tajných kódů můžete zobrazit spring.cloud.azure.keyvault.secret.property-sources[].secret-keys
.
Nastavení intervalu aktualizace
Ve výchozím nastavení se tajné kódy v KeyVaultPropertySource
aktualizují každých 30 minut. Čas můžete nakonfigurovat spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval
. Například: spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval=60m
znamená aktualizaci každých 60 minut. Pokud chcete zakázat automatickou aktualizaci, nastavte na 0
.
Priorita PropertySource
Pokud klíč existuje ve více Zdrojích vlastností, který se projeví, určí priorita.
- Pokud v seznamu
SystemEnvironmentPropertySource
nejsou žádnéPropertySource
, bude mítKeyVaultPropertySource
nejvyšší prioritu. - Pokud je v seznamu
SystemEnvironmentPropertySource
PropertySource
, pakSystemEnvironmentPropertySource
mají vyšší prioritu nežKeyVaultPropertySource
, což znamená, že můžete použít proměnnou prostředí k přepsání hodnoty tajného klíče služby Key Vault ve vaší aplikaci. - Pokud je v seznamu
PropertySource
více zdrojů vlastností trezoru klíčů, pořadí definic je pořadí priority. Jako příklad použijeme výše uvedený vzorek,key-vault-property-source-1
má vyšší prioritu nežkey-vault-property-source-2
.
Konfigurace přihlašovacích údajů tokenu pro zdroj vlastností služby Key Vault
Pokud potřebujete pro PropertySource
služby Key Vault použít zadané přihlašovací údaje tokenu, můžete zaregistrovat TokenCredential
bean v ConfigurableBootstrapContext
pro KeyVaultEnvironmentPostProcessor
, tato funkce je podporovaná z Platformy Spring Cloud Azure 5.19.0. Tady je příklad použití 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);
}
Všechny konfigurovatelné vlastnosti
Vlastnost | Výchozí hodnota | Popis |
---|---|---|
spring.cloud.azure.keyvault.secret.property-source-enabled | pravdivý | Určuje, jestli chcete povolit zdroj vlastností služby Key Vault. |
spring.cloud.azure.keyvault.secret.property-sources[].name | Název tohoto zdroje vlastnosti. | |
spring.cloud.azure.keyvault.secret.property-sources[].endpoint | Koncový bod služby Azure Key Vault | |
spring.cloud.azure.keyvault.secret.property-sources[].case-sensitive | falešný | Jestli jsou tajné klíče citlivé na malá a velká písmena. |
spring.cloud.azure.keyvault.secret.property-sources[].secret-keys | Tajné klíče podporované pro tento zdroj vlastností. Pokud tato vlastnost chybí, načtou se všechny klíče. | |
spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval | 30 m | Časový interval pro aktualizaci všech tajných kódů služby Key Vault |
spring.cloud.azure.keyvault.secret.property-sources[].service-version | Verze tajné služby používaná při vytváření požadavků rozhraní API. | |
spring.cloud.azure.keyvault.secret.property-sources[].client | Vlastnosti související s klientem | |
spring.cloud.azure.keyvault.secret.property-sources[].credential | Vlastnosti související s přihlašovacími údaji | |
spring.cloud.azure.keyvault.secret.property-sources[].profile | Vlastnosti související s profilem | |
spring.cloud.azure.keyvault.secret.property-sources[].proxy | Vlastnosti související s proxy serverem | |
spring.cloud.azure.keyvault.secret.property-sources[].retry | Opakujte související vlastnosti. |
- Pokud chcete zajistit, aby objekt zabezpečení byl udělen dostatečný přístup pro přístup k tajným kódům služby Azure Key Vault, přečtěte si Autorizovat přístup pomocí ID Microsoft Entra.
- Pokud se v
client
credential
nenakonfiguruje běžné vlastnosti, jako jsouprofile
,proxy
,retry
,spring.cloud.azure.keyvault.secret.property-sources[].xxx
,spring.cloud.azure.xxx
se nenakonfiguruje. Další informace o těchto běžných vlastnostech najdete v tématu konfigurace Spring Cloud Azure. - Další informace o vnořených vlastnostech najdete v tématu vlastnosti konfigurace Azure Spring Cloud.
Vzorky
Podívejte se na ukázky spring-cloud-azure-starter-keyvault-secrets na GitHubu.