Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uwaga
Plany Basic, Standardi Enterprise weszły w okres wycofywania 17 marca 2025 r. Aby uzyskać więcej informacji, zobacz ogłoszenie o wycofaniu usługi Azure Spring Apps.
Plan dotyczący zużycia standardowego oraz dedykowany plan zostały wycofane 30 września 2024 r., z całkowitym zamknięciem do końca marca 2025 r. Aby uzyskać więcej informacji, zobacz Migrowanie usługi Azure Spring Apps z warstwy Standardowa i dedykowanego planu do usługi Azure Container Apps.
Ten artykuł dotyczy:✅ Java ❎ C#
W tym artykule pokazano, jak utworzyć tożsamość zarządzaną przypisaną przez system lub przypisaną przez użytkownika dla aplikacji wdrożonej w usłudze Azure Spring Apps i użyć jej do uzyskiwania dostępu do usługi Azure Key Vault.
Za pomocą usługi Azure Key Vault można bezpiecznie przechowywać i ściśle kontrolować dostęp do tokenów, haseł, certyfikatów, kluczy interfejsu API i innych wpisów tajnych dla aplikacji. Tożsamość zarządzaną można utworzyć w usłudze Microsoft Entra ID i uwierzytelnić w dowolnej usłudze obsługującej uwierzytelnianie firmy Microsoft Entra, w tym w usłudze Key Vault, bez konieczności wyświetlania poświadczeń w kodzie.
W poniższym filmie wideo opisano sposób zarządzania tajemnicami przy użyciu usługi Azure Key Vault.
Wymagania wstępne
- Subskrypcja platformy Azure. Jeśli nie masz subskrypcji, przed rozpoczęciem utwórz bezpłatne konto .
- Jeśli wdrażasz wystąpienie planu Usługi Azure Spring Apps Enterprise po raz pierwszy w subskrypcji docelowej, zobacz sekcję Wymagania planu przedsiębiorstwa w witrynie Azure Marketplace.
- Interfejs wiersza polecenia platformy Azure w wersji 2.55.0 lub nowszej.
- Subskrypcja platformy Azure. Jeśli nie masz subskrypcji, przed rozpoczęciem utwórz bezpłatne konto .
- Interfejs wiersza polecenia platformy Azure w wersji 2.55.0 lub nowszej.
Podaj nazwy dla każdego zasobu
Utwórz zmienne do przechowywania nazw zasobów przy użyciu następujących poleceń. Pamiętaj, aby zastąpić symbole zastępcze własnymi wartościami.
export LOCATION=<location>
export RESOURCE_GROUP=myresourcegroup
export SPRING_APPS=myasa
export APP=springapp-system
export KEY_VAULT=<your-keyvault-name>
Tworzenie grupy zasobów
Grupa zasobów to logiczny kontener przeznaczony do wdrażania zasobów platformy Azure i zarządzania nimi. Utwórz grupę zasobów zawierającą zarówno usługę Key Vault, jak i platformę Spring Cloud przy użyciu polecenia az group create , jak pokazano w poniższym przykładzie:
az group create --name ${RESOURCE_GROUP} --location ${LOCATION}
Konfigurowanie usługi Key Vault
Aby utworzyć usługę Key Vault, użyj polecenia az keyvault create , jak pokazano w poniższym przykładzie:
Ważne
Każda usługa Key Vault musi mieć unikatową nazwę.
az keyvault create \
--resource-group ${RESOURCE_GROUP} \
--name ${KEY_VAULT}
Użyj następującego polecenia, aby wyświetlić adres URL aplikacji, a następnie zanotować zwrócony adres URL, który ma format https://${KEY_VAULT}.vault.azure.net
. Użyj tej wartości w poniższym kroku.
az keyvault show \
--resource-group ${RESOURCE_GROUP} \
--name ${KEY_VAULT} \
--query properties.vaultUri --output tsv
Teraz możesz umieścić tajemnicę w usłudze Key Vault przy użyciu polecenia az keyvault secret set, jak pokazano w poniższym przykładzie:
az keyvault secret set \
--vault-name ${KEY_VAULT} \
--name "connectionString" \
--value "jdbc:sqlserver://SERVER.database.windows.net:1433;database=DATABASE;"
Tworzenie usługi Azure Spring Apps i aplikacji
Po zainstalowaniu wszystkich odpowiednich rozszerzeń użyj następującego polecenia, aby utworzyć wystąpienie usługi Azure Spring Apps:
az extension add --upgrade --name spring
az spring create \
--resource-group ${RESOURCE_GROUP} \
--sku Enterprise \
--name ${SPRING_APPS}
Poniższy przykład tworzy aplikację z tożsamością zarządzaną przypisaną przez system zgodnie z żądaniem parametru --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}
Poniższy przykład tworzy aplikację o nazwie springapp
z tożsamością zarządzaną przypisaną przez system zgodnie z żądaniem parametru --system-assigned
.
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)
Udzielanie aplikacji dostępu do usługi Key Vault
Użyj następującego polecenia, aby udzielić odpowiedniego dostępu w usłudze Key Vault dla aplikacji:
az keyvault set-policy \
--name ${KEY_VAULT} \
--object-id ${MANAGED_IDENTITY_PRINCIPAL_ID} \
--secret-permissions set get list
Uwaga
W przypadku tożsamości zarządzanej przypisanej przez system użyj polecenia az keyvault delete-policy --name ${KEY_VAULT} --object-id ${MANAGED_IDENTITY_PRINCIPAL_ID}
, aby usunąć dostęp do aplikacji po wyłączeniu tożsamości zarządzanej przypisanej przez system.
Tworzenie przykładowej aplikacji Spring Boot przy użyciu szablonu startowego Spring Boot
Ta aplikacja ma dostęp do sekretów w usłudze Azure Key Vault. Użyj startera Azure Key Vault Secrets Spring Boot. Usługa Azure Key Vault jest dodawana jako wystąpienie usługi Spring PropertySource. Dostęp do tajemnic przechowywanych w usłudze Azure Key Vault można wygodnie uzyskiwać i używać jak każda zewnętrzna właściwość konfiguracji, taka jak właściwości w plikach.
Użyj następującego polecenia, aby wygenerować przykładowy projekt z
start.spring.io
usługi 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 -
Określ Key Vault w swojej aplikacji.
cd springapp vim src/main/resources/application.properties
Aby użyć tożsamości zarządzanej dla aplikacji wdrożonej w usłudze Azure Spring Apps, dodaj właściwości z następującą zawartością do pliku 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
Uwaga
Musisz dodać adres URL magazynu kluczy w pliku application.properties , jak pokazano wcześniej. W przeciwnym razie adres URL magazynu kluczy może nie być przechwycony w czasie działania.
Zaktualizuj plik src/main/java/com/example/demo/DemoApplication.java przy użyciu poniższego przykładu kodu. Ten kod pobiera parametry połączenia z usługi 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)); } }
Po otwarciu pliku pom.xml można zobaczyć
spring-cloud-azure-starter-keyvault
zależność, jak pokazano w poniższym przykładzie:<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-keyvault</artifactId> </dependency>
Użyj następującego polecenia, aby wdrożyć aplikację w usłudze Azure Spring Apps:
az spring app deploy \ --resource-group ${RESOURCE_GROUP} \ --service ${SPRING_APPS} \ --name ${APP} \ --source-path
Użyj następującego polecenia, aby wdrożyć aplikację w usłudze Azure Spring Apps:
az spring app deploy \ --resource-group ${RESOURCE_GROUP} \ --service ${SPRING_APPS} \ --name ${APP} \ --source-path \ --build-env BP_JVM_VERSION=17
Aby przetestować aplikację, uzyskaj dostęp do publicznego punktu końcowego lub testowego punktu końcowego przy użyciu następującego polecenia:
curl https://${SPRING_APPS}-${APP}.azuremicroservices.io/get
W treści odpowiedzi zostanie zwrócony następujący komunikat:
jdbc:sqlserver://SERVER.database.windows.net:1433;database=DATABASE;
.
Czyszczenie zasobów
Użyj następującego polecenia, aby usunąć całą grupę zasobów, w tym nowo utworzone wystąpienie usługi:
az group delete --name ${RESOURCE_GROUP} --yes
Następne kroki
- Jak uzyskać dostęp do obiektu blob w Storage przy użyciu tożsamości zarządzanej w usłudze Azure Spring Apps
- Włączanie tożsamości zarządzanej przypisanej przez system dla aplikacji w usłudze Azure Spring Apps
- Co to są tożsamości zarządzane dla zasobów platformy Azure?
- Uwierzytelnianie usługi Azure Spring Apps za pomocą usługi Key Vault w funkcji GitHub Actions