Quickstart: Toepassingsgeheimen laden met Key Vault

Notitie

Azure Spring Apps is de nieuwe naam voor de Azure Spring Cloud-service. Hoewel de service een nieuwe naam heeft, ziet u de oude naam op sommige plaatsen terwijl we werken aan het bijwerken van assets, zoals schermopnamen, video's en diagrammen.

Dit artikel is van toepassing op:❌ Basic/Standard ✔️ Enterprise

In deze quickstart ziet u hoe u geheimen veilig laadt met behulp van Azure Key Vault voor apps waarop het Azure Spring Apps Enterprise-plan wordt uitgevoerd.

Elke toepassing heeft eigenschappen die deze verbinden met de omgeving en ondersteunende services. Deze services omvatten resources zoals databases, hulpprogramma's voor logboekregistratie en bewaking, berichtenplatformen, enzovoort. Voor elke resource is een manier nodig om deze te vinden en te openen, vaak in de vorm van URL's en referenties. Deze informatie wordt vaak beschermd door de wet en moet geheim worden gehouden om klantgegevens te beschermen. In Azure Spring Apps kunt u toepassingen configureren om deze geheimen rechtstreeks vanuit Key Vault in het geheugen te laden met behulp van beheerde identiteiten en op rollen gebaseerd toegangsbeheer van Azure.

Vereisten

Key Vault inrichten en geheimen opslaan

In de volgende instructies wordt beschreven hoe u een Key Vault maakt en toepassingsgeheimen veilig opslaat.

  1. Maak variabelen voor het opslaan van de resourcenamen met behulp van de volgende opdrachten. Vervang de tijdelijke aanduidingen door uw eigen waarden.

    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. Gebruik de volgende opdracht om een Key Vault te maken om toepassingsgeheimen op te slaan:

    az keyvault create \
        --resource-group ${RESOURCE_GROUP} \
        --name ${KEY_VAULT_NAME}
    
  3. Gebruik de volgende opdracht om de volledige naam van de databaseserver op te slaan in Key Vault:

    az keyvault secret set \
        --vault-name ${KEY_VAULT_NAME} \
        --name "POSTGRES-SERVER-NAME" \
        --value "${POSTGRES_SERVER_NAME}.postgres.database.azure.com"
    
  4. Gebruik de volgende opdracht om de databasenaam op te slaan in Key Vault voor de catalogusservicetoepassing:

    az keyvault secret set \
        --vault-name ${KEY_VAULT_NAME} \
        --name "CATALOG-DATABASE-NAME" \
        --value "acmefit_catalog"
    
  5. Gebruik de volgende opdrachten om de aanmeldingsreferenties voor de database op te slaan in Key Vault:

    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. Gebruik de volgende opdracht om de database-verbindingsreeks op te slaan in Key Vault voor de orderservicetoepassing:

    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. Gebruik de volgende opdrachten om Redis-verbindingseigenschappen op te halen en op te slaan in Key Vault:

    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. Als u eenmalige aanmelding hebt geconfigureerd, gebruikt u de volgende opdracht om de JSON Web Key -URI (JWK) op te slaan in Key Vault:

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

Toepassingen toegang verlenen tot geheimen in Key Vault

