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
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
- Azure Market'da Kurumsal planın Gereksinimler bölümünü anlayın ve yerine getirin.
- Azure CLI sürüm 2.45.0 veya üzeri.
- Git.
- jq
- Azure Spring Apps Kurumsal plan uzantısı. Önceki sürümleri kaldırmak ve en son Kurumsal plan uzantısını yüklemek için aşağıdaki komutu kullanın. Uzantıyı
spring-cloud
daha önce yüklediyseniz yapılandırma ve sürüm uyuşmazlıklarını önlemek için uzantıyı kaldırın.az extension add --upgrade --name spring az extension remove --name spring-cloud
- Aşağıdaki hızlı başlangıçlarda yer alan adımları tamamlayın:
- Kurumsal planı kullanarak uygulamaları derleyin ve Azure Spring Apps'e dağıtın.
- PostgreSQL için Azure Veritabanı ve Redis için Azure Cache ile tümleştirme
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.
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>
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}
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"
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"
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}"
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};"
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"
Ç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.
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}
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
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}
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
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}
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
Ç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}
Ç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.
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')
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')
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
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"
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
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"
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
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}"
Ç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"
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: