Mengamankan titik akhir online terkelola Anda dengan isolasi jaringan
BERLAKU UNTUK:Ekstensi ml Azure CLI v2 (saat ini)Python SDK azure-ai-ml v2 (saat ini)
Dalam artikel ini, Anda akan menggunakan isolasi jaringan untuk mengamankan titik akhir online terkelola. Anda akan membuat titik akhir online terkelola yang menggunakan titik akhir privat ruang kerja Azure Pembelajaran Mesin untuk komunikasi masuk yang aman. Anda juga akan mengonfigurasi ruang kerja dengan jaringan virtual terkelola yang hanya memungkinkan komunikasi keluar yang disetujui untuk penyebaran. Terakhir, Anda akan membuat penyebaran yang menggunakan titik akhir privat jaringan virtual terkelola ruang kerja untuk komunikasi keluar.
Untuk contoh yang menggunakan metode warisan untuk isolasi jaringan, lihat file penyebaran deploy-moe-vnet-legacy.sh (untuk penyebaran menggunakan model generik) dan deploy-moe-vnet-mlflow-legacy.sh (untuk penyebaran menggunakan model MLflow) di repositori GitHub azureml-examples.
Prasyarat
Untuk menggunakan Azure Machine Learning, Anda harus memiliki langganan Azure. Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai. Coba versi gratis atau berbayar Azure Machine Learning sekarang.
Instal dan konfigurasikan Azure CLI dan
ml
ekstensi ke Azure CLI. Untuk informasi selengkapnya, lihat Menginstal, menyiapkan, dan menggunakan CLI (v2).Tip
Jaringan virtual terkelola Azure Pembelajaran Mesin diperkenalkan pada 23 Mei 2023. Jika Anda memiliki versi ekstensi ml yang 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
Contoh CLI dalam artikel ini mengasumsikan bahwa Anda menggunakan shell Bash (atau kompatibel). Misalnya, dari sistem Linux atau Subsistem Windows untuk Linux.
Anda harus memiliki Grup Sumber Daya Azure tempat Anda (atau perwakilan layanan yang Anda gunakan) harus memiliki akses
Contributor
. Anda akan memiliki grup sumber daya seperti itu jika Anda telah mengonfigurasi ekstensi Andaml
.Jika Anda ingin menggunakan identitas terkelola yang ditetapkan pengguna untuk membuat dan mengelola titik akhir online dan penyebaran online, identitas harus memiliki izin yang tepat. Untuk detail tentang izin yang diperlukan, lihat Menyiapkan autentikasi layanan. Misalnya, Anda perlu menetapkan izin RBAC yang tepat untuk Azure Key Vault pada identitas.
Migrasi dari metode isolasi jaringan warisan ke jaringan virtual terkelola
Jika Anda telah menggunakan metode warisan sebelumnya untuk isolasi jaringan titik akhir online terkelola, dan Anda ingin bermigrasi menggunakan jaringan virtual yang dikelola ruang kerja untuk mengamankan titik akhir Anda, ikuti langkah-langkah berikut:
- Hapus semua komputasi di ruang kerja Anda.
- Aktifkan jaringan virtual terkelola untuk ruang kerja Anda. Untuk informasi selengkapnya tentang cara mengonfigurasi jaringan terkelola untuk ruang kerja Anda, lihat Isolasi Jaringan Virtual Terkelola Ruang Kerja.
- Konfigurasikan titik akhir privat untuk komunikasi keluar ke sumber daya privat yang perlu diakses titik akhir online terkelola Anda. Sumber daya privat ini mencakup akun penyimpanan, Azure Key Vault, dan Azure Container Registry (ACR).
- (Opsional) Jika Anda mengintegrasikan dengan registri pengguna, konfigurasikan titik akhir privat untuk komunikasi keluar ke registri Anda, akun penyimpanannya, dan ACR-nya.
Batasan
Bendera
v1_legacy_mode
perlu dinonaktifkan (false) di ruang kerja Azure Machine Learning Anda. Jika bendera ini diaktifkan, Anda tidak dapat membuat titik akhir online terkelola. Untuk informasi selengkapnya, lihat Isolasi jaringan dengan API v2.Jika ruang kerja Azure Machine Learning Anda memiliki titik akhir privat yang dibuat sebelum 24 Mei 2022, Anda harus membuat ulang titik akhir privat ruang kerja sebelum mengonfigurasi titik akhir online Anda untuk menggunakan titik akhir privat. Untuk informasi selengkapnya tentang membuat titik akhir privat untuk ruang kerja Anda, lihat Cara mengonfigurasi titik akhir privat untuk ruang kerja Azure Machine Learning.
Tip
Untuk mengonfirmasi kapan ruang kerja dibuat, Anda dapat memeriksa properti ruang kerja.
Di Studio, buka bagian
Directory + Subscription + Workspace
(kanan atas Studio) dan pilihView all properties in Azure Portal
. Pilih tampilan JSON dari kanan atas halaman "Gambaran Umum", lalu pilih versi API terbaru. Dari halaman ini, Anda dapat memeriksa nilaiproperties.creationTime
.Atau, gunakan
az ml workspace show
dengan CLI,my_ml_client.workspace.get("my-workspace-name")
dengan SDK, ataucurl
di ruang kerja dengan REST API.Saat Anda menggunakan isolasi jaringan dengan titik akhir online, Anda dapat menggunakan sumber daya terkait ruang kerja (Azure Container Registry (ACR), Akun penyimpanan, Key Vault, dan Application Insights) dari grup sumber daya yang berbeda dari ruang kerja Anda. Namun, sumber daya ini harus termasuk dalam langganan dan penyewa yang sama dengan ruang kerja Anda.
Catatan
Isolasi jaringan yang dijelaskan dalam artikel ini berlaku untuk operasi data plane, yaitu operasi yang dihasilkan dari permintaan penilaian (atau penyajian 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 yang digunakan oleh contoh ini dengan menjalankan perintah berikut. Ganti
<YOUR_WORKSPACE_NAME>
dengan nama yang akan digunakan untuk ruang kerja Anda. Ganti<YOUR_RESOURCEGROUP_NAME>
dengan grup sumber daya yang akan berisi ruang kerja Anda.Tip
sebelum membuat ruang kerja baru, Anda harus membuat Grup Sumber Daya Azure untuk memuatnya. Untuk informasi selengkapnya, lihat Mengelola Grup Sumber Daya Azure.
export RESOURCEGROUP_NAME="<YOUR_RESOURCEGROUP_NAME>" export WORKSPACE_NAME="<YOUR_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 yang dirusak, lihat Mengonfigurasi jaringan virtual terkelola untuk memungkinkan internet keluar.
Saat ruang kerja dikonfigurasi dengan titik akhir privat, Azure Container Registry untuk ruang kerja harus dikonfigurasi untuk tingkat Premium untuk mengizinkan akses melalui titik akhir privat. Untuk informasi selengkapnya, lihat Tingkat layanan Azure Container Registry. Selain itu, ruang kerja harus diatur dengan
image_build_compute
properti , karena pembuatan penyebaran melibatkan pembangunan gambar. Lihat Mengonfigurasi build gambar untuk informasi selengkapnya.Konfigurasikan default untuk 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 repositori
/cli
.git clone --depth 1 https://github.com/Azure/azureml-examples cd /cli
Perintah dalam tutorial ini ada dalam file deploy-managed-online-endpoint-workspacevnet.sh
di cli
direktori, dan file konfigurasi YAML berada di endpoints/online/managed/sample/
subdirektori.
Buat titik akhir online terkelola yang aman
Untuk membuat titik akhir online terkelola yang aman, buat titik akhir di ruang kerja Anda dan atur titik public_network_access
akhir ke untuk disabled
mengontrol komunikasi masuk. Titik akhir kemudian harus menggunakan titik akhir privat ruang kerja untuk komunikasi masuk.
Karena ruang kerja dikonfigurasi untuk memiliki jaringan virtual terkelola, penyebaran titik akhir apa pun akan 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
dinonaktifkan 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
Jika Anda menonaktifkan akses jaringan publik untuk titik akhir, satu-satunya cara untuk memanggil titik akhir 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 Pembelajaran Mesin.
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
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
Dapatkan status penyebaran.
az ml online-endpoint show -n $ENDPOINT_NAME
Uji titik akhir dengan permintaan penilaian, menggunakan CLI.
az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
Mendapatkan log penyebaran.
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
Hapus titik akhir jika Anda tidak lagi membutuhkannya.
az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait
Hapus semua sumber daya yang dibuat dalam artikel ini. Ganti
<resource-group-name>
dengan nama grup sumber daya yang digunakan dalam contoh ini:az group delete --resource-group <resource-group-name>
Pemecahan Masalah
Pembuatan titik akhir online gagal dengan V1LegacyMode == pesan benar
Ruang kerja Azure Machine Learning bisa dikonfigurasi untuk v1_legacy_mode
, yang akan menonaktifkan API v2. Titik akhir online terkelola merupakan fitur platform API v2, dan tidak akan berfungsi jika v1_legacy_mode
diaktifkan untuk ruang kerja.
Penting
Tanyakan pada tim keamanan jaringan Anda sebelum menonaktifkan v1_legacy_mode
. Hal ini mungkin telah diaktifkan oleh tim keamanan jaringan Anda karena suatu alasan.
Untuk informasi tentang cara menonaktifkan v1_legacy_mode
, harap lihat Isolasi jaringan dengan v2.
Pembuatan titik akhir online dengan autentikasi berbasis kunci gagal
Gunakan perintah berikut untuk membuat daftar aturan jaringan Azure Key Vault untuk ruang kerja Anda. Ganti <keyvault-name>
dengan nama brankas kunci Anda:
az keyvault network-rule list -n <keyvault-name>
Respons untuk perintah ini mirip dengan dokumen JSON berikut:
{
"bypass": "AzureServices",
"defaultAction": "Deny",
"ipRules": [],
"virtualNetworkRules": []
}
Jika nilai bypass
bukan AzureServices
, gunakan panduan di Konfigurasikan setelan jaringan brankas kunci 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, di mana Azure Pembelajaran Mesin membuat jaringan virtual terkelola untuk setiap penyebaran di bawah titik akhir.
Periksa apakah bendera
egress-public-network-access
dinonaktifkan untuk penyebaran. Jika bendera ini diaktifkan, dan visibilitas registri penampung bersifat pribadi, maka 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'].{Name:name, status:privateLinkServiceConnectionState.status}"
Pada dokumen respons, verifikasi bahwa
status
bidang diatur keApproved
. Jika tidak disetujui, gunakan perintah berikut untuk menyetujuinya. Ganti<private-endpoint-name>
dengan nama yang dikembalikan dari perintah sebelumnya:az network private-endpoint-connection approve -n <private-endpoint-name>
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 mengambil informasi alamat IP:nslookup endpointname.westcentralus.inference.ml.azure.com
Respons berisi alamat. Alamat ini harus dalam rentang yang disediakan oleh jaringan virtual
Catatan
Untuk titik akhir online Kubernetes, nama host titik akhir harus menjadi CName (nama domain) yang telah ditentukan di kluster Kubernetes Anda. Jika ini adalah titik akhir HTTP, alamat IP akan terkandung dalam URI titik akhir yang bisa Anda dapatkan langsung di Antarmuka Pengguna Studio. Lebih banyak cara untuk mendapatkan alamat IP titik akhir dapat ditemukan di titik akhir online Kubernetes Aman.
Jika nama host tidak diselesaikan oleh
nslookup
perintah:Untuk Titik akhir online terkelola,
Periksa apakah catatan A ada di zona DNS privat untuk jaringan virtual.
Untuk memeriksa catatan, gunakan perintah berikut:
az network private-dns record-set list -z privatelink.api.azureml.ms -o tsv --query [].name
Hasil harus berisi entri yang mirip dengan
*.<GUID>.inference.<region>
.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 disiapkan menggunakan DNS kustom Cara menggunakan ruang kerja Anda dengan server DNS kustom, gunakan perintah berikut untuk memverifikasi apakah resolusi berfungsi dengan benar dari DNS kustom.
dig endpointname.westcentralus.inference.ml.azure.com
Untuk titik akhir online Kubernetes,
Periksa konfigurasi DNS di kluster Kubernetes.
Selain itu, Anda dapat memeriksa apakah azureml-fe berfungsi seperti yang diharapkan, gunakan perintah berikut:
kubectl exec -it deploy/azureml-fe -- /bin/bash (Run in azureml-fe pod) curl -vi -k https://localhost:<port>/api/v1/endpoint/<endpoint-name>/swagger.json "Swagger not found"
Untuk HTTP, gunakan
curl https://localhost:<port>/api/v1/endpoint/<endpoint-name>/swagger.json "Swagger not found"
Jika HTTP curl gagal (misalnya batas waktu) tetapi HTTP berfungsi, periksa apakah sertifikat valid.
Jika ini gagal diselesaikan ke rekaman A, verifikasi apakah resolusi berfungsi dari Azure DNS(168.63.129.16).
dig @168.63.129.16 endpointname.westcentralus.inference.ml.azure.com
Jika ini berhasil, Anda dapat memecahkan masalah penerus bersyarat untuk tautan privat di DNS kustom.
Penyebaran online tidak dapat dinilai
Gunakan perintah berikut untuk melihat apakah penyebaran berhasil disebarkan:
az ml online-deployment show -e <endpointname> -n <deploymentname> --query '{name:name,state:provisioning_state}'
Jika penyebaran berhasil diselesaikan, nilai
state
akan menjadiSucceeded
.Jika penyebaran berhasil, gunakan perintah berikut untuk memeriksa lalu lintas yang ditetapkan untuk penyebaran. Ganti
<endpointname>
dengan nama titik akhir Anda:az ml online-endpoint show -n <endpointname> --query traffic
Tip
Langkah ini tidak diperlukan jika Anda menggunakan header
azureml-model-deployment
dalam permintaan Anda untuk menargetkan penyebaran ini.Respons dari perintah ini harus mencantumkan persentase lalu lintas yang ditetapkan untuk penyebaran.
Jika penetapan lalu lintas (atau header penyebaran) diatur dengan benar, gunakan perintah berikut untuk mendapatkan log untuk titik akhir. Ganti
<endpointname>
dengan nama titik akhir, dan<deploymentname>
dengan penyebaran:az ml online-deployment get-logs -e <endpointname> -n <deploymentname>
Lihat log untuk melihat apakah ada masalah saat menjalankan kode penilaian saat Anda mengirimkan permintaan ke penyebaran.
Langkah berikutnya
- Isolasi jaringan dengan titik akhir online terkelola
- isolasi jaringan terkelola ruang kerja
- Tutorial: Cara membuat ruang kerja yang aman
- peluncuran Brankas untuk titik akhir online
- Mengakses sumber daya Azure dengan titik akhir online dan identitas terkelola
- Mengatasi masalah penyebaran titik akhir online