Öğretici: Key Vault kullanarak JavaScript App Service'ten Bilişsel Hizmet bağlantısının güvenliğini sağlama

Azure App Service , bir bağlantı dizesi olmadan arka uç hizmetlerine bağlanmak için yönetilen kimlikleri kullanabilir. Bu yaklaşım, yönetim için bağlantı gizli dizilerini ortadan kaldırır ve arka uç bağlantınızın bir üretim ortamında güvenli kalmasını sağlar. İşiniz bittiğinde, bağlantı gizli bilgilerini App Service'te depolamadan Foundry Araçları'na programatik çağrılar yapan bir uygulamanız olur.

Yönetilen kimlikleri desteklemeyen ve yine de bağlantı gizli dizileri gerektiren arka uç hizmetleri için Azure Key Vault'ı kullanarak bağlantı gizli dizilerini yönetebilirsiniz. Bu öğreticide örnek olarak Foundry Araçları kullanılır. İşiniz bittiğinde, Uygulama Hizmeti'nde bağlantı gizli dizilerini depolamadan Foundry Araçları'na programatik çağrı yapan bir uygulama geliştirmiş olursunuz.

İpucu

Döküm Araçları , yönetilen kimlikler aracılığıyla kimlik doğrulamayı destekler. Bu öğreticide, App Service'ten yönetilen kimlikleri desteklemeyen bir Azure hizmetine nasıl bağlanabileceğinizi göstermek için abonelik anahtarı kimlik doğrulaması gerçekleştirilir.

Bir hizmete bağlanan, ardından anahtar kasasına bağlanarak Bilişsel Hizmetlere erişen kullanıcıyı gösteren diyagram.

Bu mimaride:

  • Yönetilen kimlikler key vault'a güvenli bağlantı sağlar.
  • App Service, Key Vault referanslarını uygulama ayarları şeklinde kullanarak gizli bilgilere erişir.
  • Anahtar kasasına erişim uygulamayla sınırlıdır. Yöneticiler gibi uygulama katkıda bulunanları App Service kaynaklarının tam denetimine sahip olabilir ve aynı zamanda Key Vault gizli dizilerine erişimi olmayabilir.
  • Uygulama kodunuz uygulama ayarlarıyla bağlantı gizli dizilerine zaten erişiyorsa değişiklik gerekmez.

Bu öğreticide şunları öğreneceksiniz:

  • Yönetilen kimlikleri etkinleştirme
  • Key Vault bağlanmak için yönetilen kimlikleri kullanma
  • Key Vault referanslarını kullanma
  • Access Foundry Araçları

Önkoşullar

Ortamınızı Azure CLI için hazırlayın.

  • bash ortamını Azure Cloud Shell kullanın. Daha fazla bilgi için bkz. Azure Cloud Shell ile çalışmaya başlama.

  • CLI referans komutlarını yerel olarak çalıştırmayı tercih ediyorsanız, Azure CLI'yi yükleyin. Windows veya macOS üzerinde çalıştırıyorsanız Azure CLI Docker kapsayıcısında çalıştırmayı göz önünde bulundurun. Daha fazla bilgi için bkz. Docker kapsayıcısında Azure CLI çalıştırma.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz. Azure CLI kullanarak Azure'a Kimlik Doğrulama.

    • İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma ve yönetme.

    • Yüklü olan sürümü ve bağımlı kütüphaneleri bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

Foundry Araçları bağlantısı olan bir uygulama oluşturma

  1. Tüm kaynaklarınızı içerecek bir kaynak grubu oluşturun:

    # Save the resource group name as a variable for convenience
    groupName=myKVResourceGroup
    region=canadacentral
    
    az group create --name $groupName --location $region
    
  2. Döküm Araçları kaynağı oluşturun. cs-resource-name değerini< benzersiz bir adla değiştirin>.

    # Save the resource name as a variable for convenience. 
    csResourceName=<cs-resource-name>
    
    az cognitiveservices account create --resource-group $groupName --name $csResourceName --location $region --kind TextAnalytics --sku F0 --custom-domain $csResourceName
    

    Not

    --sku F0 serbest katmanlı bir Döküm Araçları kaynağı oluşturur. Her abonelik tek bir serbest katmanlı TextAnalytics kaynak kotası ile sınırlıdır. Kotanızı zaten kullandıysanız bunun yerine kullanın --sku S .

JavaScript uygulamasını yapılandırma

Örnek depoyu yerel olarak kopyalayın ve örnek uygulamayı App Service'e dağıtın. Uygulama adını< benzersiz bir adla değiştirin>.

# Clone and prepare sample application
git clone https://github.com/Azure-Samples/app-service-language-detector.git
cd app-service-language-detector/javascript
zip -r default.zip .

# Save app name as variable for convenience
appName=<app-name>

az appservice plan create --resource-group $groupName --name $appName --sku FREE --location $region --is-linux
az webapp create --resource-group $groupName --plan $appName --name $appName --runtime "node:24-lts"
az webapp config appsettings set --resource-group $groupName --name $appName --settings SCM_DO_BUILD_DURING_DEPLOYMENT=true
az webapp deploy --resource-group $groupName --name $appName --src-path ./default.zip

Önceki komutlar:

  • Linux App Service planı oluşturma
  • Node.js 24 LTS için web uygulaması oluşturma
  • Dağıtımda npm paketlerini yüklemek için web uygulamasını yapılandırma
  • Zip dosyasını yükleyin ve npm paketlerini yükleyin

Gizli bilgileri uygulama ayarları şeklinde yapılandırma

  1. Foundry Tools gizli anahtarlarını uygulama ayarları CS_ACCOUNT_NAME ve CS_ACCOUNT_KEY olarak yapılandırın.

    # Get the subscription key for the Foundry Tools resource
    csKey1=$(az cognitiveservices account keys list --resource-group $groupName --name $csResourceName --query key1 --output tsv)
    
    az webapp config appsettings set --resource-group $groupName --name $appName --settings CS_ACCOUNT_NAME="$csResourceName" CS_ACCOUNT_KEY="$csKey1"
    
  2. Tarayıcıda <app-name>.azurewebsites.net adresinde dağıtılan uygulamanıza gidin. Çeşitli dillerde dizeler girerek dil algılayıcısını deneyin.

    App Service'te dağıtılan dil algılayıcı uygulamasını gösteren ekran görüntüsü.

    Uygulama koduna bakarsanız, algılama sonuçlarının hata ayıklama çıkışı arka planla aynı yazı tipi renginde olabilir. Sonucun hemen altındaki boşluğu vurgulayarak çıkışı görebilirsiniz.

Güvenli arka uç bağlantısı

Bağlantı gizli dizileri artık App Service uygulamanızda uygulama ayarları olarak depolanır. Bu yaklaşım, uygulama kod tabanınızdan bağlantı gizli dizilerinin güvenliğini zaten sağlar. Ancak, uygulamanızı yönetebilen tüm katkıda bulunanlar da uygulama ayarlarını görebilir. Bu bölümde, bağlantı gizli dizilerini bir anahtar kasasına taşırsınız. Erişimi kilitleyerek yalnızca sizin yönetebilmenizi ve yönetilen kimliğini kullanarak yalnızca App Service uygulamasının okuyabilmesini sağlayabilirsiniz.

  1. Anahtar kasası oluşturma. <kasa-adını> benzersiz bir adla değiştirin.

    # Save the key vault name as a variable for convenience
    vaultName=<vault-name>
    
    az keyvault create --resource-group $groupName --name $vaultName --location $region --sku standard --enable-rbac-authorization
    

    --enable-rbac-authorization parametresi, Azure için izin modeli olarak rol tabanlı erişim denetimi (RBAC) ayarlar. Bu ayar varsayılan olarak tüm erişim ilkeleri izinlerini geçersiz kılar.

  2. Kasaya kendinize Key Vault Secrets Officer RBAC rolünü atayın.

    vaultResourceId=$(az keyvault show --name $vaultName --query id --output tsv)
    myId=$(az ad signed-in-user show --query id --output tsv)
    az role assignment create --role "Key Vault Secrets Officer" --assignee-object-id $myId --assignee-principal-type User --scope $vaultResourceId
    
  3. Uygulamanız için sistem tarafından atanan yönetilen kimliği etkinleştirin ve kasası için Key Vault Sırları Kullanıcısı RBAC rolünü verin.

    az webapp identity assign --resource-group $groupName --name $appName --scope $vaultResourceId --role  "Key Vault Secrets User"
    
  4. Foundry Tools kaynak adını ve abonelik anahtarını kasaya gizli dizi olarak ekleyin ve sonraki adım için ID'lerini çevresel değişkenler olarak kaydedin.

    csResourceKVUri=$(az keyvault secret set --vault-name $vaultName --name csresource --value $csResourceName --query id --output tsv)
    csKeyKVUri=$(az keyvault secret set --vault-name $vaultName --name cskey --value $csKey1 --query id --output tsv)
    
  5. Daha önce gizli bilgileri uygulama ayarları olarak CS_ACCOUNT_NAME ve CS_ACCOUNT_KEY uygulamanızda ayarladınız. Şimdi bunları anahtar kasası referansları olarak ayarlayın.

    az webapp config appsettings set --resource-group $groupName --name $appName --settings CS_ACCOUNT_NAME="@Microsoft.KeyVault(SecretUri=$csResourceKVUri)" CS_ACCOUNT_KEY="@Microsoft.KeyVault(SecretUri=$csKeyKVUri)"
    
  6. Tarayıcıda <app-name>.azurewebsites.net adresine tekrar gidin. Algılama sonuçlarını alırsanız, anahtar kasası referanslarını kullanarak Döküm Araçları uç noktasına bağlanırsınız.

Tebrikler, uygulamanız artık anahtar kasanızda tutulan gizli bilgileri kullanarak Döküm Araçları'na bağlanıyor ve uygulama kodunuzda hiçbir değişiklik yapmadınız.

Kaynakları temizleme

Önceki adımlarda, bir kaynak grubunda Azure kaynakları oluşturdunuz. Gelecekte bu kaynaklara ihtiyaç duymayı beklemiyorsanız, Cloud Shell aşağıdaki komutu çalıştırarak kaynak grubunu silin:

az group delete --name $groupName

Bu komutun çalıştırılması bir dakika sürebilir.