Tutorial: Mengamankan koneksi Cognitive Service dari .NET App Service menggunakan Key Vault
Azure App Service dapat menggunakan identitas terkelola untuk tersambung ke layanan ujung belakang tanpa string koneksi, yang menghilangkan rahasia koneksi untuk mengelola dan menjaga konektivitas ujung belakang Anda tetap aman di lingkungan produksi. Untuk layanan ujung belakang yang tidak mendukung identitas terkelola dan masih memerlukan rahasia koneksi, Anda dapat menggunakan Key Vault untuk mengelola rahasia koneksi. Tutorial ini menggunakan layanan Azure AI sebagai contoh untuk menunjukkan kepada Anda bagaimana hal itu dilakukan dalam praktiknya. Setelah selesai, Anda memiliki aplikasi yang melakukan panggilan terprogram ke layanan Azure AI, tanpa menyimpan rahasia koneksi apa pun di dalam App Service.
Tip
Layanan Azure AI mendukung autentikasi melalui identitas terkelola, tetapi tutorial ini menggunakan autentikasi kunci langganan untuk menunjukkan bagaimana Anda dapat terhubung ke layanan Azure yang tidak mendukung identitas terkelola dari App Services.
Dengan arsitektur ini:
- Konektivitas ke Key Vault diamankan dengan identitas yang dikelola
- App Service mengakses rahasia menggunakan referensi Key Vault sebagai pengaturan aplikasi.
- Akses ke brankas kunci dibatasi untuk aplikasi. Kontributor aplikasi, seperti admin, mungkin memiliki kontrol penuh atas sumber daya App Service, dan pada saat yang sama tidak memiliki akses ke rahasia Key Vault.
- Jika kode aplikasi Anda sudah mengakses rahasia koneksi dengan pengaturan aplikasi, tidak diperlukan perubahan.
Apa yang akan Anda pelajari:
- Mengaktifkan identitas terkelola
- Menggunakan identitas terkelola untuk tersambung ke Key Vault
- Menggunakan referensi Key Vault
- Mengakses layanan Azure AI
Prasyarat
Persiapkan lingkungan Anda untuk Azure CLI.
Gunakan lingkungan Bash di Azure Cloud Shell. Untuk informasi selengkapnya, lihat Mulai Cepat untuk Bash di Azure Cloud Shell.
Jika Anda lebih memilih untuk menjalankan perintah referensi CLI secara lokal, pasang Azure CLI. Jika Anda menjalankan Windows atau macOS, pertimbangkan untuk menjalankan Azure CLI dalam kontainer Docker. Untuk informasi lebih lanjut, lihat Cara menjalankan Azure CLI di kontainer Docker.
Jika Anda menggunakan instalasi lokal, masuk ke Azure CLI dengan menggunakan perintah login az. Untuk menyelesaikan proses autentikasi, ikuti langkah-langkah yang ditampilkan di terminal Anda. Untuk opsi masuk lainnya, lihat Masuk dengan Azure CLI.
Saat Anda diminta, instal ekstensi Azure CLI pada penggunaan pertama. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan ekstensi dengan Azure CLI.
Jalankan versi az untuk menemukan versi dan pustaka dependen yang diinstal. Untuk meningkatkan ke versi terbaru, jalankan peningkatan az.
Membuat aplikasi dengan konektivitas ke layanan Azure AI
Buat grup sumber daya untuk menampung semua sumber daya Anda:
# Save resource group name as variable for convenience groupName=myKVResourceGroup region=westeurope az group create --name $groupName --location $region
Membuat sumber daya layanan Azure AI. Ganti <cs-resource-name> dengan nama yang unik pilihan Anda.
# 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
Catatan
--sku F0
membuat sumber daya layanan Azure AI tingkat gratis. Setiap langganan dibatasi pada kuota satu sumber dayaTextAnalytics
tingkat gratis. Jika Anda sudah melebihi kuota, gunakan--sku S
sebagai gantinya.
Mengonfigurasi aplikasi .NET
Mengkloning repositori sampel secara lokal dan menyebarkan aplikasi contoh ke App Service. Ganti <app-name> dengan nama yang unik.
# 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
Mengonfigurasi rahasia sebagai pengaturan aplikasi
Konfigurasikan rahasia layanan Azure AI sebagai pengaturan
CS_ACCOUNT_NAME
aplikasi danCS_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"
Di browser, navigasikan ke aplikasi penyebaran Anda di
<app-name>.azurewebsites.net
dan coba pendeteksi bahasa dengan string dalam berbagai bahasa.Jika melihat kode aplikasi, Anda dapat melihat output debug untuk hasil deteksi dalam warna font yang sama dengan latar belakang. Anda dapat melihat hasil deteksi dengan mencoba menyorot spasi kosong langsung di bawah hasil.
Konektivitas ujung belakang yang aman
Saat ini, rahasia koneksi disimpan sebagai pengaturan aplikasi di aplikasi App Service Anda. Pendekatan ini sudah mengamankan rahasia koneksi dari dasar kode aplikasi Anda. Tetapi, setiap kontributor yang dapat mengelola aplikasi Anda juga dapat melihat pengaturan aplikasi. Pada langkah ini, Anda memindahkan rahasia koneksi ke brankas kunci, dan mengunci akses sehingga hanya Anda yang dapat mengelolanya dan hanya aplikasi App Service yang dapat membacanya menggunakan identitas terkelola.
Buat brankas kunci. Ganti <vault-name> dengan nama yang unik.
# 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
Parameter
--enable-rbac-authorization
mengatur kontrol akses berbasis peran (RBAC) Azure sebagai model izin. Pengaturan ini secara default membatalkan semua izin kebijakan akses.Beri diri Anda peran RBAC Petugas Rahasia Key Vault untuk brankas.
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
Aktifkan identitas terkelola yang ditetapkan sistem untuk aplikasi Anda, dan berikan peran RBAC Pengguna Rahasia Key Vault untuk brankas.
az webapp identity assign --resource-group $groupName --name $appName --scope $vaultResourceId --role "Key Vault Secrets User"
Tambahkan nama sumber daya layanan Azure AI dan kunci langganan sebagai rahasia ke vault, dan simpan ID mereka sebagai variabel lingkungan untuk langkah berikutnya.
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)
Sebelumnya, Anda mengatur rahasia sebagai pengaturan aplikasi
CS_ACCOUNT_NAME
danCS_ACCOUNT_KEY
di aplikasi. Sekarang, atur sebagai referensi brankas kunci.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)"
Di browser, navigasikan ke
<app-name>.azurewebsites.net
lagi. Jika Anda mendapatkan hasil deteksi kembali, maka Anda menyambungkan ke titik akhir layanan Azure AI dengan referensi brankas kunci.
Selamat, aplikasi Anda sekarang terhubung ke layanan Azure AI menggunakan rahasia yang disimpan di brankas kunci Anda, tanpa perubahan apa pun pada kode aplikasi Anda.
Membersihkan sumber daya
Dalam langkah-langkah sebelumnya, Anda membuat sumber daya Azure dalam grup sumber daya. Jika Anda tidak ingin membutuhkan sumber daya ini di masa mendatang, hapus grup sumber daya dengan menjalankan perintah berikut ini di Cloud Shell:
az group delete --name $groupName
Perintah ini mungkin perlu waktu satu menit untuk dijalankan.