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:

Pembatasan

Titik akhir dengan mode autentikasi token Microsoft Entra (aad_token) tidak mendukung penilaian menggunakan CLI az ml online-endpoint invoke, SDK ml_client.online_endpoints.invoke(), atau tab Uji atau Konsumsi dari studio Azure Pembelajaran Mesin. Sebagai gantinya, gunakan Python SDK generik atau gunakan REST API untuk meneruskan token sarana kontrol. Untuk informasi selengkapnya, lihat Menilai data menggunakan kunci atau token.

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.

  1. 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>"
        ]
    }
    
  2. 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) dan Microsoft.Authorization/roleDefinitions/read izin (untuk melihat peran kustom).

    Untuk informasi selengkapnya tentang membuat peran kustom, lihat Peran kustom Azure.

  3. 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

  1. 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>
    
  2. 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>
    
  3. 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) dan Microsoft.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.

  4. 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.

  1. Masuk ke Azure.

    az login
    
  2. Jika Anda ingin menggunakan identitas tertentu, gunakan kode berikut untuk masuk dengan identitas:

    az login --identity --username <identityId>
    
  3. 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 mengautentikasi Anda selama masuk, dan token secara otomatis diambil dan diteruskan untuk Anda.

  1. Buat file YAML definisi titik akhir.

    endpoint.yml:

    $schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
    name: my-endpoint
    auth_mode: aad_token
    
  2. Anda dapat mengganti auth_mode dengan key untuk autentikasi kunci, atau aml_token untuk autentikasi token Azure Pembelajaran Mesin. Dalam contoh ini, Anda menggunakan aad_token untuk autentikasi token Microsoft Entra.

    az ml online-endpoint create -f endpoint.yml
    
  3. Periksa status titik akhir:

    az ml online-endpoint show -n my-endpoint
    
  4. Jika Anda ingin mengambil auth_mode alih (misalnya, ke aad_token) saat membuat titik akhir, jalankan kode berikut:

    az ml online-endpoint create -n my-endpoint --auth_mode aad_token
    
  5. Jika Anda ingin memperbarui titik akhir yang ada dan menentukan auth_mode (misalnya, ke aad_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)

  1. 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
    
  2. 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. Identitas pengguna tidak memerlukan peran tambahan untuk mendapatkan token Microsoft Entra.

Token Pembelajaran Mesin Kunci atau Azure

Jika Anda berencana menggunakan CLI untuk memanggil titik akhir, dan jika titik akhir disiapkan untuk menggunakan mode autentikasi kunci atau token Azure Pembelajaran Mesin (aml_token), Anda tidak diharuskan untuk mendapatkan token bidang data secara eksplisit, karena CLI menanganinya untuk Anda. Namun, Anda masih dapat menggunakan CLI untuk mendapatkan token sarana data sehingga Anda dapat menggunakannya dengan saluran lain, seperti REST API.

Untuk mendapatkan kunci atau token Azure Pembelajaran Mesin (aml_token), gunakan perintah az ml online-endpoint get-credentials. Perintah ini mengembalikan dokumen JSON yang berisi kunci atau token Azure Pembelajaran Mesin.

Kunci dikembalikan di primaryKey bidang dan secondaryKey . Contoh berikut menunjukkan cara menggunakan parameter --query untuk menghasilkan hanya kunci primer:

export DATA_PLANE_TOKEN=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query primaryKey)

Token azure Pembelajaran Mesin dikembalikan di accessToken bidang :

export DATA_PLANE_TOKEN=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query accessToken)

Selain itu expiryTimeUtc , bidang dan refreshAfterTimeUtc berisi kedaluwarsa token dan waktu refresh.

Token Microsoft Entra

Untuk mendapatkan token Microsoft Entra (aad_token) menggunakan CLI, gunakan perintah az account get-access-token . Perintah ini mengembalikan dokumen JSON yang berisi token Microsoft Entra.

Token Microsoft Entra dikembalikan di accessToken bidang :

export DATA_PLANE_TOKEN=`(az account get-access-token --resource https://ml.azure.com --query accessToken | tr -d '"')`

Catatan

  • Ekstensi CLI ml tidak mendukung mendapatkan token Microsoft Entra. Gunakan az account get-access-token sebagai gantinya, seperti yang dijelaskan dalam kode sebelumnya.
  • Token untuk operasi sarana data diambil dari titik ml.azure.com akhir sumber daya Azure alih-alih management.azure.com, tidak seperti token untuk operasi sarana kontrol.

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

Token Pembelajaran Mesin Kunci atau Azure

Anda dapat menggunakan az ml online-endpoint invoke untuk titik akhir dengan kunci atau token Azure Pembelajaran Mesin. CLI menangani kunci atau token Azure Pembelajaran Mesin secara otomatis sehingga Anda tidak perlu meneruskannya secara eksplisit.

az ml online-endpoint invoke -n my-endpoint -r request.json

Token Microsoft Entra

Penggunaan az ml online-endpoint invoke untuk titik akhir dengan token Microsoft Entra tidak didukung. Gunakan REST API sebagai gantinya, dan gunakan URI penilaian titik akhir untuk memanggil titik akhir.

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.