Freigeben über


Schnellstart: Laden von Anwendungsgeheimnissen mithilfe von Key Vault

Hinweis

Die Pläne Basic, Standard und Enterprise gelten ab Mitte März 2025 als veraltet und werden über einen Zeitraum von drei Jahren eingestellt. Es wird empfohlen, auf Azure Container Apps umzustellen. Weitere Informationen finden Sie in der Ankündigung zur Einstellung von Azure Spring Apps.

Der Plan Standardverbrauch und dediziert gilt ab dem 30. September 2024 als veraltet und wird nach sechs Monaten vollständig eingestellt. Es wird empfohlen, auf Azure Container Apps umzustellen. Weitere Informationen finden Sie unter Migrieren des Plans „Standardverbrauch und dediziert“ von Azure Spring Apps zu Azure Container Apps.

Dieser Artikel gilt für: ❎ Basic/Standard ✅ Enterprise

In dieser Schnellstartanleitung wird beschrieben, wie Sie Azure Key Vault verwenden, um Geheimnisse für Apps, die den Azure Spring Apps Enterprise-Plan ausführen, sicher zu laden.

Jede Anwendung verfügt über Eigenschaften, die sie mit ihrer Umgebung und unterstützenden Diensten verbinden. Zu diesen Diensten gehören Ressourcen wie Datenbanken, Protokollierungs- und Überwachungstools, Messagingplattformen usw. Jede Ressource erfordert eine Möglichkeit, sie zu suchen und darauf zuzugreifen, häufig in Form von URLs und Anmeldeinformationen. Diese Informationen sind häufig gesetzlich geschützt und müssen geheim gehalten werden, um Kundendaten zu schützen. In Azure Spring Apps können Sie Anwendungen so konfigurieren, dass diese Geheimnisse direkt aus Key Vault in den Speicher geladen werden, indem Sie verwaltete Identitäten und die rollenbasierte Zugriffssteuerung von Azure verwenden.

Voraussetzungen

Bereitstellen von Key Vault und Speichern von Geheimnissen

