Aracılığıyla paylaş


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

Azure App Service, bağlantı dizisine gerek kalmadan arka uç hizmetlerine bağlanmak için yönetilen kimlikler kullanabilir. Bu, yönetilecek bağlantı sırlarını ortadan kaldırır ve arka uç bağlantınızın bir üretim ortamında güvenli kalmasını sağlar. Yönetilen kimlikleri desteklemeyen ve hala bağlantı gizli dizileri gerektiren arka uç hizmetleri için, bağlantı gizli dizilerini yönetmek için Key Vault kullanabilirsiniz. Bu öğreticide, Foundry Araçları bir örnek olarak kullanılarak pratikte nasıl yapıldığını göstermek amaçlanmaktadır. İşiniz bittiğinde, App Service içinde herhangi bir bağlantı bilgisi depolamadan Foundry Araçları'na programlama çağrıları yapan bir uygulamanız olur.

İpucu

Döküm Araçları, yönetilen kimlikler aracılığıyla kimlik doğrulamasını destekler, ancak bu öğreticide, App Services'ten yönetilen kimlikleri desteklemeyen bir Azure hizmetine nasıl bağlanabileceğinizi göstermek için abone anahtar kimlik doğrulaması kullanılır.

Öğretici senaryosu için mimari diyagramı.

Bu mimariyle:

  • Key Vault bağlantısının güvenliği yönetilen kimlikler tarafından sağlanır
  • App Service, gizli bilgileri uygulama ayarları olarak Key Vault başvuruları kullanarak 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.

Öğreneceğiniz şeyler:

  • 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ıyla uygulama oluşturma

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

    # Save resource group name as variable for convenience
    groupName=myKVResourceGroup
    region=westeurope
    
    az group create --name $groupName --location $region
    
  2. Bir Azure AI services kaynağı oluşturun. cs-resource-name değerini seçtiğiniz benzersiz bir adla değiştirin<.>

    # Save resource name as 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, ücretsiz bir Azure AI services katmanı kaynağı oluşturur. Her abonelik tek bir serbest katmanlı TextAnalytics kaynak kotası ile sınırlıdır. Kotayı aşmış durumdaysanız bunun yerine kullanın --sku S .

Python 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/python
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 "python:3.14"
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:

  • Bir Linux uygulama hizmet planı oluşturun
  • Python 3.14 için web uygulaması oluşturma
  • Dağıtımda python paketlerini yüklemek için web uygulamasını yapılandırma
  • Zip dosyasını karşıya yükleyin ve Python 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 subscription key for Cognitive Services 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 adresinden dağıtım uygulamanıza gidin ve çeşitli dillerdeki dizelerle dil algılayıcısını deneyin.

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

    Uygulama koduna bakarsanız, algılama sonuçları için hata ayıklama çıkışının arka planla aynı yazı tipi renginde olduğunu fark edebilirsiniz. Sonucun hemen altındaki boşluğu vurgulamaya çalışarak bunu görebilirsiniz.

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

Şu anda bağlantı gizli dizileri 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ğlıyor. Ancak, uygulamanızı yönetebilen tüm katkıda bulunanlar da uygulama ayarlarını görebilir. Bu adımda, bağlantı sırlarını bir anahtar kasasına taşıyıp erişimi kısıtlarsınız, böylece yalnızca siz yönetebilir ve yalnızca App Service uygulaması yönetilen kimliğiyle okuyabilir.

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

    # Save app name as 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. Azure AI services kaynak adını ve abonelik anahtarını kasaya gizli olarak ekleyin ve sonraki adım için kimliklerini ortam değişkenleri olarak ayarlayın.

    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 yeniden gidin. Eğer algılama sonuçlarını geri alıyorsanız, anahtar kasası referansları ile Azure AI Services uç noktasına bağlanıyorsunuz demektir.

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

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.

Sonraki adımlar