Aracılığıyla paylaş


Hızlı Başlangıç: Key Vault kullanarak uygulama gizli dizilerini yükleme

Not

Temel, Standart ve Kurumsal planları, 3 yıllık kullanımdan kaldırma süresiyle Mart 2025 ortasından itibaren kullanımdan kaldırılacaktır. Azure Container Apps'e geçiş yapmanızı öneririz. Daha fazla bilgi için bkz . Azure Spring Apps kullanımdan kaldırma duyurusu.

Standart tüketim ve ayrılmış plan, altı ay sonra tamamen kapatılarak 30 Eylül 2024'den itibaren kullanımdan kaldırılacaktır. Azure Container Apps'e geçiş yapmanızı öneririz. Daha fazla bilgi için bkz . Azure Spring Apps Standart tüketimini ve ayrılmış planı Azure Container Apps'e geçirme.

Bu makale şunlar için geçerlidir: ❎ Temel/Standart ✅ Kurumsal

Bu hızlı başlangıçta, Azure Spring Apps Enterprise planını çalıştıran uygulamalar için Azure Key Vault kullanarak gizli dizileri güvenli bir şekilde yükleme işlemi gösterilmektedir.

Her uygulamanın ortamına ve destekleyici hizmetlerine bağlayan özellikleri vardır. Bu hizmetler veritabanları, günlüğe kaydetme ve izleme araçları, mesajlaşma platformları gibi kaynakları içerir. Her kaynak, genellikle URL'ler ve kimlik bilgileri biçiminde bu kaynağı bulup erişmek için bir yol gerektirir. Bu bilgiler genellikle yasalar tarafından korunur ve müşteri verilerini korumak için gizli tutulmalıdır. Azure Spring Apps'te yönetilen kimlikleri ve Azure rol tabanlı erişim denetimini kullanarak uygulamaları Key Vault'tan bu gizli dizileri doğrudan belleğe yüklenecek şekilde yapılandırabilirsiniz.

Önkoşullar

Key Vault sağlama ve gizli dizileri depolama

