Rövid útmutató: Alkalmazáskulcsok betöltése a Key Vault használatával

Feljegyzés

Az Azure Spring Apps az Azure Spring Cloud szolgáltatás új neve. Bár a szolgáltatásnak új neve van, bizonyos helyeken a régi nevet fogja látni egy darabig, miközben az eszközök, például képernyőképek, videók és diagramok frissítésével dolgozunk.

Ez a cikk a következőre vonatkozik:❌ Basic/Standard ✔️ Enterprise

Ez a rövid útmutató bemutatja, hogyan tölthet be biztonságosan titkos kulcsokat az Azure Key Vault használatával az Azure Spring Apps Enterprise-csomagot futtató alkalmazásokhoz.

Minden alkalmazás rendelkezik olyan tulajdonságokkal, amelyek csatlakoztatják a környezetéhez és a támogató szolgáltatásokhoz. Ezek a szolgáltatások olyan erőforrásokat tartalmaznak, mint az adatbázisok, a naplózási és monitorozási eszközök, az üzenetkezelési platformok stb. Minden erőforráshoz meg kell találni és elérni azt, gyakran URL-ek és hitelesítő adatok formájában. Ezeket az információkat gyakran védi a törvény, és titokban kell tartani az ügyféladatok védelme érdekében. Az Azure Spring Appsben úgy konfigurálhatja az alkalmazásokat, hogy közvetlenül betölthessék ezeket a titkos kulcsokat a Key Vault memóriájába felügyelt identitások és Azure-szerepköralapú hozzáférés-vezérlés használatával.

Előfeltételek

Key Vault kiépítése és titkos kulcsok tárolása

Az alábbi utasítások bemutatják, hogyan hozhat létre Key Vaultot, és hogyan mentheti biztonságosan az alkalmazás titkos kulcsát.

  1. Hozzon létre változókat az erőforrásnevek tárolásához az alábbi parancsokkal. Mindenképpen cserélje le a helyőrzőket a saját értékeire.

    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. Az alábbi paranccsal hozzon létre egy Key Vaultot az alkalmazás titkos kulcsainak tárolásához:

    az keyvault create \
        --resource-group ${RESOURCE_GROUP} \
        --name ${KEY_VAULT_NAME}
    
  3. A következő paranccsal tárolja a teljes adatbázis-kiszolgálónevet a Key Vaultban:

    az keyvault secret set \
        --vault-name ${KEY_VAULT_NAME} \
        --name "POSTGRES-SERVER-NAME" \
        --value "${POSTGRES_SERVER_NAME}.postgres.database.azure.com"
    
  4. Az adatbázis nevének tárolásához használja az alábbi parancsot a Katalógusszolgáltatás-alkalmazás Key Vaultjában:

    az keyvault secret set \
        --vault-name ${KEY_VAULT_NAME} \
        --name "CATALOG-DATABASE-NAME" \
        --value "acmefit_catalog"
    
  5. Az alábbi parancsokkal tárolhatja az adatbázis bejelentkezési hitelesítő adatait a Key Vaultban:

    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. Az alábbi paranccsal tárolja az adatbázis kapcsolati sztring a Key Vaultban az Order Service alkalmazáshoz:

    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. Az alábbi parancsokkal lekérheti a Redis kapcsolat tulajdonságait, és tárolhatja őket a Key Vaultban:

    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. Ha az egyszeri bejelentkezést konfigurálta, a következő paranccsal tárolja a JSON Web Key (JWK) URI-t a Key Vaultban:

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

Titkos kulcsokhoz való hozzáférés biztosítása az alkalmazások számára a Key Vaultban

