Öğretici: Key Vault kullanarak .NET App Service'ten Bilişsel Hizmet bağlantısının güvenliğini sağlama
Azure Uygulaması Hizmeti, yönetilen kimlikleri kullanarak bağlantı dizesi olmadan arka uç hizmetlerine bağlanabilir ve bu da yönetecek 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. 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, uygulamada nasıl yapıldığını göstermek için örnek olarak Azure AI hizmetleri gerçekleştirilir. İşiniz bittiğinde, App Service'te hiçbir bağlantı gizli dizisini depolamadan Azure AI hizmetlerine programlı çağrılar yapan bir uygulamanız olur.
İpucu
Azure yapay zeka hizmetleri 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 abonelik anahtarı kimlik doğrulaması kullanılır.
Bu mimariyle:
- Key Vault bağlantısının güvenliği yönetilen kimlikler tarafından sağlanır
- App Service, Key Vault başvurularını uygulama ayarları olarak kullanarak gizli dizilere 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'a bağlanmak için yönetilen kimlikleri kullanma
- Key Vault başvurularını kullanma
- Azure AI hizmetlerine erişme
Önkoşullar
Ortamınızı Azure CLI için hazırlayın.
Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.
CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.
Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile 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 ile oturum açma.
İ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.
Yüklü sürümü ve bağımlı kitaplıkları 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.
Azure AI hizmetlerine bağlantı ile uygulama oluşturma
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
Azure AI hizmetleri kaynağı oluşturma. 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 katman Azure AI hizmetleri 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
.
.NET 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<.
# Save app name as variable for convenience
appName=<app-name>
# Clone sample application
git clone https://github.com/Azure-Samples/app-service-language-detector.git
cd app-service-language-detector/dotnet
az webapp up --sku F1 --resource-group $groupName --name $appName --plan $appName --location $region
Gizli dizileri uygulama ayarları olarak yapılandırma
Azure AI hizmetleri gizli dizilerini uygulama ayarları
CS_ACCOUNT_NAME
veCS_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"
Tarayıcıda adresinden dağıtım uygulamanıza
<app-name>.azurewebsites.net
gidin ve çeşitli dillerdeki dizelerle dil algılayıcısını deneyin.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ı gizli dizilerini bir anahtar kasasına taşır ve erişimi kilitlersiniz; böylece yalnızca siz yönetebilir ve yalnızca App Service uygulaması yönetilen kimliğini kullanarak okuyabilir.
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
parametresi,
--enable-rbac-authorization
izin modeli olarak Azure rol tabanlı erişim denetimini (RBAC) ayarlar. Bu ayar varsayılan olarak tüm erişim ilkeleri izinlerini geçersiz kılar.Kasa için kendinize Key Vault Gizli Dizileri Yetkilisi RBAC rolünü verin.
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
Uygulamanız için sistem tarafından atanan yönetilen kimliği etkinleştirin ve kasa için Key Vault Gizli Dizileri Kullanıcı RBAC rolünü verin.
az webapp identity assign --resource-group $groupName --name $appName --scope $vaultResourceId --role "Key Vault Secrets User"
Azure AI hizmetleri kaynak adını ve abonelik anahtarını kasaya gizli dizi olarak ekleyin ve sonraki adım için kimliklerini ortam değişkenleri 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)
Daha önce gizli dizileri uygulama ayarları
CS_ACCOUNT_NAME
olarak veCS_ACCOUNT_KEY
uygulamanızda ayarlarsınız. Şimdi bunları anahtar kasası başvuruları 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)"
Tarayıcıda yeniden adresine
<app-name>.azurewebsites.net
gidin. Algılama sonuçlarını geri alırsanız anahtar kasası başvuruları ile Azure AI hizmetleri uç noktasına bağlanırsınız.
Tebrikler, uygulamanız artık uygulama kodunuzda değişiklik yapmadan anahtar kasanızda tutulan gizli dizileri kullanarak Azure AI hizmetlerine bağlanıyor.
Kaynakları temizleme
Önceki adımlarda, bir kaynak grubunda Azure kaynakları oluşturdunuz. Bu kaynakların gelecekte gerekli olacağını düşünmüyorsanız, Cloud Shell’de 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.