In den folgenden Anweisungen wird beschrieben, wie Sie einen Key Vault erstellen und Anwendungsgeheimnisse sicher speichern.

  1. Erstellen Sie Variablen zur Aufnahme der Ressourcennamen, indem Sie die folgenden Befehle verwenden. Ersetzen Sie die Platzhalter durch Ihre eigenen Werte.

    Hinweis

    Microsoft empfiehlt, immer den sichersten Authentifizierungsflow zu verwenden, der verfügbar ist. Der in diesem Verfahren beschriebene Authentifizierungsflow, beispielsweise für Datenbanken, Zwischenspeicher, Nachrichten oder KI-Dienste, erfordert ein sehr hohes Maß an Vertrauen in die Anwendung und birgt Risiken, die bei anderen Flows nicht vorhanden sind. Verwenden Sie diesen Flow nur, wenn sicherere Optionen wie verwaltete Identitäten für kennwortlose oder schlüssellose Verbindungen nicht geeignet sind. Bei Vorgängen des lokalen Computers bevorzugen Sie Benutzeridentitäten für kennwortlose oder schlüssellose Verbindungen.

    export RESOURCE_GROUP=<resource-group-name>
    export KEY_VAULT_NAME=<key-vault-name>
    export POSTGRES_SERVER_NAME=<postgres-server-name>
    export POSTGRES_USERNAME=<postgres-username>
    export POSTGRES_PASSWORD=<postgres-password>
    export REDIS_CACHE_NAME=<redis-cache-name>
    export AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME=<Azure-Spring-Apps-service-instance-name>
    
  2. Verwenden Sie den folgenden Befehl, um einen Key Vault zum Speichern von Anwendungsgeheimnissen zu erstellen:

    az keyvault create \
        --resource-group ${RESOURCE_GROUP} \
        --name ${KEY_VAULT_NAME}
    
  3. Verwenden Sie den folgenden Befehl, um den vollständigen Datenbankservernamen in Key Vault zu speichern:

    az keyvault secret set \
        --vault-name ${KEY_VAULT_NAME} \
        --name "POSTGRES-SERVER-NAME" \
        --value "${POSTGRES_SERVER_NAME}.postgres.database.azure.com"
    
  4. Verwenden Sie den folgenden Befehl, um den Datenbanknamen in Key Vault für die Catalog Service-Anwendung zu speichern:

    az keyvault secret set \
        --vault-name ${KEY_VAULT_NAME} \
        --name "CATALOG-DATABASE-NAME" \
        --value "acmefit_catalog"
    
  5. Verwenden Sie die folgenden Befehle, um die Anmeldeinformationen der Datenbank in Key Vault zu speichern:

    Hinweis

    Microsoft empfiehlt, immer den sichersten Authentifizierungsflow zu verwenden, der verfügbar ist. Der in diesem Verfahren beschriebene Authentifizierungsflow, beispielsweise für Datenbanken, Zwischenspeicher, Nachrichten oder KI-Dienste, erfordert ein sehr hohes Maß an Vertrauen in die Anwendung und birgt Risiken, die bei anderen Flows nicht vorhanden sind. Verwenden Sie diesen Flow nur, wenn sicherere Optionen wie verwaltete Identitäten für kennwortlose oder schlüssellose Verbindungen nicht geeignet sind. Bei Vorgängen des lokalen Computers bevorzugen Sie Benutzeridentitäten für kennwortlose oder schlüssellose Verbindungen.

    az keyvault secret set \
        --vault-name ${KEY_VAULT_NAME} \
        --name "POSTGRES-LOGIN-NAME" \
        --value "${POSTGRES_USERNAME}"
    
    az keyvault secret set \
        --vault-name ${KEY_VAULT_NAME} \
        --name "POSTGRES-LOGIN-PASSWORD" \
        --value "${POSTGRES_PASSWORD}"
    
  6. Verwenden Sie den folgenden Befehl, um die Datenbankverbindungszeichenfolge in Key Vault für die Order Service-Anwendung zu speichern:

    Hinweis

    Microsoft empfiehlt, immer den sichersten Authentifizierungsflow zu verwenden, der verfügbar ist. Der in diesem Verfahren beschriebene Authentifizierungsflow, beispielsweise für Datenbanken, Zwischenspeicher, Nachrichten oder KI-Dienste, erfordert ein sehr hohes Maß an Vertrauen in die Anwendung und birgt Risiken, die bei anderen Flows nicht vorhanden sind. Verwenden Sie diesen Flow nur, wenn sicherere Optionen wie verwaltete Identitäten für kennwortlose oder schlüssellose Verbindungen nicht geeignet sind. Bei Vorgängen des lokalen Computers bevorzugen Sie Benutzeridentitäten für kennwortlose oder schlüssellose Verbindungen.

    az keyvault secret set \
        --vault-name ${KEY_VAULT_NAME} \
        --name "ConnectionStrings--OrderContext" \
        --value "Server=${POSTGRES_SERVER_NAME};Database=acmefit_order;Port=5432;Ssl Mode=Require;User Id=${POSTGRES_USERNAME};Password=${POSTGRES_PASSWORD};"
    
  7. Verwenden Sie die folgenden Befehle, um Redis-Verbindungseigenschaften abzurufen und in Key Vault zu speichern:

    Hinweis

    Microsoft empfiehlt, immer den sichersten Authentifizierungsflow zu verwenden, der verfügbar ist. Der in diesem Verfahren beschriebene Authentifizierungsflow, beispielsweise für Datenbanken, Zwischenspeicher, Nachrichten oder KI-Dienste, erfordert ein sehr hohes Maß an Vertrauen in die Anwendung und birgt Risiken, die bei anderen Flows nicht vorhanden sind. Verwenden Sie diesen Flow nur, wenn sicherere Optionen wie verwaltete Identitäten für kennwortlose oder schlüssellose Verbindungen nicht geeignet sind. Bei Vorgängen des lokalen Computers bevorzugen Sie Benutzeridentitäten für kennwortlose oder schlüssellose Verbindungen.

    export REDIS_HOST=$(az redis show \
        --resource-group ${RESOURCE_GROUP} \
        --name ${REDIS_CACHE_NAME} | jq -r '.hostName')
    
    export REDIS_PORT=$(az redis show \
        --resource-group ${RESOURCE_GROUP} \
        --name ${REDIS_CACHE_NAME} | jq -r '.sslPort')
    
    export REDIS_PRIMARY_KEY=$(az redis list-keys \
        --resource-group ${RESOURCE_GROUP} \
        --name ${REDIS_CACHE_NAME} | jq -r '.primaryKey')
    
    az keyvault secret set \
        --vault-name ${KEY_VAULT_NAME} \
        --name "CART-REDIS-CONNECTION-STRING" \
        --value "rediss://:${REDIS_PRIMARY_KEY}@${REDIS_HOST}:${REDIS_PORT}/0"
    
  8. Wenn Sie einmaliges Anmelden konfiguriert haben, verwenden Sie den folgenden Befehl, um den JSON Web Key (JWK)-URI in Key Vault zu speichern:

    az keyvault secret set \
        --vault-name ${KEY_VAULT_NAME} \
        --name "SSO-PROVIDER-JWK-URI" \
        --value <jwk-uri>
    

