Dela via


Snabbstart: Läsa in programhemligheter med Key Vault

Kommentar

Azure Spring Apps är det nya namnet på Azure Spring Cloud-tjänsten. Även om tjänsten har ett nytt namn ser du det gamla namnet på vissa platser ett tag medan vi arbetar med att uppdatera tillgångar som skärmbilder, videor och diagram.

Den här artikeln gäller för:❌ Basic/Standard ✔️ Enterprise

Den här snabbstarten visar hur du på ett säkert sätt läser in hemligheter med Hjälp av Azure Key Vault för appar som kör Azure Spring Apps Enterprise-planen.

Varje program har egenskaper som ansluter det till sin miljö och stödtjänster. Dessa tjänster omfattar resurser som databaser, loggnings- och övervakningsverktyg, meddelandeplattformar och så vidare. Varje resurs kräver ett sätt att hitta och komma åt den, ofta i form av URL:er och autentiseringsuppgifter. Den här informationen skyddas ofta av lag och måste hållas hemlig för att kunna skydda kunddata. I Azure Spring Apps kan du konfigurera program för att direkt läsa in dessa hemligheter i minnet från Key Vault med hjälp av hanterade identiteter och rollbaserad åtkomstkontroll i Azure.

Förutsättningar

Etablera Key Vault och lagra hemligheter

Följande instruktioner beskriver hur du skapar ett Key Vault och sparar programhemligheter på ett säkert sätt.

  1. 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 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. Använd följande kommando för att skapa ett Key Vault för att lagra programhemligheter:

    az keyvault create \
        --resource-group ${RESOURCE_GROUP} \
        --name ${KEY_VAULT_NAME}
    
  3. Använd följande kommando för att lagra det fullständiga databasservernamnet i Key Vault:

    az keyvault secret set \
        --vault-name ${KEY_VAULT_NAME} \
        --name "POSTGRES-SERVER-NAME" \
        --value "${POSTGRES_SERVER_NAME}.postgres.database.azure.com"
    
  4. Använd följande kommando för att lagra databasnamnet i Key Vault för katalogtjänstprogrammet:

    az keyvault secret set \
        --vault-name ${KEY_VAULT_NAME} \
        --name "CATALOG-DATABASE-NAME" \
        --value "acmefit_catalog"
    
  5. Använd följande kommandon för att lagra autentiseringsuppgifterna för databasinloggning i 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. Använd följande kommando för att lagra databasen anslutningssträng i Key Vault för ordertjänstprogrammet:

    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. Använd följande kommandon för att hämta Redis-anslutningsegenskaper och lagra dem i 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. Om du har konfigurerat enkel inloggning använder du följande kommando för att lagra JSON-webbnyckelns (JWK) URI i Key Vault:

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

Bevilja program åtkomst till hemligheter i Key Vault

Följande instruktioner beskriver hur du beviljar åtkomst till Key Vault-hemligheter till program som distribuerats till Azure Spring Apps Enterprise-planen.

  1. Använd följande kommando för att aktivera en systemtilldelad identitet för Cart Service-programmet:

    az spring app identity assign \
        --resource-group ${RESOURCE_GROUP} \
        --name cart-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME}
    
  2. Använd följande kommandon för att ange en åtkomstprincip get list för i Key Vault för Cart Service-programmet:

    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. Använd följande kommando för att aktivera en systemtilldelad identitet för ordertjänstprogrammet:

    az spring app identity assign \
        --resource-group ${RESOURCE_GROUP} \
        --name order-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME}
    
  4. Använd följande kommandon för att ange en åtkomstprincip get list för i Key Vault för Order Service-programmet:

    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. Använd följande kommando för att aktivera en systemtilldelad identitet för katalogtjänstprogrammet:

    az spring app identity assign \
        --resource-group ${RESOURCE_GROUP} \
        --name catalog-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME}
    
  6. Använd följande kommandon för att ange en åtkomstprincip get list för i Key Vault för katalogtjänstprogrammet:

    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. Om du har konfigurerat enkel inloggning använder du följande kommando för att aktivera en systemtilldelad identitet för Identity Service-programmet:

    az spring app identity assign \
        --resource-group ${RESOURCE_GROUP} \
        --name identity-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME}
    
  8. Om du har konfigurerat enkel inloggning använder du följande kommandon för att ange en åtkomstprincip get list för i Key Vault för Identity Service-programmet:

    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
    

Uppdatera program för att läsa in Key Vault-hemligheter

När du har beviljat åtkomst till läshemligheter från Key Vault använder du följande steg för att uppdatera programmen så att de använder de nya hemliga värdena i sina konfigurationer.

  1. Använd följande kommando för att hämta URI:n för Key Vault som ska användas för att uppdatera program:

    export KEYVAULT_URI=$(az keyvault show --name ${KEY_VAULT_NAME} --resource-group ${RESOURCE_GROUP} | jq -r '.properties.vaultUri')
    
  2. Använd följande kommando för att hämta URL:en för Spring Cloud Gateway som ska användas för att uppdatera program:

    export GATEWAY_URL=$(az spring gateway show \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} | jq -r '.properties.url')
    
  3. Använd följande kommando för att ta bort tjänsten Anslut eller binda ordertjänstprogrammet och Azure Database for PostgreSQL – flexibel server:

    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. Använd följande kommando för att uppdatera Order Service-miljön med URI:n för att få åtkomst till 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. Använd följande kommando för att ta bort tjänsten Anslut eller binda katalogtjänstprogrammet och Azure Database for PostgreSQL – flexibel server:

    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. Använd följande kommando för att uppdatera katalogtjänstmiljön och konfigurationsmönstret för åtkomst till 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. Använd följande kommando för att ta bort tjänsten Anslut eller binda Cart Service-programmet och Azure Cache for Redis:

    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. Använd följande kommando för att uppdatera kundvagnstjänstmiljön för att få åtkomst till 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. Om du har konfigurerat enkel inloggning använder du följande kommando för att uppdatera identitetstjänstens miljö och konfigurationsmönster för åtkomst till 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. Använd följande kommandon för att hämta URL:en för Spring Cloud Gateway:

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

    Du kan öppna utdata-URL:en i en webbläsare för att utforska det uppdaterade programmet.

Rensa resurser

Om du planerar att fortsätta arbeta med efterföljande snabbstarter och självstudier kanske du vill lämna dessa resurser på plats. Ta bort resursgruppen när den inte längre behövs, vilket tar bort resurserna i resursgruppen. Om du vill ta bort resursgruppen med hjälp av Azure CLI använder du följande kommandon:

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

Nästa steg

Fortsätt till någon av följande valfria snabbstarter: