Správa tajných kódů Azure Spring Cloud
Tento článek se vztahuje na: ✔️ Verze 4.14.0 ✔️ verze 5.8.0
Konstruktor PropertySource
Azure Spring Cloud, 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>
Tip
Poskytujeme spring-cloud-azure-starter-keyvault
také podporu všech funkcí služby Key Vault. Pokud se rozhodnete ji použít, je to vlastnost, spring.cloud.azure.keyvault.enable
která se má nakonfigurovat a výchozí hodnota je true. Pak můžete zakázat spring.cloud.azure.keyvault.<keyvault-service>.enable
nepotřebné služby.
Základní použ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 části Název trezorua Název objektu klíčů, tajných klíčů a certifikátů služby Azure Key Vault. Pokud název vlastnosti obsahuje další znaky, můžete použít alternativní řešení popsaná v následujících částech.
Používejte -
místo v názvech tajných .
kódů.
.
nepodporuje se v názvech tajných kódů. 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 spring.datasource-url
je . Při ukládání spring-datasource-url
ve službě Key Vault se podporuje pouze spring.datasource.url
načtení spring-datasource-url
hodnoty vlastnosti, ale spring.datasource-url
nepodporuje se. Pokud chcete tento případ zpracovat, přečtěte si čá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á propertyWithoutSpecialCharacter
název klíče a přiřadí jeho hodnotu property.with.special.character__
.
Case-sensitive
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 tajných jmen můžete zobrazit podle spring.cloud.azure.keyvault.secret.property-sources[].secret-keys
.
Nastavení intervalu aktualizace
Ve výchozím nastavení se tajné kódy KeyVaultPropertySource
aktualizují každých 30 minut. Čas můžete nakonfigurovat podle spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval
. Příklad: Znamená aktualizaci spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval=60m
každých 60 minut. Nastavte na zakázání 0
automatické aktualizace.
Priorita PropertySource
Pokud klíč existuje ve více Zdrojích vlastností, který se projeví, určí priorita.
- Pokud seznam PropertySource neexistuje
SystemEnvironmentPropertySource
,KeyVaultPropertySource
bude mít nejvyšší prioritu. - Pokud je
SystemEnvironmentPropertySource
v seznamu PropertySource, pakSystemEnvironmentPropertySource
mít vyšší prioritu než KeyVaultPropertySource. To znamená, že proměnnou prostředí můžete použít k přepsání hodnoty tajného kódu služby Key Vault ve vaší aplikaci. - Pokud je v seznamu PropertySource více zdrojů KeyVaultPropertySource, pořadí definic je pořadí priority. Vezměte výše uvedený vzorek jako příklad,
key-vault-property-souece-1
má vyšší prioritu nežkey-vault-property-souece-2
.
Všechny konfigurovatelné vlastnosti
Vlastnost | Výchozí hodnota | Popis |
---|---|---|
spring.cloud.azure.keyvault.secret.property-source-enabled | true | 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 | false (nepravda) | 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 min. | Č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[].opakování | Opakujte související vlastnosti. |
- Informace o udělení dostatečného oprávnění pro přístup k tajným kódům služby Azure Key Vault najdete v tématu Autorizovat přístup pomocí id Microsoft Entra ID.
- Pokud se použijí běžné vlastnosti, jako je
client
,credential
,profile
retry
proxy
nejsou nakonfigurovány v .spring.cloud.azure.xxx
spring.cloud.azure.keyvault.secret.property-sources[].xxx
Další informace o těchto běžných vlastnostech najdete v tématu Konfigurace Azure Spring Cloudu. - Další informace o vnořených vlastnostech najdete v tématu Vlastnosti konfigurace Azure spring Cloudu.
Ukázky
Podívejte se na ukázky spring-cloud-azure-starter-keyvault-secrets na GitHubu.