Gewähren von Zugriff auf Geheimnisse in Key Vault für Anwendungen

In den folgenden Anweisungen wird beschrieben, wie Sie Zugriff auf Key Vault-Geheimnisse für Anwendungen gewähren, die im Azure Spring Apps Enterprise-Plan bereitgestellt werden.

  1. Verwenden Sie den folgenden Befehl, um eine systemseitig zugewiesene Identität für die Cart Service-Anwendung zu aktivieren:

    az spring app identity assign \
        --resource-group ${RESOURCE_GROUP} \
        --name cart-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME}
    
  2. Verwenden Sie die folgenden Befehle, um die Zugriffsrichtlinie get list in Key Vault für die Cart Service-Anwendung festzulegen:

    export CART_SERVICE_APP_IDENTITY=$(az spring app show \
        --resource-group ${RESOURCE_GROUP} \
        --name cart-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} | jq -r '.identity.principalId')
    
    az keyvault set-policy \
        --name ${KEY_VAULT_NAME} \
        --object-id ${CART_SERVICE_APP_IDENTITY} \
        --resource-group ${RESOURCE_GROUP} \
        --secret-permissions get list
    
  3. Verwenden Sie den folgenden Befehl, um eine systemseitig zugewiesene Identität für die Order Service-Anwendung zu aktivieren:

    az spring app identity assign \
        --resource-group ${RESOURCE_GROUP} \
        --name order-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME}
    
  4. Verwenden Sie die folgenden Befehle, um die Zugriffsrichtlinie get list in Key Vault für die Order Service-Anwendung festzulegen:

    export ORDER_SERVICE_APP_IDENTITY=$(az spring app show \
        --resource-group ${RESOURCE_GROUP} \
        --name order-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} | jq -r '.identity.principalId')
    
    az keyvault set-policy \
        --name ${KEY_VAULT_NAME} \
        --object-id ${ORDER_SERVICE_APP_IDENTITY} \
        --resource-group ${RESOURCE_GROUP} \
        --secret-permissions get list
    
  5. Verwenden Sie den folgenden Befehl, um eine systemseitig zugewiesene Identität für die Catalog Service-Anwendung zu aktivieren:

    az spring app identity assign \
        --resource-group ${RESOURCE_GROUP} \
        --name catalog-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME}
    
  6. Verwenden Sie die folgenden Befehle, um die Zugriffsrichtlinie get list in Key Vault für die Catalog Service-Anwendung festzulegen:

    export CATALOG_SERVICE_APP_IDENTITY=$(az spring app show \
        --resource-group ${RESOURCE_GROUP} \
        --name catalog-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} | jq -r '.identity.principalId')
    
    az keyvault set-policy \
        --name ${KEY_VAULT_NAME} \
        --object-id ${CATALOG_SERVICE_APP_IDENTITY} \
        --resource-group ${RESOURCE_GROUP} \
        --secret-permissions get list
    
  7. Wenn Sie einmaliges Anmelden konfiguriert haben, verwenden Sie den folgenden Befehl, um eine systemseitig zugewiesene Identität für die Identity Service-Anwendung zu aktivieren:

    az spring app identity assign \
        --resource-group ${RESOURCE_GROUP} \
        --name identity-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME}
    
  8. Wenn Sie Einmaliges Anmelden konfiguriert haben, verwenden Sie die folgenden Befehle, um eine Zugriffsrichtlinie für get list auf Key Vault für die Anwendung Identity Service festzulegen:

    export IDENTITY_SERVICE_APP_IDENTITY=$(az spring app show \
        --resource-group ${RESOURCE_GROUP} \
        --name identity-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} | jq -r '.identity.principalId')
    
    az keyvault set-policy \
        --name ${KEY_VAULT_NAME} \
        --object-id ${IDENTITY_SERVICE_APP_IDENTITY} \
        --resource-group ${RESOURCE_GROUP} \
        --secret-permissions get list
    