Aşağıdaki yönergelerde Key Vault oluşturma ve uygulama gizli dizilerini güvenli bir şekilde kaydetme açıklanmaktadır.

  1. Aşağıdaki komutları kullanarak kaynak adlarını tutmak için değişkenler oluşturun. Yer tutucuları kendi değerlerinizle değiştirmeyi unutmayın.

    Not

    Microsoft, kullanılabilir en güvenli kimlik doğrulama akışının kullanılmasını önerir. Veritabanları, önbellekler, mesajlaşma veya yapay zeka hizmetleri gibi bu yordamda açıklanan kimlik doğrulama akışı, uygulamaya çok yüksek düzeyde güven gerektirir ve diğer akışlarda mevcut olmayan riskler taşır. Bu akışı yalnızca parolasız veya anahtarsız bağlantılar için yönetilen kimlikler gibi daha güvenli seçenekler uygun olmadığında kullanın. Yerel makine işlemleri için parolasız veya anahtarsız bağlantılar için kullanıcı kimliklerini tercih edin.

    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. Uygulama gizli dizilerini depolamak üzere bir Key Vault oluşturmak için aşağıdaki komutu kullanın:

    az keyvault create \
        --resource-group ${RESOURCE_GROUP} \
        --name ${KEY_VAULT_NAME}
    
  3. Key Vault'ta tam veritabanı sunucusu adını depolamak için aşağıdaki komutu kullanın:

    az keyvault secret set \
        --vault-name ${KEY_VAULT_NAME} \
        --name "POSTGRES-SERVER-NAME" \
        --value "${POSTGRES_SERVER_NAME}.postgres.database.azure.com"
    
  4. Katalog Hizmeti uygulaması için key vault'ta veritabanı adını depolamak için aşağıdaki komutu kullanın:

    az keyvault secret set \
        --vault-name ${KEY_VAULT_NAME} \
        --name "CATALOG-DATABASE-NAME" \
        --value "acmefit_catalog"
    
  5. Key Vault'ta veritabanı oturum açma kimlik bilgilerini depolamak için aşağıdaki komutları kullanın:

    Not

    Microsoft, kullanılabilir en güvenli kimlik doğrulama akışının kullanılmasını önerir. Veritabanları, önbellekler, mesajlaşma veya yapay zeka hizmetleri gibi bu yordamda açıklanan kimlik doğrulama akışı, uygulamaya çok yüksek düzeyde güven gerektirir ve diğer akışlarda mevcut olmayan riskler taşır. Bu akışı yalnızca parolasız veya anahtarsız bağlantılar için yönetilen kimlikler gibi daha güvenli seçenekler uygun olmadığında kullanın. Yerel makine işlemleri için parolasız veya anahtarsız bağlantılar için kullanıcı kimliklerini tercih edin.

    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. Sipariş Hizmeti uygulaması için veritabanı bağlantı dizesi Key Vault'ta depolamak için aşağıdaki komutu kullanın:

    Not

    Microsoft, kullanılabilir en güvenli kimlik doğrulama akışının kullanılmasını önerir. Veritabanları, önbellekler, mesajlaşma veya yapay zeka hizmetleri gibi bu yordamda açıklanan kimlik doğrulama akışı, uygulamaya çok yüksek düzeyde güven gerektirir ve diğer akışlarda mevcut olmayan riskler taşır. Bu akışı yalnızca parolasız veya anahtarsız bağlantılar için yönetilen kimlikler gibi daha güvenli seçenekler uygun olmadığında kullanın. Yerel makine işlemleri için parolasız veya anahtarsız bağlantılar için kullanıcı kimliklerini tercih edin.

    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. Redis bağlantı özelliklerini almak ve Key Vault'ta depolamak için aşağıdaki komutları kullanın:

    Not

    Microsoft, kullanılabilir en güvenli kimlik doğrulama akışının kullanılmasını önerir. Veritabanları, önbellekler, mesajlaşma veya yapay zeka hizmetleri gibi bu yordamda açıklanan kimlik doğrulama akışı, uygulamaya çok yüksek düzeyde güven gerektirir ve diğer akışlarda mevcut olmayan riskler taşır. Bu akışı yalnızca parolasız veya anahtarsız bağlantılar için yönetilen kimlikler gibi daha güvenli seçenekler uygun olmadığında kullanın. Yerel makine işlemleri için parolasız veya anahtarsız bağlantılar için kullanıcı kimliklerini tercih edin.

    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. Çoklu oturum açmayı yapılandırdıysanız, JSON Web Anahtarı (JWK) URI'sini Key Vault'ta depolamak için aşağıdaki komutu kullanın:

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

Key Vault'ta uygulamalara gizli dizilere erişim izni verme

Aşağıdaki yönergelerde, Azure Spring Apps Kurumsal planına dağıtılan uygulamalara Key Vault gizli dizilerine erişim izni verme adımları açıklanmaktadır.

  1. Sepet Hizmeti uygulaması için Sistem Tarafından Atanan Kimliği etkinleştirmek için aşağıdaki komutu kullanın:

    az spring app identity assign \
        --resource-group ${RESOURCE_GROUP} \
        --name cart-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME}
    
  2. Sepet Hizmeti uygulaması için Key Vault'ta erişim ilkesi get list ayarlamak için aşağıdaki komutları kullanın:

    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. Sipariş Hizmeti uygulaması için Sistem Tarafından Atanan Kimliği etkinleştirmek için aşağıdaki komutu kullanın:

    az spring app identity assign \
        --resource-group ${RESOURCE_GROUP} \
        --name order-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME}
    
  4. Sipariş Hizmeti uygulaması için Key Vault'ta erişim ilkesi get list ayarlamak için aşağıdaki komutları kullanın:

    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. Katalog Hizmeti uygulaması için Sistem Tarafından Atanan Kimliği etkinleştirmek için aşağıdaki komutu kullanın:

    az spring app identity assign \
        --resource-group ${RESOURCE_GROUP} \
        --name catalog-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME}
    
  6. Katalog Hizmeti uygulaması için Key Vault'ta erişim ilkesi get list ayarlamak için aşağıdaki komutları kullanın:

    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. Çoklu oturum açmayı yapılandırdıysanız, Kimlik Hizmeti uygulaması için Sistem Tarafından Atanan Kimliği etkinleştirmek için aşağıdaki komutu kullanın:

    az spring app identity assign \
        --resource-group ${RESOURCE_GROUP} \
        --name identity-service \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME}
    
  8. Çoklu oturum açmayı yapılandırdıysanız, Kimlik Hizmeti uygulaması için Key Vault'ta erişim ilkesi get list ayarlamak için aşağıdaki komutları kullanın:

    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
    

