Självstudie: Använda Key Vault-referenser i en Java Spring-app
I den här självstudien får du lära dig hur du använder Azure App Configuration-tjänsten tillsammans med Azure Key Vault. Appkonfiguration 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:erna för Key Vault-värden i stället för själva värdena.
Ditt program använder appkonfigurationsklientprovidern 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 autentiseras 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 självstudien lär du dig att:
- Skapa en appkonfigurationsnyckel 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.
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-namn krävs ett unikt namn. I den här självstudien anger du Contoso-vault2.
- I listrutan Region väljer du en plats.
Låt de andra alternativen för Skapa nyckelvalv ha sina standardvärden.
Välj Skapa.
I det här läget ä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 fler steg. I det här fallet lägger du till ett meddelande som du kan använda för att testa hämtningen av Key Vault. Meddelandet heter Meddelande och du lagrar värdet "Hello from Key Vault" i det.
- Välj Hemligheter på egenskapssidorna för Key Vault.
- 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ägga 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 tjänstens huvudnamn för autentisering till 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 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'
Kommentar
Dessa Key Vault-autentiseringsuppgifter används endast i ditt program. Ditt program autentiseras direkt med Key Vault med dessa autentiseringsuppgifter utan att appkonfigurationstjänsten ingår. Key Vault tillhandahåller autentisering för både ditt program och appkonfigurationstjänsten 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 appkonfigurationsarkivet. 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 om du vill 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}
Kommentar
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 så att den innehåller 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 skapas i den här artikeln tar du bort resursgruppen 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 oavsiktligt tar bort fel resursgrupp eller resurser. 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 appkonfigurationsnyckel 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.