Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
BERLAKU UNTUK:Ekstensi ml Azure CLI v2 (saat ini)
Python SDK azure-ai-ml v2 (saat ini)
Artikel ini memperlihatkan kepada Anda cara menggunakan isolasi jaringan untuk meningkatkan keamanan titik akhir online terkelola Azure Machine Learning. Isolasi jaringan membantu mengamankan komunikasi masuk dan keluar ke dan dari titik akhir Anda.
Untuk membantu mengamankan komunikasi masuk, Anda dapat membuat titik akhir online terkelola yang menggunakan titik akhir privat ruang kerja Azure Machine Learning. Untuk mengizinkan hanya komunikasi keluar yang disetujui untuk penyebaran, Anda dapat mengonfigurasi ruang kerja dengan jaringan virtual terkelola. Artikel ini memperlihatkan kepada Anda cara mengambil langkah-langkah ini untuk meningkatkan keamanan titik akhir. Ini juga menunjukkan kepada Anda cara membuat penyebaran yang menggunakan titik akhir privat pada jaringan virtual yang dikelola oleh ruang kerja untuk melakukan komunikasi ke luar.
Jika Anda lebih suka menggunakan metode warisan untuk isolasi jaringan, lihat contoh file penyebaran berikut di repositori GitHub azureml-examples :
- Untuk penyebaran yang menggunakan model generik: deploy-moe-vnet-legacy.sh
- Untuk penyebaran yang menggunakan model MLflow: deploy-moe-vnet-mlflow-legacy.sh
Prasyarat
Sebuah langganan Azure. Jika Anda tidak memiliki langganan Azure, buatlah akun gratis sebelum Anda memulai.
Azure CLI dan ekstensi Azure CLI
ml
, diinstal dan dikonfigurasi. Untuk informasi selengkapnya, lihat Menginstal dan menyiapkan CLI (v2).Petunjuk / Saran
Fitur jaringan virtual terkelola Azure Machine Learning diperkenalkan pada 23 Mei 2023. Jika Anda memiliki versi ekstensi yang
ml
lebih lama, Anda mungkin perlu memperbaruinya agar contoh dalam artikel ini berfungsi. Untuk memperbarui ekstensi, gunakan perintah Azure CLI berikut:az extension update -n ml
Shell Bash atau shell yang kompatibel, misalnya, shell pada sistem Linux atau Subsistem Windows untuk Linux. Contoh Azure CLI dalam artikel ini mengasumsikan bahwa Anda menggunakan jenis shell ini.
Grup sumber daya Azure tempat Anda atau perwakilan layanan yang Anda gunakan memiliki akses Kontributor. Untuk instruksi membuat grup sumber daya, lihat Menyiapkan.
Identitas terkelola yang ditetapkan pengguna dengan izin yang sesuai, jika Anda ingin menggunakan identitas terkelola untuk membuat dan mengelola titik akhir online dan penyebaran online. Untuk informasi terperinci tentang izin yang diperlukan, lihat Menyiapkan autentikasi antara Azure Machine Learning dan layanan lainnya. Misalnya, Anda perlu memberikan izin kontrol akses berbasis peran Azure (Azure RBAC) khusus identitas terkelola untuk Azure Key Vault.
Migrasi dari metode isolasi jaringan warisan ke jaringan virtual yang dikelola ruang kerja
Jika Anda menggunakan metode warisan untuk isolasi jaringan titik akhir online terkelola dan Anda ingin bermigrasi ke jaringan virtual terkelola untuk mengamankan titik akhir Anda, ikuti langkah-langkah berikut:
- Buat ruang kerja baru dan aktifkan jaringan virtual terkelola. Untuk informasi selengkapnya tentang cara mengonfigurasi jaringan terkelola untuk ruang kerja Anda, lihat Isolasi jaringan virtual terkelola ruang kerja.
- (Opsional) Jika penyebaran Anda mengakses sumber daya privat selain Azure Storage, Key Vault, dan Azure Container Registry, tambahkan aturan keluar ke pengaturan jaringan ruang kerja Anda. Secara khusus, jaringan dikonfigurasi dengan aturan untuk Azure Storage, Key Vault, dan Container Registry secara default. Tambahkan aturan dengan titik akhir privat untuk sumber daya privat lain yang Anda gunakan.
- (Opsional) Jika Anda berniat menggunakan registri Azure Machine Learning, konfigurasikan titik akhir privat untuk komunikasi keluar ke registri Anda, akun penyimpanannya, dan instans Container Registry-nya.
- Buat titik akhir dan penyebaran online di ruang kerja baru. Jika Anda menggunakan registri Azure Machine Learning, Anda dapat langsung menyebarkan komponen dari registri tersebut. Untuk informasi selengkapnya, lihat Menyebarkan model dari registri ke titik akhir online di ruang kerja.
- Perbarui aplikasi yang memanggil titik akhir sehingga aplikasi menggunakan URI penilaian dari titik akhir online baru.
- Setelah Memvalidasi titik akhir baru, hapus titik akhir online di ruang kerja lama Anda.
Jika Anda tidak perlu menghindari waktu henti selama migrasi, Anda dapat mengambil pendekatan yang lebih mudah. Jika Anda tidak perlu mempertahankan instans komputasi, titik akhir online, dan penyebaran di ruang kerja lama, Anda dapat menghapus instans komputasi lalu memperbarui ruang kerja untuk mengaktifkan jaringan virtual terkelola.
Batasan
Bendera
v1_legacy_mode
harus diatur kefalse
untuk menonaktifkan mode warisan v1 di ruang kerja Azure Machine Learning Anda. Jika pengaturan ini diaktifkan, Anda tidak dapat membuat titik akhir online terkelola. Untuk informasi selengkapnya, lihat Perubahan isolasi jaringan dengan platform API baru kami di Azure Resource Manager.Jika ruang kerja Azure Machine Learning Anda memiliki titik akhir privat yang dibuat sebelum 24 Mei 2022, Anda harus membuat ulang titik akhir privat tersebut sebelum mengonfigurasi titik akhir online untuk menggunakan titik akhir privat. Untuk informasi selengkapnya tentang membuat titik akhir privat untuk ruang kerja Anda, lihat Mengonfigurasi titik akhir privat untuk ruang kerja Azure Machine Learning.
Petunjuk / Saran
Untuk melihat tanggal pembuatan ruang kerja, Anda dapat memeriksa properti ruang kerja.
- Di studio Azure Machine Learning, buka sudut kanan atas dan pilih nama ruang kerja Anda.
- Di jendela Direktori + Langganan + Ruang Kerja, pilih Tampilkan semua properti di Portal Microsoft Azure.
- Di halaman Gambaran Umum portal Microsoft Azure, buka sudut kanan atas dan pilih Tampilan JSON.
- Di jendela JSON Sumber Daya, di bawah Versi API, pilih versi API terbaru.
- Di bagian
properties
kode JSON, periksa nilainyacreationTime
.
Atau, gunakan salah satu metode berikut:
-
Python SDK:
Workspace.get(name=<workspace-name>, subscription_id=<subscription-ID>, resource_group=<resource-group-name>).get_details()
-
REST API:
curl https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.MachineLearningServices/workspaces/?api-version=2023-10-01 -H "Authorization:Bearer <access-token>"
-
PowerShell:
Get-AzMLWorkspace -Name <workspace-name> -ResourceGroupName <resource-group-name>
Saat Anda menggunakan isolasi jaringan untuk membantu mengamankan titik akhir online, Anda dapat menggunakan sumber daya terkait ruang kerja dari grup sumber daya yang berbeda dari grup sumber daya ruang kerja Anda. Namun, sumber daya ini harus termasuk dalam langganan dan penyewa yang sama dengan ruang kerja Anda. Sumber daya yang terkait dengan ruang kerja termasuk Azure Container Registry, Azure Storage, Azure Key Vault, dan Application Insights.
Catatan
Artikel ini menjelaskan isolasi jaringan yang berlaku untuk operasi data plane. Operasi ini dihasilkan dari permintaan pemeringkatan, atau penyajian hasil model. Operasi sarana kontrol, seperti permintaan untuk membuat, memperbarui, menghapus, atau mengambil kunci autentikasi, dikirim ke Azure Resource Manager melalui jaringan publik.
Siapkan sistem Anda
Buat variabel lingkungan dengan menjalankan perintah berikut. Ganti
<resource-group-name>
dengan grup sumber daya untuk ruang kerja Anda. Ganti<workspace-name>
dengan nama ruang kerja Anda.export RESOURCEGROUP_NAME="<resource-group-name>" export WORKSPACE_NAME="<workspace-name>"
Buat ruang kerja Anda. Parameter
-m allow_only_approved_outbound
mengonfigurasi jaringan virtual terkelola untuk ruang kerja dan memblokir lalu lintas keluar kecuali ke tujuan yang disetujui.az ml workspace create -g $RESOURCEGROUP_NAME -n $WORKSPACE_NAME -m allow_only_approved_outbound
Atau, jika Anda ingin mengizinkan penyebaran untuk mengirim lalu lintas keluar ke internet, batalkan komentar kode berikut dan jalankan sebagai gantinya.
# az ml workspace create -g $RESOURCEGROUP_NAME -n $WORKSPACE_NAME -m allow_internet_outbound
Untuk informasi selengkapnya tentang cara membuat ruang kerja baru atau meningkatkan ruang kerja yang ada untuk menggunakan jaringan virtual terkelola, lihat Mengonfigurasi jaringan virtual terkelola untuk mengizinkan internet keluar.
Provisikan jaringan virtual terkelola. Untuk petunjuk dan informasi selengkapnya, lihat Menyediakan VNet terkelola secara manual.
Penting
Saat Anda menyiapkan jaringan virtual terkelola untuk ruang kerja untuk pertama kalinya, jaringan belum dipersiapkan. Anda tidak dapat membuat penyebaran online hingga Anda menyiapkan jaringan terkelola.
Konfigurasikan registri kontainer yang terkait dengan ruang kerja untuk menggunakan paket harga premium. Pengaturan ini diperlukan untuk menyediakan akses ke registri melalui titik akhir privat. Untuk informasi selengkapnya, lihat Tingkat layanan Azure Container Registry.
Konfigurasikan ruang kerja Anda untuk menggunakan kluster komputasi atau instans komputasi untuk membangun gambar. Anda dapat menggunakan
image_build_compute
properti untuk tujuan ini. Untuk informasi dan instruksi selengkapnya, lihat Mengonfigurasi pembangunan citra.Konfigurasikan nilai default untuk Azure CLI sehingga Anda dapat menghindari meneruskan nilai untuk ruang kerja dan grup sumber daya Anda beberapa kali.
az configure --defaults workspace=$WORKSPACE_NAME group=$RESOURCEGROUP_NAME
Kloning repositori contoh untuk mendapatkan file contoh untuk titik akhir dan penyebaran, lalu buka direktori cli repositori.
git clone --depth 1 https://github.com/Azure/azureml-examples cd azureml-examples/cli
Perintah dalam artikel ini ada dalam file deploy-managed-online-endpoint-workspacevnet.sh di direktori cli. File konfigurasi YAML berada di subdirektori titik akhir/online/terkelola/sampel/.
Buat titik akhir online terkelola yang aman
Untuk membuat titik akhir online terkelola yang aman, Anda membuat titik akhir di ruang kerja Anda. Kemudian Anda mengatur nilai endpoint public_network_access
ke disabled
untuk mengontrol komunikasi masuk.
Pengaturan ini memaksa titik akhir online untuk menggunakan titik akhir privat ruang kerja untuk komunikasi masuk. Satu-satunya cara untuk memanggil titik akhir online adalah dengan menggunakan titik akhir privat yang dapat mengakses ruang kerja di jaringan virtual Anda. Untuk informasi selengkapnya, lihat Mengamankan permintaan penilaian masuk dan Mengonfigurasi titik akhir privat untuk ruang kerja Azure Machine Learning.
Karena ruang kerja dikonfigurasi untuk memiliki jaringan virtual terkelola, penyebaran titik akhir apa pun menggunakan titik akhir privat jaringan virtual terkelola untuk komunikasi keluar.
Atur nama titik akhir:
export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"
Buat titik akhir dengan
public_network_access
diatur kedisabled
untuk memblokir lalu lintas masuk:az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml --set public_network_access=disabled
Atau, jika Anda ingin mengizinkan titik akhir untuk menerima permintaan penilaian dari internet, batalkan komentar kode berikut dan jalankan sebagai gantinya:
# az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
Menguji titik akhir
Buat penyebaran di jaringan virtual terkelola ruang kerja:
az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml --all-traffic
Jika Anda mendapatkan kesalahan tentang kegagalan otorisasi, periksa konfigurasi jaringan untuk akun penyimpanan ruang kerja. Anda mungkin harus menyesuaikan pengaturan akses jaringan publik untuk memberi ruang kerja akses ke akun penyimpanan.
Periksa status penyebaran:
az ml online-endpoint show -n $ENDPOINT_NAME
Uji titik akhir dengan mengeluarkan permintaan penilaian:
az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
Dapatkan log penyebaran:
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
Membersihkan sumber daya
Jika Anda tidak lagi memerlukan titik akhir, jalankan perintah berikut untuk menghapusnya.
az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait
Jika Anda tidak lagi memerlukan ruang kerja, sumber daya terkait, dan sumber daya lain di grup sumber daya Anda, hapus. Ganti
<resource-group-name>
dengan nama grup sumber daya yang berisi ruang kerja Anda.az group delete --resource-group <resource-group-name>
Pemecahan Masalah
Pembuatan titik akhir online gagal dengan pesan tentang mode lawas v1
Endpoint online terkelola adalah fitur dari platform API Azure Machine Learning v2. Jika ruang kerja Azure Machine Learning Anda dikonfigurasi untuk mode legacy v1, titik akhir online yang dikelola tidak berfungsi. Secara khusus, jika v1_legacy_mode
pengaturan ruang kerja diatur ke true
, mode warisan v1 diaktifkan, dan tidak ada dukungan untuk API v2.
Untuk melihat cara menonaktifkan mode warisan v1, lihat Perubahan isolasi jaringan dengan platform API baru kami di Azure Resource Manager.
Penting
Tanyakan kepada tim keamanan jaringan Anda sebelum Anda mengatur v1_legacy_mode
ke false
, karena mode warisan v1 mungkin diaktifkan karena suatu alasan.
Pembuatan titik akhir online dengan autentikasi berbasis kunci gagal
Gunakan perintah berikut untuk mencantumkan aturan jaringan brankas kunci Azure untuk ruang kerja Anda. Ganti <key-vault-name>
dengan nama "key vault" Anda.
az keyvault network-rule list -n <key-vault-name>
Respons untuk perintah ini mirip dengan kode JSON berikut:
{
"bypass": "AzureServices",
"defaultAction": "Deny",
"ipRules": [],
"virtualNetworkRules": []
}
Jika nilai dari bypass
bukan AzureServices
, gunakan panduan di Mengonfigurasi pengaturan jaringan Azure Key Vault untuk mengaturnya ke AzureServices
.
Penyebaran online gagal dengan kesalahan pengunduhan gambar
Catatan
Masalah ini berlaku saat Anda menggunakan metode isolasi jaringan lama untuk titik akhir online terkelola. Dalam metode ini, Azure Machine Learning membuat jaringan virtual terkelola untuk setiap penyebaran di bawah titik akhir.
Periksa apakah
egress-public-network-access
flag memiliki nilaidisabled
dalam penyebaran. Jika bendera ini diaktifkan, dan visibilitas registri kontainer bersifat privat, kegagalan ini diharapkan.Gunakan perintah berikut untuk memeriksa status koneksi titik akhir privat. Ganti
<registry-name>
dengan nama Azure Container Registry untuk ruang kerja Anda:az acr private-endpoint-connection list -r <registry-name> --query "[?privateLinkServiceConnectionState.description=='Egress for Microsoft.MachineLearningServices/workspaces/onlineEndpoints'].{ID:id, status:privateLinkServiceConnectionState.status}"
Dalam kode respons, verifikasi bahwa
status
bidang diatur keApproved
. Jika nilainya tidakApproved
, gunakan perintah berikut untuk menyetujui koneksi. Ganti<private-endpoint-connection-ID>
dengan ID yang dikembalikan perintah sebelumnya.az network private-endpoint-connection approve --id <private-endpoint-connection-ID> --description "Approved"
Titik akhir skor tidak dapat diselesaikan
Verifikasi bahwa klien yang mengeluarkan permintaan penilaian adalah jaringan virtual yang dapat mengakses ruang kerja Azure Machine Learning.
Gunakan perintah
nslookup
pada nama host titik akhir untuk mendapatkan informasi alamat IP.nslookup <endpoint-name>.<endpoint-region>.inference.ml.azure.com
Misalnya, perintah Anda mungkin terlihat mirip dengan perintah berikut:
nslookup endpointname.westcentralus.inference.ml.azure.com
Respons berisi alamat yang harus berada dalam rentang yang disediakan oleh jaringan virtual.
Catatan
- Untuk titik akhir online Kubernetes, nama host titik akhir harus berupa CName (nama domain) yang ditentukan dalam kluster Kubernetes Anda.
- Jika titik akhir menggunakan HTTP, alamat IP terkandung dalam URI titik akhir, yang bisa Anda dapatkan dari antarmuka pengguna studio.
- Untuk cara lain mendapatkan alamat IP titik akhir, lihat Memperbarui DNS Anda dengan FQDN.
nslookup
Jika perintah tidak menyelesaikan nama host, ambil tindakan di salah satu bagian berikut.
Titik akhir online terkelola
Gunakan perintah berikut untuk memeriksa apakah catatan A ada di zona Sistem Nama Domain (DNS) privat untuk jaringan virtual.
az network private-dns record-set list -z privatelink.api.azureml.ms -o tsv --query [].name
Hasilnya harus berisi entri yang mirip
*.<GUID>.inference.<region>
dengan .Jika tidak ada nilai inferensi yang dikembalikan, hapus titik akhir privat untuk ruang kerja lalu buat ulang. Untuk informasi selengkapnya, lihat Cara mengonfigurasi titik akhir privat.
Jika ruang kerja dengan titik akhir privat menggunakan server DNS kustom, jalankan perintah berikut untuk memverifikasi bahwa resolusi dari server DNS kustom berfungsi dengan benar:
dig <endpoint-name>.<endpoint-region>.inference.ml.azure.com
Titik akhir online Kube
Periksa konfigurasi DNS di kluster Kubernetes.
Periksa apakah router inferensi Azure Machine Learning,
azureml-fe
, berfungsi seperti yang diharapkan. Untuk melakukan pemeriksaan ini, lakukan langkah-langkah berikut:Jalankan perintah berikut di
azureml-fe
pod:kubectl exec -it deploy/azureml-fe -- /bin/bash
Jalankan salah satu perintah berikut:
curl -vi -k https://localhost:<port>/api/v1/endpoint/<endpoint-name>/swagger.json "Swagger not found"
Untuk HTTP, gunakan perintah berikut:
curl https://localhost:<port>/api/v1/endpoint/<endpoint-name>/swagger.json "Swagger not found"
Jika perintah HTTPS curl gagal atau kehabisan waktu tetapi perintah HTTP berfungsi, periksa apakah sertifikat valid.
Jika proses sebelumnya gagal diselesaikan ke catatan A, gunakan perintah berikut untuk memverifikasi apakah resolusi berfungsi dari alamat IP publik virtual Azure DNS, 168.63.129.16:
dig @168.63.129.16 <endpoint-name>.<endpoint-region>.inference.ml.azure.com
Jika perintah sebelumnya berhasil, pecahkan masalah penerus bersyarat untuk Azure Private Link pada DNS kustom.
Penyebaran online tidak dapat dinilai
Jalankan perintah berikut untuk melihat status penyebaran yang tidak dapat dinilai:
az ml online-deployment show -e <endpoint-name> -n <deployment-name> --query '{name:name,state:provisioning_state}'
Nilai
Succeeded
pada kolomstate
menunjukkan penyebaran yang berhasil.Agar penyebaran berhasil, gunakan perintah berikut untuk memeriksa apakah lalu lintas ditetapkan ke penyebaran:
az ml online-endpoint show -n <endpoint-name> --query traffic
Respons dari perintah ini harus mencantumkan persentase lalu lintas yang ditetapkan untuk setiap penyebaran.
Petunjuk / Saran
Langkah ini tidak diperlukan jika Anda menggunakan
azureml-model-deployment
header dalam permintaan Anda untuk menargetkan penyebaran ini.Jika penugasan lalu lintas atau header penyebaran telah diatur dengan benar, gunakan perintah berikut untuk mendapatkan log titik akhir:
az ml online-deployment get-logs -e <endpoint-name> -n <deployment-name>
Tinjau log untuk melihat apakah ada masalah dalam menjalankan kode pemberian skor ketika Anda mengirimkan permintaan ke penyebaran.