Öğretici: Key Vault kullanarak App Service 'den güvenli bilişsel hizmet bağlantısı
Azure App Service , bağlantı dizelerini yönetmek için bağlantı parolalarını ortadan kaldıran ve arka uç bağlantınızı bir üretim ortamında güvende tutan bir bağlantı dizesi olmadan arka uç hizmetlerine bağlanmak için Yönetilen kimlikler kullanabilir. Yönetilen kimlikleri desteklemeyen ve hala bağlantı parolaları gerektiren arka uç hizmetleri için bağlantı gizli dizilerini yönetmek üzere Key Vault kullanabilirsiniz. Bu öğretici, bir örnek olarak bilişsel hizmetler 'i kullanarak uygulamada nasıl yapıldığını gösterir. İşiniz bittiğinde, App Service içinde herhangi bir bağlantı gizli dizilerini depolamadan, bilişsel hizmetler 'e programlı çağrılar yapan bir uygulamanız vardır.
İpucu
Azure bilişsel hizmetler, Yönetilen kimlikler aracılığıyla kimlik doğrulamasını destekler, ancak bu öğretici, uygulama hizmetlerinden yönetilen kimlikleri desteklemeyen bir Azure hizmetine nasıl bağlanabileceğinizi göstermek için abonelik anahtarı kimlik doğrulamasını kullanır.

Bu mimariyle:
- Key Vault bağlantı, Yönetilen kimlikler tarafından güvenli hale getirilir
- App Service, uygulama ayarları olarak Key Vault başvurularını kullanarak gizli anahtarlara erişir.
- Anahtar kasasına erişim uygulamayla kısıtlıdır. Yöneticiler gibi uygulama katkı sağlayanlar App Service kaynakların denetimini tamamen alabilir ve aynı anda Key Vault gizli dizileri için erişim sahibi olmaz.
- Uygulama kodunuz zaten uygulama ayarlarıyla bağlantı gizli erişimlerine eriştiğinde hiçbir değişiklik yapılması gerekmez.
Öğrenirsiniz:
- Yönetilen kimlikleri etkinleştirme
- Key Vault bağlanmak için Yönetilen kimlikler kullanın
- Key Vault başvurularını kullanma
- Bilişsel hizmetler erişimi
Önkoşullar
Ortamınızı Azure CLı için hazırlayın.
Azure Cloud Shell'Da Bash ortamını kullanın.
Dilerseniz CLI başvuru komutlarını çalıştırmak için Azure CLI’yi yükleyebilirsiniz.
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. Ek oturum açma seçenekleri için bkz. Azure CLI ile oturum açma.
İstendiğinde, ilk kullanımda Azure CLI uzantıları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.
Bilişsel Hizmetler bağlantısı ile uygulama oluşturma
Tüm kaynaklarınızı içeren bir kaynak grubu oluşturun:
# Save resource group name as variable for convenience groupName=myKVResourceGroup region=westeurope az group create --name $groupName --location $regionBilişsel hizmetler kaynağı oluşturun. <cs-resource-name> İstediğ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 $csResourceNameNot
--sku F0ücretsiz bir katman bilişsel hizmetler kaynağı oluşturur. Her abonelik, bir ücretsiz katman kaynağı kotasıyla sınırlıdırTextAnalytics. Zaten kotayı kullanıyorsanız,--sku Sbunun yerine kullanın.Örnek depoyu yerel olarak kopyalayın ve örnek uygulamayı App Service dağıtın. <app-name> 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 $regionBilişsel hizmetler gizli dizilerini uygulama ayarları olarak yapılandırın
CS_ACCOUNT_NAMEveCS_ACCOUNT_KEY.# 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, dağıtım uygulamanıza gidin
<app-name>.azurewebsites.netve çeşitli dillerdeki dizeler ile dil algılayıcısının deneyin.
Uygulama koduna bakarsanız, algılama sonuçları için hata ayıklama çıkışının arka planla aynı yazı tipi rengine sahip olduğunu fark edebilirsiniz. Sonucun hemen altındaki boşluğu vurgulamaya çalışırken 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 dizilerini zaten güvenli hale getirir. 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şırsınız ve yalnızca sizin yönetebilmeniz ve yalnızca App Service uygulamasının yönetilen kimliğini kullanarak okuyabilmesi için erişimi kilitlersiniz.
Anahtar kasası oluşturma. <vault-name> 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-authorizationParametresi, Azure rol tabanlı erişim denetimi 'NI (RBAC) izin modeli olarak ayarlar. Bu ayar varsayılan olarak tüm erişim ilkeleri izinlerini geçersiz kılar.Kasa için kendinize Key Vault gizli bilgileri Müdürü RBAC rolü sağlayın.
vaultResourceId=$(az keyvault show --name $vaultName --query id --output tsv) myId=$(az ad signed-in-user show --query objectId --output tsv) az role assignment create --role "Key Vault Secrets Officer" --assignee-object-id $myId --assignee-principal-type User --scope $vaultResourceIdUygulamanız için sistem tarafından atanan yönetilen kimliği etkinleştirin ve kasa için Key Vault gizli dizi Kullanıcı RBAC rolü sağlayın.
az webapp identity assign --resource-group $groupName --name $appName --scope $vaultResourceId --role "Key Vault Secrets User"Bilişsel hizmetler kaynak adı ve abonelik anahtarı ' nı kasaya gizli dizi olarak ekleyin ve kimliklerini bir sonraki adım için 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ı olarak
CS_ACCOUNT_NAMEve uygulamanızda ayarlarsınızCS_ACCOUNT_KEY. Şimdi bunları bunun yerine 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, tekrar ' ye gidin
<app-name>.azurewebsites.net. Algılama sonuçlarını geri alırsanız, Anahtar Kasası başvurularıyla bilişsel hizmetler uç noktasına bağlanıyorsunuz.
Tebrikler, uygulamanız artık uygulama kodunuzda herhangi bir değişiklik yapmadan anahtar kasasında tutulan gizli dizileri kullanarak bilişsel hizmetlere 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.