Key Vault gizli dizilerini yüklemek için uygulamaları güncelleştirme

Key Vault'tan gizli dizileri okuma erişimi verdikten sonra, uygulamaları yapılandırmalarında yeni gizli dizi değerlerini kullanacak şekilde güncelleştirmek için aşağıdaki adımları kullanın.

  1. Uygulamaları güncelleştirirken kullanılacak Key Vault URI'sini almak için aşağıdaki komutu kullanın:

    export KEYVAULT_URI=$(az keyvault show --name ${KEY_VAULT_NAME} --resource-group ${RESOURCE_GROUP} | jq -r '.properties.vaultUri')
    
  2. Uygulamaları güncelleştirmede kullanılacak Spring Cloud Gateway URL'sini almak için aşağıdaki komutu kullanın:

    export GATEWAY_URL=$(az spring gateway show \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} | jq -r '.properties.url')
    
  3. Sipariş Hizmeti uygulamasını ve PostgreSQL için Azure Veritabanı Esnek Sunucuyu bağlayan Hizmet Bağlayıcısını kaldırmak için aşağıdaki komutu kullanın:

    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. Key Vault'a erişmek üzere Order Service ortamını URI ile güncelleştirmek için aşağıdaki komutu kullanın:

    Not

    Microsoft, kullanılabilir en güvenli kimlik doğrulama akışının kullanılmasını önerir. Veritabanları, önbellekler, mesajlaşma veya yapay zeka hizmetleri gibi bu yordamda açıklanan kimlik doğrulama akışı, uygulamaya çok yüksek düzeyde güven gerektirir ve diğer akışlarda mevcut olmayan riskler taşır. Bu akışı yalnızca parolasız veya anahtarsız bağlantılar için yönetilen kimlikler gibi daha güvenli seçenekler uygun olmadığında kullanın. Yerel makine işlemleri için parolasız veya anahtarsız bağlantılar için kullanıcı kimliklerini tercih edin.

    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. Katalog Hizmeti uygulamasını ve PostgreSQL için Azure Veritabanı Esnek Sunucusu'nu bağlayan Hizmet Bağlayıcısı'nı kaldırmak için aşağıdaki komutu kullanın:

    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. Key Vault'a erişmek üzere Katalog Hizmeti ortamını ve yapılandırma düzenini güncelleştirmek için aşağıdaki komutu kullanın:

    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. Hizmet Bağlayıcısı bağlamasını Sepet Hizmeti uygulamasını ve Redis için Azure Cache kaldırmak için aşağıdaki komutu kullanın:

    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. Key Vault'a erişmek üzere Sepet Hizmeti ortamını güncelleştirmek için aşağıdaki komutu kullanın:

    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. Çoklu oturum açmayı yapılandırdıysanız, Key Vault'a erişmek üzere Kimlik Hizmeti ortamını ve yapılandırma düzenini güncelleştirmek için aşağıdaki komutu kullanın:

    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. Spring Cloud Gateway URL'sini almak için aşağıdaki komutları kullanın:

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

    Güncelleştirilmiş uygulamayı keşfetmek için çıkış URL'sini tarayıcıda açabilirsiniz.

Kaynakları temizleme

Sonraki hızlı başlangıçlar ve öğreticilerle çalışmaya devam etmek istiyorsanız, bu kaynakları yerinde bırakmak isteyebilirsiniz. Artık gerekli olmadığında kaynak grubunu silin; bu da kaynak grubundaki kaynakları siler. Azure CLI kullanarak kaynak grubunu silmek için aşağıdaki komutları kullanın:

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

Sonraki adımlar

Aşağıdaki isteğe bağlı hızlı başlangıçlardan herhangi birine geçin: