Självstudie: Använda Key Vault referenser i en Java Spring-app
I den här självstudien lär du dig hur du använder Azure App Configuration-tjänsten tillsammans med Azure Key Vault. App Configuration och Key Vault är kompletterande tjänster som används sida vid sida i de flesta programdistributioner.
App Configuration hjälper dig att använda tjänsterna tillsammans genom att skapa nycklar som refererar till värden som lagras i Key Vault. När App Configuration skapar sådana nycklar lagras URI:er för Key Vault värden i stället för själva värdena.
Ditt program använder App Configuration-klientprovidern för att hämta Key Vault referenser, precis som för andra nycklar som lagras i App Configuration. I det här fallet är de värden som lagras i App Configuration URI:er som refererar till värdena i Key Vault. De är inte Key Vault värden eller autentiseringsuppgifter. Eftersom klientprovidern identifierar nycklarna som Key Vault referenser använder den Key Vault för att hämta sina värden.
Ditt program ansvarar för att autentisera korrekt till både App Configuration och Key Vault. De två tjänsterna kommunicerar inte direkt.
Den här självstudien visar hur du implementerar Key Vault referenser i koden. Den bygger på den webbapp som introducerades i snabbstarterna. Innan du fortsätter slutför du Skapa en Java Spring-app med App Configuration först.
Du kan använda valfri kodredigerare för att utföra stegen i den här självstudien. Visual Studio Code är till exempel en plattformsoberoende kodredigerare som är tillgänglig för operativsystemen Windows, macOS och Linux.
I den här guiden får du lära dig att:
- Skapa en App Configuration nyckel som refererar till ett värde som lagras i Key Vault.
- Få åtkomst till värdet för den här nyckeln från ett Java Spring-program.
Förutsättningar
- Azure-prenumeration – skapa en kostnadsfritt
- Ett Java Development Kit (JDK) som stöds med version 11.
- Apache Maven version 3.0 eller senare.
Skapa ett valv
Välj alternativet Skapa en resurs i det övre vänstra hörnet i Azure Portal:
Ange Key Vault i sökrutan.
I resultatlistan väljer du Nyckelvalv till vänster.
I Nyckelvalv väljer du Lägg till.
Till höger i Skapa nyckelvalv anger du följande information:
- Välj Prenumeration för att välja en prenumeration.
- I Resursgrupp väljer du Skapa ny och anger ett resursgruppsnamn.
- I Key Vault-namnet krävs ett unikt namn. I den här självstudien anger du Contoso-vault2.
- I listrutan Region väljer du en plats.
Lämna de andra alternativen för Skapa nyckelvalv med sina standardvärden.
Välj Skapa.
Nu är ditt Azure-konto det enda som har behörighet att komma åt det nya valvet.
Lägga till en hemlighet i Key Vault
Om du vill lägga till en hemlighet i valvet behöver du bara utföra några ytterligare steg. I det här fallet lägger du till ett meddelande som du kan använda för att testa Key Vault hämtning. Meddelandet heter Meddelande och du lagrar värdet "Hello from Key Vault" i det.
- Välj Hemligheter på Key Vault egenskapssidor.
- Välj Generera/importera.
- I fönstret Skapa en hemlighet anger du följande värden:
- Uppladdningsalternativ: Ange Manuell.
- Namn: Ange meddelande.
- Värde: Ange Hello från Key Vault.
- Lämna de andra egenskaperna Skapa en hemlighet med sina standardvärden.
- Välj Skapa.
Lägg till en Key Vault referens till App Configuration
Logga in på Azure-portalen. Välj Alla resurser och välj sedan den App Configuration store-instans som du skapade i snabbstarten.
Välj Configuration Explorer.
Välj + Skapa>key vault-referens och ange sedan följande värden:
- Nyckel: Välj /application/config.keyvaultmessage
- Etikett: Lämna det här värdet tomt.
- Prenumeration, Resursgrupp och Nyckelvalv: Ange de värden som motsvarar värdena i nyckelvalvet som du skapade i föregående avsnitt.
- Hemlighet: Välj hemligheten Med namnet Meddelande som du skapade i föregående avsnitt.
Ansluta till Key Vault
I den här självstudien använder du ett huvudnamn för tjänsten för autentisering för att Key Vault. Om du vill skapa tjänstens huvudnamn använder du kommandot 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
Den här åtgärden returnerar en serie nyckel/värde-par:
{ "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/" }
Kör följande kommando för att låta tjänstens huvudnamn komma åt ditt nyckelvalv:
az keyvault set-policy -n <your-unique-keyvault-name> --spn <clientId-of-your-service-principal> --secret-permissions delete get
Kör följande kommando för att hämta ditt objekt-ID och lägg sedan till det i 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>
Skapa miljövariablerna AZURE_CLIENT_ID, AZURE_CLIENT_SECRET och AZURE_TENANT_ID. Använd värdena för tjänstens huvudnamn som visades i föregående steg. På kommandoraden kör du följande kommandon och startar om kommandotolken för att tillåta att ändringen börjar gälla:
setx AZURE_CLIENT_ID "clientId" setx AZURE_CLIENT_SECRET "clientSecret" setx AZURE_TENANT_ID "tenantId"
Om du använder Windows PowerShell kör du följande kommando:
$Env:AZURE_CLIENT_ID = "clientId" $Env:AZURE_CLIENT_SECRET = "clientSecret" $Env:AZURE_TENANT_ID = "tenantId"
Om du använder macOS eller Linux kör du följande kommando:
export AZURE_CLIENT_ID ='clientId' export AZURE_CLIENT_SECRET ='clientSecret' export AZURE_TENANT_ID ='tenantId'
Anteckning
Dessa Key Vault autentiseringsuppgifter används bara i ditt program. Ditt program autentiseras direkt med Key Vault med dessa autentiseringsuppgifter utan att den App Configuration tjänsten ingår. Key Vault tillhandahåller autentisering för både ditt program och din App Configuration-tjänst utan att dela eller exponera nycklar.
Uppdatera koden så att den använder en Key Vault referens
Skapa en miljövariabel med namnet APP_CONFIGURATION_ENDPOINT. Ange dess värde till slutpunkten för ditt App Configuration-arkiv. Du hittar slutpunkten på bladet Åtkomstnycklar i Azure Portal. Starta om kommandotolken så att ändringen börjar gälla.
Öppna konfigurationsfilen i resursmappen. Uppdatera den här filen för att använda värdet APP_CONFIGURATION_ENDPOINT . Ta bort referenser till en anslutningssträng i den här filen.
spring:
cloud:
azure:
appconfiguration:
stores:
- endpoint: ${APP_CONFIGURATION_ENDPOINT}
Anteckning
Du kan också använda globala Konfigurationer för Spring Cloud Azure för att ansluta till Key Vault.
Öppna MessageProperties.java. Lägg till en ny variabel med namnet keyVaultMessage:
private String keyVaultMessage; public String getKeyVaultMessage() { return keyVaultMessage; } public void setKeyVaultMessage(String keyVaultMessage) { this.keyVaultMessage = keyVaultMessage; }
Öppna HelloController.java. Uppdatera getMessage-metoden för att inkludera meddelandet som hämtats från Key Vault.
@GetMapping public String getMessage() { return "Message: " + properties.getMessage() + "\nKey Vault message: " + properties.getKeyVaultMessage(); }
Skapa ditt Spring Boot-program med Maven och kör det, till exempel:
mvn clean package mvn spring-boot:run
När programmet har körts använder du curl för att testa ditt program, till exempel:
curl -X GET http://localhost:8080/
Du ser meddelandet som du angav i App Configuration store. Du ser också meddelandet som du angav i Key Vault.
Rensa resurser
Om du inte vill fortsätta använda resurserna som skapats i den här artikeln tar du bort den resursgrupp som du skapade här för att undvika avgifter.
Viktigt
Att ta bort en resursgrupp kan inte ångras. Resursgruppen och alla resurser i den tas bort permanent. Se till att du inte tar bort fel resursgrupp eller resurser av misstag. Om du har skapat resurserna för den här artikeln i en resursgrupp som innehåller andra resurser som du vill behålla tar du bort varje resurs individuellt från respektive fönster i stället för att ta bort resursgruppen.
- Logga in på Azure Portal och välj Resursgrupper.
- I rutan Filtrera efter namn anger du namnet på resursgruppen.
- I resultatlistan väljer du resursgruppens namn för att se en översikt.
- Välj Ta bort resursgrupp.
- Du blir ombedd att bekräfta borttagningen av resursgruppen. Ange namnet på resursgruppen för att bekräfta och välj Ta bort.
Efter en liten stund tas resursgruppen och alla dess resurser bort.
Nästa steg
I den här självstudien skapade du en App Configuration nyckel som refererar till ett värde som lagras i Key Vault. Mer information finns i referensdokumentationen om hur Spring Cloud Azure App Configuration-biblioteket fungerar. Om du vill lära dig hur du använder funktionsflaggor i ditt Java Spring-program fortsätter du till nästa självstudie.