Aktualisieren von Anwendungen zum Laden von Key Vault-Geheimnissen

Nachdem Sie Zugriff zum Lesen von Geheimnissen aus Key Vault erteilt haben, gehen Sie nach den folgenden Schritten vor, um die Anwendungen für die Verwendung der neuen geheimen Werte in ihren Konfigurationen zu aktualisieren.

  1. Verwenden Sie den folgenden Befehl, um den URI für Key Vault abzurufen, der bei der Aktualisierung von Anwendungen verwendet werden soll:

    export KEYVAULT_URI=$(az keyvault show --name ${KEY_VAULT_NAME} --resource-group ${RESOURCE_GROUP} | jq -r '.properties.vaultUri')
    
  2. Verwenden Sie den folgenden Befehl, um die URL für Spring Cloud Gateway abzurufen, die bei der Aktualisierung von Anwendungen verwendet werden soll:

    export GATEWAY_URL=$(az spring gateway show \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} | jq -r '.properties.url')
    
  3. Verwenden Sie den folgenden Befehl, um den Dienstconnector zu entfernen, der die Order Service-Anwendung und den flexiblen Azure Database for PostgreSQL-Server bindet:

    az spring connection delete \
        --resource-group ${RESOURCE_GROUP} \
        --app order-service \
        --connection order_service_db \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --deployment default \
        --yes
    
  4. Verwenden Sie den folgenden Befehl, um die Order Service-Umgebung mit dem URI zu aktualisieren, um auf Key Vault zuzugreifen:

    Hinweis

    Microsoft empfiehlt, immer den sichersten Authentifizierungsflow zu verwenden, der verfügbar ist. Der in diesem Verfahren beschriebene Authentifizierungsflow, beispielsweise für Datenbanken, Zwischenspeicher, Nachrichten oder KI-Dienste, erfordert ein sehr hohes Maß an Vertrauen in die Anwendung und birgt Risiken, die bei anderen Flows nicht vorhanden sind. Verwenden Sie diesen Flow nur, wenn sicherere Optionen wie verwaltete Identitäten für kennwortlose oder schlüssellose Verbindungen nicht geeignet sind. Bei Vorgängen des lokalen Computers bevorzugen Sie Benutzeridentitäten für kennwortlose oder schlüssellose Verbindungen.

    az spring app update \
        --resource-group ${RESOURCE_GROUP} \
        --name order-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --env "ConnectionStrings__KeyVaultUri=${KEYVAULT_URI}" "AcmeServiceSettings__AuthUrl=https://${GATEWAY_URL}" "DatabaseProvider=Postgres"
    
  5. Verwenden Sie den folgenden Befehl, um den Dienstconnector zu entfernen, der die Catalog Service-Anwendung und den flexiblen Azure Database for PostgreSQL-Server bindet:

    az spring connection delete \
        --resource-group ${RESOURCE_GROUP} \
        --app catalog-service \
        --connection catalog_service_db \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --deployment default \
        --yes
    
  6. Verwenden Sie den folgenden Befehl, um die Catalog Service-Umgebung und das Konfigurationsmuster zu aktualisieren, um auf Key Vault zuzugreifen:

    az spring app update \
        --resource-group ${RESOURCE_GROUP} \
        --name catalog-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --config-file-pattern catalog/default,catalog/key-vault \
        --env "SPRING_CLOUD_AZURE_KEYVAULT_SECRET_PROPERTY_SOURCES_0_ENDPOINT=${KEYVAULT_URI}" "SPRING_CLOUD_AZURE_KEYVAULT_SECRET_PROPERTY_SOURCES_0_NAME='acme-fitness-store-vault'" "SPRING_PROFILES_ACTIVE=default,key-vault"
    
  7. Verwenden Sie den folgenden Befehl, um den Dienstconnector zu entfernen, der die Cart Service-Anwendung und den Azure Cache for Redis bindet:

    az spring connection delete \
        --resource-group ${RESOURCE_GROUP} \
        --app cart-service \
        --connection cart_service_cache \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --deployment default \
        --yes
    
  8. Verwenden Sie den folgenden Befehl, um die Cart Service-Umgebung zu aktualisieren, um auf Key Vault zuzugreifen:

    az spring app update \
        --resource-group ${RESOURCE_GROUP} \
        --name cart-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --env "CART_PORT=8080" "KEYVAULT_URI=${KEYVAULT_URI}" "AUTH_URL=https://${GATEWAY_URL}"
    
  9. Wenn Sie Einmaliges Anmelden konfiguriert haben, verwenden Sie den folgenden Befehl, um die Identitätsdienstumgebung und das Konfigurationsmuster für den Zugriff auf Key Vault zu aktualisieren:

    az spring app update \
        --resource-group ${RESOURCE_GROUP} \
        --name identity-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --config-file-pattern identity/default,identity/key-vault \
        --env "SPRING_CLOUD_AZURE_KEYVAULT_SECRET_PROPERTY_SOURCES_0_ENDPOINT=${KEYVAULT_URI}" "SPRING_CLOUD_AZURE_KEYVAULT_SECRET_PROPERTY_SOURCES_0_NAME='acme-fitness-store-vault'" "SPRING_PROFILES_ACTIVE=default,key-vault"
    
  10. Verwenden Sie die folgenden Befehle, um die URL für das Spring Cloud Gateway abzurufen:

    export GATEWAY_URL=$(az spring gateway show \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} | jq -r '.properties.url')
    
    echo "https://${GATEWAY_URL}"
    

    Sie können die Ausgabe-URL in einem Browser öffnen, um die aktualisierte Anwendung zu erkunden.

Bereinigen von Ressourcen

Falls Sie mit weiteren Schnellstartanleitungen und Tutorials fortfahren möchten, sollten Sie die Ressourcen nicht bereinigen. Wenn Sie die Ressourcen nicht mehr benötigen, löschen Sie die Ressourcengruppe. Dadurch werden die Ressourcen in der Ressourcengruppe gelöscht. Wenn Sie die Ressourcengruppe mithilfe der Azure CLI löschen möchten, verwenden Sie die folgenden Befehle:

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

Nächste Schritte

Fahren Sie mit einer der folgenden optionalen Schnellstartanleitungen fort: