Kurz: Použití odkazů služby Key Vault v aplikaci Java Spring
V tomto kurzu se naučíte používat službu konfigurace Aplikace Azure společně se službou Azure Key Vault. Konfigurace aplikací a služba Key Vault jsou doplňkové služby používané vedle sebe ve většině nasazení aplikací.
App Configuration pomáhá používat služby společně vytvořením klíčů, které odkazují na hodnoty uložené ve službě Key Vault. Když App Configuration vytvoří takové klíče, uloží identifikátory URI hodnot služby Key Vault, nikoli samotné hodnoty.
Vaše aplikace používá zprostředkovatele klienta App Configuration k načtení odkazů služby Key Vault stejně jako u všech dalších klíčů uložených v App Configuration. V tomto případě jsou hodnoty uložené ve službě App Configuration identifikátory URI, které odkazují na hodnoty ve službě Key Vault. Nejsou to hodnoty ani přihlašovací údaje služby Key Vault. Vzhledem k tomu, že zprostředkovatel klienta rozpozná klíče jako reference ke službě Key Vault, používá k načtení hodnot službu Key Vault.
Vaše aplikace zodpovídá za správné ověřování ve službě App Configuration i Key Vault. Dvě služby nekomunikují přímo.
V tomto kurzu se dozvíte, jak implementovat odkazy služby Key Vault do kódu. Vychází z webové aplikace představené v rychlých startech. Než budete pokračovat, nejprve dokončete vytvoření aplikace Java Spring s konfigurací aplikace.
Kroky v tomto kurzu můžete provést pomocí libovolného editoru kódu. Visual Studio Code je například editor kódu pro různé platformy, který je k dispozici pro operační systémy Windows, macOS a Linux.
V tomto kurzu se naučíte:
- Vytvořte klíč služby App Configuration, který odkazuje na hodnotu uloženou ve službě Key Vault.
- Přístup k hodnotě tohoto klíče z aplikace Java Spring.
Požadavky
- Předplatné Azure – vytvoření bezplatného předplatného
- Podporovaná sada Java Development Kit (JDK) s verzí 11.
- Apache Maven verze 3.0 nebo novější
Vytvoření trezoru
V levém horním rohu webu Azure Portal vyberte možnost Vytvořit prostředek:
Do vyhledávacího pole zadejte Key Vault.
V seznamu výsledků vyberte trezory klíčů.
V trezorech klíčů vyberte Přidat.
Napravo v okně Vytvořit trezor klíčů zadejte následující informace:
- Vyberte Předplatné a zvolte předplatné.
- Ve skupině prostředků vyberte Vytvořit nový a zadejte název skupiny prostředků.
- V názvu trezoru klíčů se vyžaduje jedinečný název. Pro účely tohoto kurzu zadejte Contoso-vault2.
- V rozevíracím seznamu Oblast zvolte umístění.
U ostatních možností vytvoření trezoru klíčů ponechte výchozí hodnoty.
Vyberte Vytvořit.
V tuto chvíli je váš účet Azure jediným autorizovaným přístupem k tomuto novému trezoru.
Přidání tajného klíče do služby Key Vault
Pokud chcete do trezoru přidat tajný kód, musíte provést několik dalších kroků. V tomto případě přidejte zprávu, kterou můžete použít k otestování načtení služby Key Vault. Zpráva se nazývá Zpráva a do ní uložíte hodnotu "Hello from Key Vault".
- Na stránkách vlastností služby Key Vault vyberte Tajné kódy.
- Vyberte Generovat/importovat.
- V podokně Vytvořit tajný kód zadejte následující hodnoty:
- Možnosti nahrávání: Zadejte ručně.
- Název: Zadejte zprávu.
- Hodnota: Zadejte Hello ze služby Key Vault.
- U ostatních vlastností vytvořit tajný kód ponechte výchozí hodnoty.
- Vyberte Vytvořit.
Přidání odkazu služby Key Vault do konfigurace aplikace
Přihlaste se k portálu Azure. Vyberte Všechny prostředky a pak vyberte instanci App Configuration Storu, kterou jste vytvořili v rychlém startu.
Vyberte Průzkumníka konfigurace.
Vyberte a vytvořte>odkaz na trezor klíčů a zadejte následující hodnoty:
- Klíč: Vyberte /application/config.keyvaultmessage
- Popisek: Ponechte tuto hodnotu prázdnou.
- Předplatné, skupina prostředků a trezor klíčů: Zadejte hodnoty odpovídající hodnotám v trezoru klíčů, který jste vytvořili v předchozí části.
- Tajný kód: Vyberte tajný kód s názvem Zpráva , kterou jste vytvořili v předchozí části.
Připojení ke službě Key Vault
V tomto kurzu použijete instanční objekt pro ověřování ve službě Key Vault. K vytvoření tohoto instančního objektu použijte příkaz Azure CLI az ad sp create-for-rbac :
az ad sp create-for-rbac -n "http://mySP" --role Contributor --scopes /subscriptions/{subscription-id} --sdk-auth
Tato operace vrátí řadu párů klíč/hodnota:
{ "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444", "clientSecret": "aaaaaaaa-0b0b-1c1c-2d2d-333333333333", "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e", "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee", "activeDirectoryEndpointUrl": "https://login.microsoftonline.com", "resourceManagerEndpointUrl": "https://management.azure.com/", "sqlManagementEndpointUrl": "https://management.core.windows.net:8443/", "galleryEndpointUrl": "https://gallery.azure.com/", "managementEndpointUrl": "https://management.core.windows.net/" }
Spuštěním následujícího příkazu nechte instančnímu objektu přístup k vašemu trezoru klíčů:
az keyvault set-policy -n <your-unique-keyvault-name> --spn <clientId-of-your-service-principal> --secret-permissions delete get
Spuštěním následujícího příkazu získejte ID objektu a přidejte ho do služby App Configuration.
az ad sp show --id <clientId-of-your-service-principal> az role assignment create --role "App Configuration Data Reader" --scope /subscriptions/<subscriptionId>/resourceGroups/<group-name> --assignee-principal-type --assignee-object-id <objectId-of-your-service-principal> --resource-group <your-resource-group>
Vytvořte proměnné prostředí AZURE_CLIENT_ID, AZURE_CLIENT_SECRET a AZURE_TENANT_ID. Použijte hodnoty pro instanční objekt, který se zobrazil v předchozích krocích. Na příkazovém řádku spusťte následující příkazy a restartujte příkazový řádek, aby se změna projevila:
setx AZURE_CLIENT_ID "clientId" setx AZURE_CLIENT_SECRET "clientSecret" setx AZURE_TENANT_ID "tenantId"
Pokud používáte Windows PowerShell, spusťte následující příkaz:
$Env:AZURE_CLIENT_ID = "clientId" $Env:AZURE_CLIENT_SECRET = "clientSecret" $Env:AZURE_TENANT_ID = "tenantId"
Pokud používáte macOS nebo Linux, spusťte následující příkaz:
export AZURE_CLIENT_ID ='clientId' export AZURE_CLIENT_SECRET ='clientSecret' export AZURE_TENANT_ID ='tenantId'
Poznámka:
Tyto přihlašovací údaje služby Key Vault se používají jenom v rámci vaší aplikace. Vaše aplikace se ověřuje přímo ve službě Key Vault pomocí těchto přihlašovacích údajů, aniž by zahrnovala službu App Configuration. Key Vault poskytuje ověřování pro vaši aplikaci i službu App Configuration bez sdílení nebo vystavení klíčů.
Aktualizace kódu tak, aby používal referenční informace ke službě Key Vault
Vytvořte proměnnou prostředí s názvem APP_CONFIGURATION_ENDPOINT. Nastavte jeho hodnotu na koncový bod úložiště App Configuration Store. Koncový bod najdete v okně Přístupové klíče na webu Azure Portal. Restartujte příkazový řádek, aby se změna projevila.
Otevřete konfigurační soubor ve složce prostředků . Aktualizujte tento soubor tak, aby používal hodnotu APP_CONFIGURATION_ENDPOINT . Odeberte všechny odkazy na připojovací řetězec v tomto souboru.
spring:
cloud:
azure:
appconfiguration:
stores:
- endpoint: ${APP_CONFIGURATION_ENDPOINT}
Poznámka:
K připojení ke službě Key Vault můžete použít také globální konfigurace Azure Spring Cloud.
Otevřete MessageProperties.java. Přidejte novou proměnnou s názvem keyVaultMessage:
private String keyVaultMessage; public String getKeyVaultMessage() { return keyVaultMessage; } public void setKeyVaultMessage(String keyVaultMessage) { this.keyVaultMessage = keyVaultMessage; }
Otevřete HelloController.java. Aktualizujte metodu getMessage tak, aby zahrnovala zprávu načtenou ze služby Key Vault.
@GetMapping public String getMessage() { return "Message: " + properties.getMessage() + "\nKey Vault message: " + properties.getKeyVaultMessage(); }
Sestavte aplikaci Spring Boot pomocí Mavenu a spusťte ji, například:
mvn clean package mvn spring-boot:run
Po spuštění aplikace použijte curl k otestování aplikace, například:
curl -X GET http://localhost:8080/
Zobrazí se zpráva, kterou jste zadali v App Configuration Storu. Zobrazí se také zpráva, kterou jste zadali ve službě Key Vault.
Vyčištění prostředků
Pokud nechcete dál používat prostředky vytvořené v tomto článku, odstraňte skupinu prostředků, kterou jste tady vytvořili, abyste se vyhnuli poplatkům.
Důležité
Odstranění skupiny prostředků je nevratné. Skupina prostředků a všechny prostředky v ní se trvale odstraní. Ujistěte se, že omylem neodstraníte nesprávnou skupinu prostředků nebo prostředky. Pokud jste vytvořili prostředky pro tento článek ve skupině prostředků, která obsahuje další prostředky, které chcete zachovat, odstraňte jednotlivé prostředky z příslušného podokna místo odstranění skupiny prostředků.
- Přihlaste se k webu Azure Portal a vyberte skupiny prostředků.
- Do pole Filtrovat podle názvu zadejte název vaší skupiny prostředků.
- V seznamu výsledků vyberte název skupiny prostředků, abyste zobrazili přehled.
- Vyberte Odstranit skupinu prostředků.
- Zobrazí se výzva k potvrzení odstranění skupiny prostředků. Potvrďte název skupiny prostředků a vyberte Odstranit.
Po chvíli se skupina prostředků a všechny její prostředky odstraní.
Další kroky
V tomto kurzu jste vytvořili klíč konfigurace aplikace, který odkazuje na hodnotu uloženou ve službě Key Vault. Další dotazy najdete v referenční dokumentaci, kde najdete všechny podrobnosti o tom, jak knihovna Spring Cloud Aplikace Azure Configuration library funguje. Pokud chcete zjistit, jak používat příznaky funkcí v aplikaci Java Spring, pokračujte dalším kurzem.