Share via


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

Not

Azure Spring Apps, Azure Spring Cloud hizmetinin yeni adıdır. Hizmetin yeni bir adı olsa da, ekran görüntüleri, videolar ve diyagramlar gibi varlıkları güncelleştirmek için çalışırken bazı yerlerde eski adı bir süre görürsünüz.

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.

    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:

    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:

    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:

    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. Service Bağlan veya Order Service uygulamasını ve PostgreSQL için Azure Veritabanı Esnek Sunucuyu bağlamayı 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:

    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şağıdaki komutu kullanarak Hizmet Bağlan veya Katalog Hizmeti uygulamasını ve PostgreSQL için Azure Veritabanı Esnek Sunucuyu bağlayı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. Service Bağlan veya Cart Service uygulamasını ve Redis için Azure Cache bağlamasını 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: