Händelser
17 mars 21 - 21 mars 10
Gå med i mötesserien för att skapa skalbara AI-lösningar baserat på verkliga användningsfall med andra utvecklare och experter.
Registrera dig nuDen här webbläsaren stöds inte längre.
Uppgradera till Microsoft Edge och dra nytta av de senaste funktionerna och säkerhetsuppdateringarna, samt teknisk support.
Anteckning
Basic-, Standard- och Enterprise-planerna kommer att vara inaktuella från och med mitten av mars 2025, med en 3-årig pensionsperiod. Vi rekommenderar att du övergår till Azure Container Apps. Mer information finns i meddelandet om azure Spring Apps-pensionering.
Standardförbrukningen och den dedikerade planen kommer att vara inaktuell från och med den 30 september 2024, med en fullständig avstängning efter sex månader. Vi rekommenderar att du övergår till Azure Container Apps. Mer information finns i Migrera Azure Spring Apps Standard-förbrukning och dedikerad plan till Azure Container Apps.
Den här artikeln gäller för:✅ Java ❎ C#
Den här artikeln visar hur du skapar en systemtilldelad eller användartilldelad hanterad identitet för en app som distribueras till Azure Spring Apps och använder den för att få åtkomst till Azure Key Vault.
Azure Key Vault kan användas för att lagra och kontrollera åtkomsten till token, lösenord, certifikat, API-nycklar och andra hemligheter för din app på ett säkert sätt. Du kan skapa en hanterad identitet i Microsoft Entra-ID och autentisera till alla tjänster som stöder Microsoft Entra-autentisering, inklusive Key Vault, utan att behöva visa autentiseringsuppgifter i koden.
I följande video beskrivs hur du hanterar hemligheter med Hjälp av Azure Key Vault.
Skapa variabler för att lagra resursnamnen med hjälp av följande kommandon. Se till att ersätta platshållarna med dina egna värden.
export LOCATION=<location>
export RESOURCE_GROUP=myresourcegroup
export SPRING_APPS=myasa
export APP=springapp-system
export KEY_VAULT=<your-keyvault-name>
En resursgrupp är en logisk container där Azure-resurser distribueras och hanteras. Skapa en resursgrupp som ska innehålla både Key Vault och Spring Cloud med kommandot az group create , som du ser i följande exempel:
az group create --name ${RESOURCE_GROUP} --location ${LOCATION}
Om du vill skapa ett Key Vault använder du kommandot az keyvault create , som du ser i följande exempel:
Viktigt
Varje Key Vault måste ha ett unikt namn.
az keyvault create \
--resource-group ${RESOURCE_GROUP} \
--name ${KEY_VAULT}
Använd följande kommando för att visa appens URL och anteckna sedan den returnerade URL:en, som är i formatet https://${KEY_VAULT}.vault.azure.net
. Använd det här värdet i följande steg.
az keyvault show \
--resource-group ${RESOURCE_GROUP} \
--name ${KEY_VAULT} \
--query properties.vaultUri --output tsv
Nu kan du placera en hemlighet i ditt Key Vault med hjälp av kommandot az keyvault secret set , som du ser i följande exempel:
az keyvault secret set \
--vault-name ${KEY_VAULT} \
--name "connectionString" \
--value "jdbc:sqlserver://SERVER.database.windows.net:1433;database=DATABASE;"
När du har installerat alla motsvarande tillägg använder du följande kommando för att skapa en Azure Spring Apps-instans:
az extension add --upgrade --name spring
az spring create \
--resource-group ${RESOURCE_GROUP} \
--sku Enterprise \
--name ${SPRING_APPS}
I följande exempel skapas appen med en systemtilldelad hanterad identitet enligt parametern --system-assigned
:
az spring app create \
--resource-group ${RESOURCE_GROUP} \
--service ${SPRING_APPS} \
--name ${APP} \
--assign-endpoint true \
--system-assigned
export MANAGED_IDENTITY_PRINCIPAL_ID=$(az spring app show \
--resource-group ${RESOURCE_GROUP} \
--service ${SPRING_APPS} \
--name ${APP} \
--query identity.principalId --output tsv)
az extension add --upgrade --name spring
az spring create \
--resource-group ${RESOURCE_GROUP} \
--name ${SPRING_APPS}
I följande exempel skapas en app med namnet springapp
med en systemtilldelad hanterad identitet, enligt parameterns --system-assigned
begäran.
az spring app create \
--resource-group ${RESOURCE_GROUP} \
--service ${SPRING_APPS} \
--name ${APP} \
--assign-endpoint true \
--runtime-version Java_17 \
--system-assigned
export MANAGED_IDENTITY_PRINCIPAL_ID=$(az spring app show \
--resource-group ${RESOURCE_GROUP} \
--service ${SPRING_APPS} \
--name ${APP} \
--query identity.principalId --output tsv)
Använd följande kommando för att bevilja korrekt åtkomst i Key Vault för din app:
az keyvault set-policy \
--name ${KEY_VAULT} \
--object-id ${MANAGED_IDENTITY_PRINCIPAL_ID} \
--secret-permissions set get list
Anteckning
För systemtilldelad hanterad identitet använder du az keyvault delete-policy --name ${KEY_VAULT} --object-id ${MANAGED_IDENTITY_PRINCIPAL_ID}
för att ta bort åtkomsten för din app när systemtilldelad hanterad identitet har inaktiverats.
Den här appen har åtkomst till att hämta hemligheter från Azure Key Vault. Använd Startstarten för Azure Key Vault Secrets Spring. Azure Key Vault läggs till som en instans av Spring PropertySource. Hemligheter som lagras i Azure Key Vault kan enkelt nås och användas som valfri externaliserad konfigurationsegenskap, till exempel egenskaper i filer.
Använd följande kommando för att generera ett exempelprojekt från start.spring.io
med Azure Key Vault Spring Starter.
curl https://start.spring.io/starter.tgz -d dependencies=web,azure-keyvault -d baseDir=springapp -d bootVersion=3.2.1 -d javaVersion=17 -d type=maven-project | tar -xzvf -
Ange ditt Key Vault i din app.
cd springapp
vim src/main/resources/application.properties
Om du vill använda hanterad identitet för en app som distribuerats till Azure Spring Apps lägger du till egenskaper med följande innehåll i filen src/main/resources/application.properties .
spring.cloud.azure.keyvault.secret.property-sources[0].endpoint=<your-keyvault-url>
spring.cloud.azure.keyvault.secret.property-sources[0].credential.managed-identity-enabled=true
Anteckning
Du måste lägga till url:en för nyckelvalvet i filen application.properties som du visade tidigare. Annars kanske inte url:en för nyckelvalvet registreras under körningen.
Uppdatera src/main/java/com/example/demo/DemoApplication.java med följande kodexempel. Den här koden hämtar anslutningssträng från Key Vault.
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class DemoApplication implements CommandLineRunner {
@Value("${connectionString}")
private String connectionString;
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@GetMapping("get")
public String get() {
return connectionString;
}
public void run(String... args) throws Exception {
System.out.println(String.format("\nConnection String stored in Azure Key Vault:\n%s\n",connectionString));
}
}
Om du öppnar filen pom.xml kan du se spring-cloud-azure-starter-keyvault
beroendet, som du ser i följande exempel:
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-keyvault</artifactId>
</dependency>
Använd följande kommando för att distribuera din app till Azure Spring Apps:
az spring app deploy \
--resource-group ${RESOURCE_GROUP} \
--service ${SPRING_APPS} \
--name ${APP} \
--source-path
Använd följande kommando för att distribuera din app till Azure Spring Apps:
az spring app deploy \
--resource-group ${RESOURCE_GROUP} \
--service ${SPRING_APPS} \
--name ${APP} \
--source-path \
--build-env BP_JVM_VERSION=17
Om du vill testa din app får du åtkomst till den offentliga slutpunkten eller testslutpunkten med hjälp av följande kommando:
curl https://${SPRING_APPS}-${APP}.azuremicroservices.io/get
Följande meddelande returneras i svarstexten: jdbc:sqlserver://SERVER.database.windows.net:1433;database=DATABASE;
.
Använd följande kommando för att ta bort hela resursgruppen, inklusive den nyligen skapade tjänstinstansen:
az group delete --name ${RESOURCE_GROUP} --yes
Händelser
17 mars 21 - 21 mars 10
Gå med i mötesserien för att skapa skalbara AI-lösningar baserat på verkliga användningsfall med andra utvecklare och experter.
Registrera dig nuUtbildning
Modul
Hantera hemligheter i Java-program – Nolltillit och noll hemligheter - Training
I den här modulen lär du dig att hantera hemligheter i dina Java-program i Azure. Du kommer att utforska metodtips som Nolltillit och Noll hemligheter och se hur du tillämpar dem på ett praktiskt Java-projekt med Hjälp av Azure Key Vault.
Certifiering
Microsoft-certifierad: Identitets- och åtkomstadministratör Associate - Certifications
Demonstrera funktionerna i Microsoft Entra ID för att modernisera identitetslösningar, implementera hybridlösningar och implementera identitetsstyrning.
Dokumentation
Läsa in en hemlighet från Azure Key Vault i ett Spring Boot-program - Java on Azure
I den här självstudien skapar du en Spring Boot-app som läser ett värde från Azure Key Vault och distribuerar appen till Azure App Service och Azure Spring Apps.
Hemlig hantering av Spring Cloud Azure - Java on Azure
I den här artikeln beskrivs azure-hemlighetshantering i Spring Cloud.
Konfigurationsegenskaper för Azure Key Vault-hemligheter - Java on Azure
Det här referensdokumentet innehåller alla konfigurationsegenskaper för Azure Key Vault-hemligheter.