In de volgende instructies wordt beschreven hoe u toegang verleent tot Key Vault-geheimen voor toepassingen die zijn geïmplementeerd in het Azure Spring Apps Enterprise-plan.

  1. Gebruik de volgende opdracht om een door het systeem toegewezen identiteit in te schakelen voor de winkelwagenservicetoepassing:

    az spring app identity assign \
        --resource-group ${RESOURCE_GROUP} \
        --name cart-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME}
    
  2. Gebruik de volgende opdrachten om een toegangsbeleid in te stellen voor get list Key Vault voor de winkelwagenservicetoepassing:

    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. Gebruik de volgende opdracht om een door het systeem toegewezen identiteit in te schakelen voor de orderservicetoepassing:

    az spring app identity assign \
        --resource-group ${RESOURCE_GROUP} \
        --name order-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME}
    
  4. Gebruik de volgende opdrachten om een toegangsbeleid in te stellen voor get list Key Vault voor de orderservicetoepassing:

    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. Gebruik de volgende opdracht om een door het systeem toegewezen identiteit in te schakelen voor de catalogusservicetoepassing:

    az spring app identity assign \
        --resource-group ${RESOURCE_GROUP} \
        --name catalog-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME}
    
  6. Gebruik de volgende opdrachten om een toegangsbeleid in te stellen voor get list Key Vault voor de catalogusservicetoepassing:

    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. Als u eenmalige aanmelding hebt geconfigureerd , gebruikt u de volgende opdracht om een door het systeem toegewezen identiteit in te schakelen voor de Identity Service-toepassing:

    az spring app identity assign \
        --resource-group ${RESOURCE_GROUP} \
        --name identity-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME}
    
  8. Als u eenmalige aanmelding hebt geconfigureerd, gebruikt u de volgende opdrachten om een toegangsbeleid in te stellen voor get list Key Vault voor de Identity Service-toepassing:

    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
    

Toepassingen bijwerken om Key Vault-geheimen te laden

Nadat u toegang hebt verleend tot het lezen van geheimen uit Key Vault, gebruikt u de volgende stappen om de toepassingen bij te werken voor het gebruik van de nieuwe geheime waarden in hun configuraties.

  1. Gebruik de volgende opdracht om de URI voor Key Vault op te halen voor het bijwerken van toepassingen:

    export KEYVAULT_URI=$(az keyvault show --name ${KEY_VAULT_NAME} --resource-group ${RESOURCE_GROUP} | jq -r '.properties.vaultUri')
    
  2. Gebruik de volgende opdracht om de URL voor Spring Cloud Gateway op te halen die moet worden gebruikt bij het bijwerken van toepassingen:

    export GATEWAY_URL=$(az spring gateway show \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} | jq -r '.properties.url')
    
  3. Gebruik de volgende opdracht om de Service Verbinding maken or de Order Service-toepassing en de Flexibele Server van Azure Database for PostgreSQL te verwijderen:

    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. Gebruik de volgende opdracht om de Order Service-omgeving bij te werken met de URI voor toegang tot Key Vault:

    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. Gebruik de volgende opdracht om de Service Verbinding maken or de Catalogusservicetoepassing en de Flexibele Server van Azure Database for PostgreSQL te verwijderen:

    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. Gebruik de volgende opdracht om de catalogusserviceomgeving en het configuratiepatroon bij te werken voor toegang tot Key Vault:

    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. Gebruik de volgende opdracht om de service Verbinding maken or de winkelwagenservicetoepassing en de Azure Cache voor Redis te verwijderen:

    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. Gebruik de volgende opdracht om de Cart Service-omgeving bij te werken voor toegang tot Key Vault:

    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. Als u eenmalige aanmelding hebt geconfigureerd , gebruikt u de volgende opdracht om de Identity Service-omgeving en het configuratiepatroon bij te werken voor toegang tot Key Vault:

    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. Gebruik de volgende opdrachten om de URL voor Spring Cloud Gateway op te halen:

    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}"
    

    U kunt de uitvoer-URL openen in een browser om de bijgewerkte toepassing te verkennen.

Resources opschonen

Als u van plan bent om verder te gaan met volgende snelstarts en zelfstudies, kunt u deze resources het beste intact laten. Als u de resourcegroep niet meer nodig hebt, verwijdert u deze. Hierdoor worden ook de resources in de resourcegroep verwijderd. Als u de resourcegroep wilt verwijderen met behulp van Azure CLI, gebruikt u de volgende opdrachten:

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

Volgende stappen

Ga door naar een van de volgende optionele quickstarts: