Mengautentikasi klien untuk titik akhir online
BERLAKU UNTUK:Ekstensi ml Azure CLI v2 (saat ini)Python SDK azure-ai-ml v2 (saat ini)
Artikel ini membahas cara mengautentikasi klien untuk melakukan operasi sarana kontrol dan sarana data pada titik akhir online.
Operasi sarana kontrol mengontrol titik akhir dan mengubahnya. Operasi sarana kontrol termasuk operasi buat, baca, perbarui, dan hapus (CRUD) pada titik akhir online dan penyebaran online.
Operasi data plane menggunakan data untuk berinteraksi dengan titik akhir online tanpa mengubah titik akhir. Misalnya, operasi data plane dapat terdiri dari pengiriman permintaan penilaian ke titik akhir online dan mendapatkan respons.
Prasyarat
Sebelum mengikuti langkah-langkah dalam artikel ini, pastikan Anda memiliki prasyarat berikut:
Ruang kerja Azure Machine Learning. Jika Anda tidak memilikinya, gunakan langkah-langkah dalam artikel Mulai Cepat: Membuat sumber daya ruang kerja untuk membuatnya.
Azure CLI dan
ml
ekstensi atau Azure Pembelajaran Mesin Python SDK v2:Untuk menginstal Azure CLI dan ekstensi, lihat Menginstal, menyiapkan, dan menggunakan CLI (v2).
Penting
Contoh CLI dalam artikel ini mengasumsikan bahwa Anda menggunakan shell Bash (atau kompatibel). Misalnya, dari sistem Linux atau Subsistem Windows untuk Linux.
Untuk memasang SDK Python v2, gunakan perintah berikut:
pip install azure-ai-ml azure-identity
Untuk memperbarui penginstalan SDK yang ada ke versi terbaru, gunakan perintah berikut:
pip install --upgrade azure-ai-ml azure-identity
Untuk informasi selengkapnya, lihat Menginstal Python SDK v2 untuk Azure Pembelajaran Mesin.
Menyiapkan identitas pengguna
Anda memerlukan identitas pengguna untuk melakukan operasi sarana kontrol (yaitu, operasi CRUD) dan operasi sarana data (yaitu, mengirim permintaan penilaian) di titik akhir online. Anda dapat menggunakan identitas pengguna yang sama atau identitas pengguna yang berbeda untuk operasi sarana kontrol dan sarana data. Dalam artikel ini, Anda menggunakan identitas pengguna yang sama untuk operasi sarana kontrol dan sarana data.
Untuk membuat identitas pengguna di bawah ID Microsoft Entra, lihat Menyiapkan autentikasi. Anda akan memerlukan ID identitas nanti.
Menetapkan izin ke identitas
Di bagian ini, Anda menetapkan izin ke identitas pengguna yang Anda gunakan untuk berinteraksi dengan titik akhir. Anda mulai dengan menggunakan peran bawaan atau dengan membuat peran kustom. Setelah itu, Anda menetapkan peran ke identitas pengguna Anda.
Menggunakan peran bawaan
Peran AzureML Data Scientist
bawaan dapat digunakan untuk mengelola dan menggunakan titik akhir dan penyebaran dan menggunakan wildcard untuk menyertakan tindakan RBAC sarana kontrol berikut:
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/write
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/delete
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/read
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listKeys/action
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/regenerateKeys/action
dan untuk menyertakan tindakan RBAC sarana data berikut:
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/score/action
Secara opsional, peran bawaan Azure Machine Learning Workspace Connection Secrets Reader
dapat digunakan untuk mengakses rahasia dari koneksi ruang kerja dan mencakup tindakan RBAC sarana kontrol berikut:
Microsoft.MachineLearningServices/workspaces/connections/listsecrets/action
Microsoft.MachineLearningServices/workspaces/metadata/secrets/read
Jika Anda menggunakan peran bawaan ini, tidak ada tindakan yang diperlukan pada langkah ini.
(Opsional) Membuat peran kustom
Anda dapat melewati langkah ini jika Anda menggunakan peran bawaan atau peran kustom bawaan lainnya.
Tentukan cakupan dan tindakan untuk peran kustom dengan membuat definisi JSON dari peran. Misalnya, definisi peran berikut memungkinkan pengguna untuk CRUD titik akhir online, di bawah ruang kerja tertentu.
custom-role-for-control-plane.json:
{ "Name": "Custom role for control plane operations - online endpoint", "IsCustom": true, "Description": "Can CRUD against online endpoints.", "Actions": [ "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/write", "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/delete", "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/read", "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action", "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listKeys/action", "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/regenerateKeys/action" ], "NotActions": [ ], "AssignableScopes": [ "/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>" ] }
Definisi peran berikut memungkinkan pengguna mengirim permintaan penilaian ke titik akhir online, di bawah ruang kerja tertentu.
custom-role-for-scoring.json:
{ "Name": "Custom role for scoring - online endpoint", "IsCustom": true, "Description": "Can score against online endpoints.", "Actions": [ "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*/action" ], "NotActions": [ ], "AssignableScopes": [ "/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>" ] }
Gunakan definisi JSON untuk membuat peran kustom:
az role definition create --role-definition custom-role-for-control-plane.json --subscription <subscriptionId> az role definition create --role-definition custom-role-for-scoring.json --subscription <subscriptionId>
Catatan
Untuk membuat peran kustom, Anda memerlukan salah satu dari tiga peran:
- pemilik
- administrator akses pengguna
- peran kustom dengan
Microsoft.Authorization/roleDefinitions/write
izin (untuk membuat/memperbarui/menghapus peran kustom) danMicrosoft.Authorization/roleDefinitions/read
izin (untuk melihat peran kustom).
Untuk informasi selengkapnya tentang membuat peran kustom, lihat Peran kustom Azure.
Verifikasi definisi peran:
az role definition list --custom-role-only -o table az role definition list -n "Custom role for control plane operations - online endpoint" az role definition list -n "Custom role for scoring - online endpoint" export role_definition_id1=`(az role definition list -n "Custom role for control plane operations - online endpoint" --query "[0].id" | tr -d '"')` export role_definition_id2=`(az role definition list -n "Custom role for scoring - online endpoint" --query "[0].id" | tr -d '"')`
Menetapkan peran ke identitas
Jika Anda menggunakan peran bawaan
AzureML Data Scientist
, gunakan kode berikut untuk menetapkan peran ke identitas pengguna Anda.az role assignment create --assignee <identityId> --role "AzureML Data Scientist" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
Secara opsional, jika Anda menggunakan
Azure Machine Learning Workspace Connection Secrets Reader
peran bawaan, gunakan kode berikut untuk menetapkan peran ke identitas pengguna Anda.az role assignment create --assignee <identityId> --role "Azure Machine Learning Workspace Connection Secrets Reader" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
Jika Anda menggunakan peran kustom, gunakan kode berikut untuk menetapkan peran ke identitas pengguna Anda.
az role assignment create --assignee <identityId> --role "Custom role for control plane operations - online endpoint" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName> az role assignment create --assignee <identityId> --role "Custom role for scoring - online endpoint" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
Catatan
Untuk menetapkan peran kustom ke identitas pengguna, Anda memerlukan salah satu dari tiga peran:
- pemilik
- administrator akses pengguna
- peran kustom yang memungkinkan
Microsoft.Authorization/roleAssignments/write
izin (untuk menetapkan peran kustom) danMicrosoft.Authorization/roleAssignments/read
(untuk melihat penetapan peran).
Untuk informasi selengkapnya tentang berbagai peran Azure dan izinnya, lihat Peran Azure dan Menetapkan peran Azure menggunakan Portal Microsoft Azure.
Konfirmasikan penetapan peran:
az role assignment list --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
Mendapatkan token Microsoft Entra untuk operasi sarana kontrol
Lakukan langkah ini jika Anda berencana untuk melakukan operasi sarana kontrol dengan REST API, yang akan langsung menggunakan token.
Jika Anda berencana menggunakan cara lain seperti Azure Pembelajaran Mesin CLI (v2), Python SDK (v2), atau studio Azure Pembelajaran Mesin, Anda tidak perlu mendapatkan token Microsoft Entra secara manual. Sebaliknya, selama masuk, identitas pengguna Anda akan sudah diautentikasi, dan token akan secara otomatis diambil dan diteruskan untuk Anda.
Anda dapat mengambil token Microsoft Entra untuk operasi sarana kontrol dari titik akhir sumber daya Azure: https://management.azure.com
.
Masuk ke Azure.
az login
Jika Anda ingin menggunakan identitas tertentu, gunakan kode berikut untuk masuk dengan identitas:
az login --identity --username <identityId>
Gunakan konteks ini untuk mendapatkan token.
export CONTROL_PLANE_TOKEN=`(az account get-access-token --resource https://management.azure.com --query accessToken | tr -d '"')`
(Opsional) Memverifikasi titik akhir sumber daya dan ID klien untuk token Microsoft Entra
Setelah mengambil token Microsoft Entra, Anda dapat memverifikasi bahwa token adalah untuk titik management.azure.com
akhir sumber daya Azure yang tepat dan ID klien yang tepat dengan mendekode token melalui jwt.ms, yang akan mengembalikan respons json dengan informasi berikut:
{
"aud": "https://management.azure.com",
"oid": "<your-object-id>"
}
Buat titik akhir
Contoh berikut membuat titik akhir dengan identitas yang ditetapkan sistem (SAI) sebagai identitas titik akhir. SAI adalah jenis identitas default identitas terkelola untuk titik akhir. Beberapa peran dasar secara otomatis ditetapkan untuk SAI. Untuk informasi selengkapnya tentang penetapan peran untuk identitas yang ditetapkan sistem, lihat Penetapan peran otomatis untuk identitas titik akhir.
CLI tidak mengharuskan Anda untuk secara eksplisit menyediakan token sarana kontrol. Sebaliknya, CLI az login
mengautentikasi Anda selama masuk, dan token secara otomatis diambil dan diteruskan untuk Anda.
Buat file YAML definisi titik akhir.
endpoint.yml:
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json name: my-endpoint auth_mode: aad_token
Anda dapat mengganti
auth_mode
dengankey
untuk autentikasi kunci, atauaml_token
untuk autentikasi token Azure Pembelajaran Mesin. Dalam contoh ini, Anda menggunakanaad_token
untuk autentikasi token Microsoft Entra.az ml online-endpoint create -f endpoint.yml
Periksa status titik akhir:
az ml online-endpoint show -n my-endpoint
Jika Anda ingin mengambil
auth_mode
alih (misalnya, keaad_token
) saat membuat titik akhir, jalankan kode berikut:az ml online-endpoint create -n my-endpoint --auth_mode aad_token
Jika Anda ingin memperbarui titik akhir yang ada dan menentukan
auth_mode
(misalnya, keaad_token
), jalankan kode berikut:az ml online-endpoint update -n my-endpoint --set auth_mode=aad_token
Membuat penyebaran
Untuk membuat penyebaran, lihat Menyebarkan model ML dengan titik akhir online atau Menggunakan REST untuk menyebarkan model sebagai titik akhir online. Tidak ada perbedaan dalam cara Anda membuat penyebaran untuk mode autentikasi yang berbeda.
Kode berikut adalah contoh cara membuat penyebaran. Untuk informasi selengkapnya tentang menyebarkan titik akhir online, lihat Menyebarkan model ML dengan titik akhir online (melalui CLI)
Buat file YAML definisi penyebaran.
blue-deployment.yml:
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json name: blue endpoint_name: my-aad-auth-endp1 model: path: ../../model-1/model/ code_configuration: code: ../../model-1/onlinescoring/ scoring_script: score.py environment: conda_file: ../../model-1/environment/conda.yml image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest instance_type: Standard_DS3_v2 instance_count: 1
Buat penyebaran menggunakan file YAML. Untuk contoh ini, atur semua lalu lintas ke penyebaran baru.
az ml online-deployment create -f blue-deployment.yml --all-traffic
Mendapatkan URI penilaian untuk titik akhir
Jika Anda berencana menggunakan CLI untuk memanggil titik akhir, Anda tidak diharuskan untuk mendapatkan URI penilaian secara eksplisit, karena CLI menanganinya untuk Anda. Namun, Anda masih dapat menggunakan CLI untuk mendapatkan URI penilaian sehingga Anda dapat menggunakannya dengan saluran lain, seperti REST API.
scoringUri=$(az ml online-endpoint show -n my-endpoint --query "scoring_uri")
Mendapatkan kunci atau token untuk operasi sarana data
Kunci atau token dapat digunakan untuk operasi sarana data, meskipun proses mendapatkan kunci atau token adalah operasi sarana kontrol. Dengan kata lain, Anda menggunakan token sarana kontrol untuk mendapatkan kunci atau token yang nantinya Anda gunakan untuk melakukan operasi sarana data Anda.
Mendapatkan kunci atau token Azure Pembelajaran Mesin mengharuskan peran yang benar ditetapkan ke identitas pengguna yang memintanya, seperti yang dijelaskan dalam otorisasi untuk operasi sarana kontrol. Mendapatkan token Microsoft Entra tidak memerlukan peran tambahan untuk identitas pengguna.
Jika Anda berencana menggunakan CLI untuk memanggil titik akhir, Anda tidak diharuskan untuk mendapatkan kunci atau token untuk operasi bidang data secara eksplisit, karena CLI menanganinya untuk Anda. Namun, Anda masih dapat menggunakan CLI untuk mendapatkan kunci atau token untuk operasi sarana data sehingga Anda dapat menggunakannya dengan saluran lain, seperti REST API.
Untuk mendapatkan kunci atau token untuk operasi bidang data, gunakan perintah az ml online-endpoint get-credentials . Perintah ini mengembalikan output JSON yang berisi kunci, token, dan/atau informasi tambahan.
Tip
Untuk mengekstrak informasi tertentu dari output JSON, --query
parameter perintah CLI digunakan sebagai contoh. Namun, Anda dapat menggunakan alat yang sesuai untuk tujuan ini.
Kapan auth_mode
titik akhir adalah key
- Kunci dikembalikan di
primaryKey
bidang dansecondaryKey
.
export DATA_PLANE_TOKEN=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query primaryKey)
export DATA_PLANE_TOKEN2=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query secondaryKey)
Kapan auth_mode
titik akhir adalah aml_token
- Token dikembalikan di
accessToken
bidang . - Waktu kedaluwarsa token dikembalikan di
expiryTimeUtc
bidang . - Waktu refresh token dikembalikan di
refreshAfterTimeUtc
bidang .
export DATA_PLANE_TOKEN=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query accessToken)
export EXPIRY_TIME_UTC=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query expiryTimeUtc)
export REFRESH_AFTER_TIME_UTC=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query refreshAfterTimeUtc)
Kapan auth_mode
titik akhir adalah aad_token
- Token dikembalikan di
accessToken
bidang . - Waktu kedaluwarsa token dikembalikan di
expiryTimeUtc
bidang .
export DATA_PLANE_TOKEN=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query accessToken)
export EXPIRY_TIME_UTC=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query expiryTimeUtc)
Memverifikasi titik akhir sumber daya dan ID klien untuk token Microsoft Entra
Setelah mendapatkan token Entra, Anda dapat memverifikasi bahwa token adalah untuk titik ml.azure.com
akhir sumber daya Azure yang tepat dan ID klien yang tepat dengan mendekode token melalui jwt.ms, yang akan mengembalikan respons json dengan informasi berikut:
{
"aud": "https://ml.azure.com",
"oid": "<your-object-id>"
}
Menilai data menggunakan kunci atau token
Anda dapat menggunakan az ml online-endpoint invoke
untuk titik akhir dengan kunci, token Azure Pembelajaran Mesin, atau token Microsoft Entra. CLI menangani kunci atau token secara otomatis sehingga Anda tidak perlu meneruskannya secara eksplisit.
az ml online-endpoint invoke -n my-endpoint -r request.json
Mencatat dan memantau lalu lintas
Untuk mengaktifkan pengelogan lalu lintas di pengaturan diagnostik untuk titik akhir, ikuti langkah-langkah dalam Cara mengaktifkan/menonaktifkan log.
Jika pengaturan diagnostik diaktifkan, Anda dapat memeriksa AmlOnlineEndpointTrafficLogs
tabel untuk melihat mode autentikasi dan identitas pengguna.