Az alábbi utasítások bemutatják, hogyan biztosíthat hozzáférést a Key Vault titkos kulcsainak az Azure Spring Apps Enterprise-csomagban üzembe helyezett alkalmazásokhoz.

  1. A következő paranccsal engedélyezze a rendszer által hozzárendelt identitást a Cart Service-alkalmazáshoz:

    az spring app identity assign \
        --resource-group ${RESOURCE_GROUP} \
        --name cart-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME}
    
  2. A Következő parancsokkal állíthatja be a Key Vault hozzáférési szabályzatát get list a Cart Service-alkalmazáshoz:

    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. A következő paranccsal engedélyezze a rendszer által hozzárendelt identitást az Order Service alkalmazáshoz:

    az spring app identity assign \
        --resource-group ${RESOURCE_GROUP} \
        --name order-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME}
    
  4. Az alábbi parancsokkal állíthatja be a Key Vault hozzáférési szabályzatát get list az Order Service alkalmazáshoz:

    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. A katalógusszolgáltatás-alkalmazáshoz a következő paranccsal engedélyezheti a rendszer által hozzárendelt identitást:

    az spring app identity assign \
        --resource-group ${RESOURCE_GROUP} \
        --name catalog-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME}
    
  6. Az alábbi parancsokkal állíthatja be a Key Vault hozzáférési szabályzatát get list a katalógusszolgáltatás-alkalmazáshoz:

    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. Ha az egyszeri bejelentkezést konfigurálta, az alábbi paranccsal engedélyezze a rendszer által hozzárendelt identitást az Identity Service-alkalmazáshoz:

    az spring app identity assign \
        --resource-group ${RESOURCE_GROUP} \
        --name identity-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME}
    
  8. Ha az egyszeri bejelentkezést konfigurálta, az alábbi parancsokkal állítsa be a Key Vault hozzáférési szabályzatát get list az Identity Service-alkalmazáshoz:

    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
    

Alkalmazások frissítése Key Vault-titkos kulcsok betöltéséhez

Miután hozzáférést ad a Key Vault titkos kulcsainak olvasásához, az alábbi lépésekkel frissítheti az alkalmazásokat az új titkos értékek használatára a konfigurációjukban.

  1. Az alábbi paranccsal kérje le a Key Vault URI-jának lekérését az alkalmazások frissítéséhez:

    export KEYVAULT_URI=$(az keyvault show --name ${KEY_VAULT_NAME} --resource-group ${RESOURCE_GROUP} | jq -r '.properties.vaultUri')
    
  2. Az alábbi paranccsal kérje le a Spring Cloud Gateway url-címét az alkalmazások frissítéséhez:

    export GATEWAY_URL=$(az spring gateway show \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} | jq -r '.properties.url')
    
  3. A következő paranccsal távolítsa el a Service Csatlakozás or kötést az Order Service alkalmazáshoz és a rugalmas Azure Database for PostgreSQL-kiszolgálóhoz:

    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. A Következő paranccsal frissítse az Order Service környezetet az URI-val a Key Vault eléréséhez:

    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. A következő paranccsal távolítsa el a Service Csatlakozás or kötést a Catalog Service-alkalmazáshoz és a rugalmas Azure Database for PostgreSQL-kiszolgálóhoz:

    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. A Katalógusszolgáltatás környezetének és konfigurációs mintájának frissítéséhez használja a következő parancsot a Key Vault eléréséhez:

    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. A következő paranccsal távolítsa el a Szolgáltatás Csatlakozás or kötést a Cart Service alkalmazáshoz és az Azure Cache for Redishez:

    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. A Következő paranccsal frissítse a Cart Service-környezetet a Key Vault eléréséhez:

    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. Ha az egyszeri bejelentkezést konfigurálta, az alábbi paranccsal frissítse az Identity Service-környezetet és a konfigurációs mintát a Key Vault eléréséhez:

    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. A Spring Cloud Gateway URL-címének lekéréséhez használja az alábbi parancsokat:

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

    A kimeneti URL-címet megnyithatja egy böngészőben a frissített alkalmazás megismeréséhez.

Az erőforrások eltávolítása

Ha további rövid útmutatókkal és oktatóanyagokkal szeretne dolgozni, érdemes lehet ezeket az erőforrásokat a helyén hagyni. Ha már nincs rá szükség, törölje az erőforráscsoportot, amely törli az erőforráscsoport erőforrásait. Ha törölni szeretné az erőforráscsoportot az Azure CLI használatával, használja a következő parancsokat:

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

Következő lépések

Folytassa az alábbi rövid útmutatók bármelyikével: