Menyiapkan autentikasi antara Azure Pembelajaran Mesin dan layanan lainnya

BERLAKU UNTUK:Ekstensi ml Azure CLI v2 (saat ini)Python SDK azure-ai-ml v2 (saat ini)

Azure Pembelajaran Mesin terdiri dari beberapa layanan Azure. Ada beberapa cara agar autentikasi dapat terjadi antara Azure Pembelajaran Mesin dan layanan yang diandalkannya.

  • Ruang kerja Azure Pembelajaran Mesin menggunakan identitas terkelola untuk berkomunikasi dengan layanan lain. Secara default, ini adalah identitas terkelola yang ditetapkan sistem. Anda juga dapat menggunakan identitas terkelola yang ditetapkan pengguna sebagai gantinya.
  • Azure Pembelajaran Mesin menggunakan Azure Container Registry (ACR) untuk menyimpan gambar Docker yang digunakan untuk melatih dan menyebarkan model. Jika Anda mengizinkan Azure Pembelajaran Mesin membuat ACR secara otomatis, azure Pembelajaran Mesin akan mengaktifkan akun admin.
  • Kluster komputasi Azure Pembelajaran Mesin menggunakan identitas terkelola untuk mengambil informasi koneksi untuk datastore dari Azure Key Vault dan untuk menarik gambar Docker dari ACR. Anda juga dapat mengonfigurasi akses berbasis identitas ke penyimpanan data, yang akan menggunakan identitas terkelola kluster komputasi.
  • Akses data dapat terjadi di sepanjang beberapa jalur tergantung pada layanan penyimpanan data dan konfigurasi Anda. Misalnya, autentikasi ke datastore dapat menggunakan kunci akun, token, prinsip keamanan, identitas terkelola, atau identitas pengguna.
  • Titik akhir online terkelola dapat menggunakan identitas terkelola untuk mengakses sumber daya Azure saat melakukan inferensi. Untuk mengetahui informasi selengkapnya, lihat Mengakses sumber daya Azure dari titik akhir online.

Prasyarat

Sebelum mengikuti langkah-langkah dalam artikel ini, pastikan Anda memiliki prasyarat berikut:

  • Untuk menetapkan peran, ID masuk untuk langganan Azure Anda harus memiliki peran Operator Identitas Terkelola, atau peran lain yang memberikan tindakan yang diperlukan (seperti Pemilik).

  • Anda harus terbiasa membuat dan bekerja dengan Identitas Terkelola.

Azure Container Registry dan jenis identitas

Tabel berikut mencantumkan matriks dukungan saat mengautentikasi ke Azure Container Registry, tergantung pada metode autentikasi dan bendera ruang kerja akses jaringan publik.

Metode autentikasi Akses jaringan
publik dinonaktifkan
Akses jaringan
publik diaktifkan
Pengguna admin
Identitas terkelola yang ditetapkan sistem ruang kerja
Identitas
terkelola yang ditetapkan pengguna ruang kerja dengan peran ACRPull yang ditetapkan ke identitas

Identitas terkelola yang ditetapkan pengguna

Ruang kerja

Anda dapat menambahkan identitas terkelola yang ditetapkan pengguna saat membuat ruang kerja Azure Pembelajaran Mesin dari portal Azure. Gunakan langkah-langkah berikut saat membuat ruang kerja:

  1. Dari halaman Dasar , pilih Akun Azure Storage, Azure Container Registry, dan Azure Key Vault yang ingin Anda gunakan dengan ruang kerja.
  2. Dari halaman Identitas , pilih Identitas yang ditetapkan pengguna lalu pilih identitas terkelola yang akan digunakan.

Penetapan peran Azure RBAC berikut diperlukan pada identitas terkelola yang ditetapkan pengguna untuk ruang kerja Azure Pembelajaran Mesin Anda untuk mengakses data pada sumber daya terkait ruang kerja.

Sumber daya Izin
Ruang kerja Azure Machine Learning Kontributor
Azure Storage Kontributor (sarana kontrol) + Kontributor Data Blob Penyimpanan (bidang data, opsional, untuk mengaktifkan pratinjau data di studio Azure Pembelajaran Mesin)
Azure Key Vault (saat menggunakan model izin RBAC) Kontributor (sarana kontrol) + Administrator Key Vault (bidang data)
Azure Key Vault (saat menggunakan model izin kebijakan akses) Kontributor + izin kebijakan akses apa pun selain operasi penghapusan menyeluruh
Azure Container Registry Kontributor
Azure Application Insights Kontributor

Untuk pembuatan penetapan peran otomatis pada identitas terkelola yang ditetapkan pengguna, Anda dapat menggunakan templat ARM ini.

Tip

Untuk ruang kerja dengan kunci yang dikelola pelanggan untuk enkripsi, Anda dapat meneruskan identitas terkelola yang ditetapkan pengguna untuk mengautentikasi dari penyimpanan ke Key Vault. user-assigned-identity-for-cmk-encryption Gunakan parameter (CLI) atau user_assigned_identity_for_cmk_encryption (SDK) untuk meneruskan identitas terkelola. Identitas terkelola ini dapat sama atau berbeda dengan identitas terkelola yang ditetapkan oleh pengguna utama ruang kerja.

Untuk membuat ruang kerja dengan beberapa identitas yang ditetapkan pengguna, gunakan salah satu metode berikut:

BERLAKU UNTUK:ekstensi ml Azure CLI v2 (saat ini)

az ml workspace create -f workspace_creation_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>

Di mana konten workspace_creation_with_multiple_UAIs.yml adalah sebagai berikut:

location: <region name>
identity:
   type: user_assigned
   user_assigned_identities:
    '<UAI resource ID 1>': {}
    '<UAI resource ID 2>': {}
storage_account: <storage acccount resource ID>
key_vault: <key vault resource ID>
image_build_compute: <compute(virtual machine) resource ID>
primary_user_assigned_identity: <one of the UAI resource IDs in the above list>

Untuk memperbarui identitas yang ditetapkan pengguna untuk ruang kerja, termasuk menambahkan identitas baru atau menghapus identitas yang sudah ada, gunakan salah satu metode berikut:

BERLAKU UNTUK:ekstensi ml Azure CLI v2 (saat ini)

az ml workspace update -f workspace_update_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>

Di mana konten workspace_update_with_multiple_UAIs.yml adalah sebagai berikut:

identity:
   type: user_assigned
   user_assigned_identities:
    '<UAI resource ID 1>': {}
    '<UAI resource ID 2>': {}
primary_user_assigned_identity: <one of the UAI resource IDs in the above list>

Tip

Untuk menambahkan UAI baru, Anda dapat menentukan ID UAI baru di bawah bagian user_assigned_identities selain UEA yang ada, anda harus meneruskan semua ID UAI yang ada.
Untuk menghapus satu atau beberapa UEA yang ada, Anda dapat menempatkan ID UAI yang perlu dipertahankan di bawah bagian user_assigned_identities, ID UAI lainnya akan dihapus.
Untuk memperbarui jenis identitas dari SAI ke UAI|SAI, Anda dapat mengubah jenis dari "user_assigned" menjadi "system_assigned, user_assigned".

Kluster komputasi

Catatan

Klaster komputasi Azure Machine Learning hanya mendukung satu identitas yang ditetapkan sistem atau beberapa identitas yang ditetapkan pengguna, tidak keduanya secara bersamaan.

Identitas terkelola default adalah identitas terkelola yang ditetapkan sistem atau identitas terkelola pertama yang ditetapkan pengguna.

Selama menjalankan ada dua aplikasi identitas:

  1. Sistem ini menggunakan identitas untuk mengatur dudukan penyimpanan pengguna, registri kontainer, dan toko data.

    • Dalam hal ini, sistem akan menggunakan identitas yang dikelola secara default.
  2. Anda menerapkan identitas untuk mengakses sumber daya dari dalam kode untuk pekerjaan yang dikirimkan:

    • Dalam hal ini, berikan client_id sesuai dengan identitas terkelola yang ingin Anda gunakan untuk mengambil kredensial.
    • Atau, dapatkan ID klien identitas yang ditetapkan pengguna melalui variabel DEFAULT_IDENTITY_CLIENT_ID lingkungan.

    Misalnya, untuk mengambil token untuk toko data dengan identitas yang dikelola default:

    client_id = os.environ.get('DEFAULT_IDENTITY_CLIENT_ID')
    credential = ManagedIdentityCredential(client_id=client_id)
    token = credential.get_token('https://storage.azure.com/')
    

Untuk mengonfigurasi kluster komputasi dengan identitas terkelola, gunakan salah satu metode berikut:

BERLAKU UNTUK:ekstensi ml Azure CLI v2 (saat ini)

az ml compute create -f create-cluster.yml

Dimana isi dari create-cluster.yml adalah sebagai berikut:

$schema: https://azuremlschemas.azureedge.net/latest/amlCompute.schema.json 
name: basic-example
type: amlcompute
size: STANDARD_DS3_v2
min_instances: 0
max_instances: 2
idle_time_before_scale_down: 120
identity:
  type: user_assigned
  user_assigned_identities: 
    - resource_id: "identity_resource_id"

Sebagai perbandingan, contoh berikut adalah dari file YAML yang membuat kluster yang menggunakan identitas terkelola yang ditetapkan sistem:

$schema: https://azuremlschemas.azureedge.net/latest/amlCompute.schema.json 
name: basic-example
type: amlcompute
size: STANDARD_DS3_v2
min_instances: 0
max_instances: 2
idle_time_before_scale_down: 120
identity:
  type: system_assigned

Jika Anda memiliki kluster komputasi yang ada, Anda dapat mengubah antara identitas yang dikelola pengguna dan dikelola sistem. Contoh berikut menunjukkan cara mengubah konfigurasi:

Identitas terkelola yang ditetapkan pengguna

export MSI_NAME=my-cluster-identity
export COMPUTE_NAME=mycluster-msi

does_compute_exist()
{
  if [ -z $(az ml compute show -n $COMPUTE_NAME --query name) ]; then
    echo false
  else
    echo true
  fi
}

echo "Creating MSI $MSI_NAME"
# Get the resource id of the identity
IDENTITY_ID=$(az identity show --name "$MSI_NAME" --query id -o tsv | tail -n1 | tr -d "[:cntrl:]" || true)
if [[ -z $IDENTITY_ID ]]; then
    IDENTITY_ID=$(az identity create -n "$MSI_NAME" --query id -o tsv | tail -n1 | tr -d "[:cntrl:]")
fi
echo "MSI created: $MSI_NAME"
sleep 15 # Let the previous command finish: https://github.com/Azure/azure-cli/issues/8530


echo "Checking if compute $COMPUTE_NAME already exists"
if [ "$(does_compute_exist)" == "true" ]; then
  echo "Skipping, compute: $COMPUTE_NAME exists"
else
  echo "Provisioning compute: $COMPUTE_NAME"
  az ml compute create --name "$COMPUTE_NAME" --type amlcompute --identity-type user_assigned --user-assigned-identities "$IDENTITY_ID"
fi
az ml compute update --name "$COMPUTE_NAME" --identity-type user_assigned --user-assigned-identities "$IDENTITY_ID"

Identitas terkelola yang ditetapkan sistem

export COMPUTE_NAME=mycluster-sa

does_compute_exist()
{
  if [ -z $(az ml compute show -n $COMPUTE_NAME --query name) ]; then
    echo false
  else
    echo true
  fi
}

echo "Checking if compute $COMPUTE_NAME already exists"
if [ "$(does_compute_exist)" == "true" ]; then
  echo "Skipping, compute: $COMPUTE_NAME exists"
else
  echo "Provisioning compute: $COMPUTE_NAME"
  az ml compute create --name "$COMPUTE_NAME" --type amlcompute
fi

az ml compute update --name "$COMPUTE_NAME" --identity-type system_assigned

Penyimpanan data

Saat Anda membuat datastore yang menggunakan akses data berbasis identitas, akun Azure Anda (token Microsoft Entra) digunakan untuk mengonfirmasi bahwa Anda memiliki izin untuk mengakses layanan penyimpanan. Dalam skenario akses data berbasis identitas, tidak ada info masuk autentikasi yang disimpan. Hanya informasi akun penyimpanan yang disimpan di datastore.

Sebaliknya, penyimpanan data yang menggunakan informasi koneksi cache autentikasi berbasis kredensial, seperti kunci akun penyimpanan atau token SAS Anda, di brankas kunci yang terkait dengan ruang kerja. Pendekatan ini memiliki batasan bahwa pengguna ruang kerja lain dengan izin yang memadai dapat mengambil kredensial tersebut, yang mungkin menjadi perhatian keamanan bagi beberapa organisasi.

Untuk informasi selengkapnya tentang cara akses data diautentikasi, lihat artikel Administrasi data . Untuk informasi tentang mengonfigurasi akses berbasis identitas ke data, lihat Membuat penyimpanan data.

Ada dua skenario ketika Anda dapat menerapkan akses data berbasis identitas di Azure Machine Learning. Skenario ini cocok untuk akses berbasis identitas saat Anda bekerja dengan data rahasia dan membutuhkan manajemen akses data yang lebih terperinci:

  • Mengakses layanan penyimpanan
  • Pelatihan model pembelajaran mesin

Akses berbasis identitas memungkinkan Anda menggunakan kontrol akses berbasis peran (RBAC) untuk membatasi identitas mana, seperti pengguna atau sumber daya komputasi, yang memiliki akses ke data.

Mengakses layanan penyimpanan

Anda dapat terhubung ke layanan penyimpanan melalui akses data berbasis identitas dengan datastore Azure Pembelajaran Mesin.

Saat Anda menggunakan akses data berbasis identitas, Azure Pembelajaran Mesin meminta token Microsoft Entra Anda untuk autentikasi akses data alih-alih menyimpan kredensial Anda di datastore. Pendekatan itu memungkinkan manajemen akses data di tingkat penyimpanan dan menjaga info masuk tetap rahasia.

Perilaku yang sama berlaku saat Anda bekerja dengan data secara interaktif melalui Jupyter Notebook di komputer lokal atau instans komputasi Anda.

Catatan

Info masuk yang disimpan melalui autentikasi berbasis info masuk mencakup ID langganan, token tanda tangan akses bersama (SAS), dan kunci akses penyimpanan dan informasi perwakilan layanan, seperti ID klien dan ID penyewa.

Untuk membantu memastikan bahwa Anda terhubung dengan aman ke layanan penyimpanan Anda di Azure, Azure Machine Learning mengharuskan Anda memiliki izin untuk mengakses penyimpanan data yang sesuai.

Peringatan

Akses antar penyewa ke akun penyimpanan tidak didukung. Jika akses lintas penyewa diperlukan untuk skenario Anda, silakan hubungi alias tim Dukungan Data Azure Pembelajaran Mesin di amldatasupport@microsoft.com untuk bantuan dengan solusi kode kustom.

Akses data berbasis identitas hanya mendukung koneksi ke layanan penyimpanan berikut:

  • Azure Blob Storage
  • Azure Data Lake Storage Gen1
  • Azure Data Lake Storage Gen2

Untuk mengakses layanan penyimpanan ini, Anda harus memiliki setidaknya akses Pembaca Data Blob Penyimpanan. Hanya pemilik akun penyimpanan yang dapat mengubah tingkat akses Anda melalui portal Microsoft Azure.

Mengakses data untuk pekerjaan pelatihan tentang komputasi menggunakan identitas terkelola

Skenario pembelajaran mesin tertentu melibatkan bekerja dengan data privat. Dalam kasus seperti itu, ilmuwan data mungkin tidak memiliki akses langsung ke data sebagai pengguna Microsoft Entra. Dalam skenario ini, identitas terkelola komputasi dapat digunakan untuk autentikasi akses data. Dalam skenario ini, data hanya dapat diakses dari instans komputasi atau kluster komputasi pembelajaran mesin yang menjalankan pekerjaan pelatihan. Dengan pendekatan ini, admin memberikan instans komputasi atau identitas terkelola kluster komputasi izin Storage Blob Data Reader pada penyimpanan. Masing-masing ilmuwan data tidak perlu diberikan akses.

Untuk mengaktifkan autentikasi dengan identitas terkelola komputasi:

  • Buat komputasi dengan identitas terkelola diaktifkan. Lihat bagian kluster komputasi, atau untuk instans komputasi, bagian Tetapkan identitas terkelola.

    Penting

    Jika instans komputasi juga dikonfigurasi untuk matikan diam, instans komputasi tidak akan dimatikan karena tidak aktif kecuali identitas terkelola memiliki akses kontributor ke ruang kerja Azure Pembelajaran Mesin. Untuk informasi selengkapnya tentang menetapkan izin, lihat Mengelola akses ke ruang kerja Azure Pembelajaran Mesin.

  • Berikan identitas terkelola komputasi setidaknya peran Pembaca Data Blob Penyimpanan di akun penyimpanan.

  • Buat penyimpanan data apa pun dengan autentikasi berbasis identitas diaktifkan. Lihat Membuat penyimpanan data.

Catatan

Nama identitas terkelola sistem yang dibuat untuk instans komputasi atau kluster akan dalam format /workspace-name/computes/compute-name di ID Microsoft Entra Anda.

Setelah autentikasi berbasis identitas diaktifkan, identitas terkelola komputasi digunakan secara default saat mengakses data dalam pekerjaan pelatihan Anda. Secara opsional, Anda dapat mengautentikasi dengan identitas pengguna menggunakan langkah-langkah yang dijelaskan di bagian berikutnya.

Untuk informasi tentang menggunakan konfigurasi Azure RBAC untuk penyimpanan, lihat kontrol akses berbasis peran.

Mengakses data untuk pekerjaan pelatihan pada kluster komputasi menggunakan identitas pengguna

BERLAKU UNTUK:ekstensi ml Azure CLI v2 (saat ini)

Saat melatih kluster komputasi Azure Pembelajaran Mesin, Anda dapat mengautentikasi ke penyimpanan dengan token Microsoft Entra pengguna Anda.

Mode autentikasi ini memungkinkan Anda untuk:

  • Menyiapkan izin terperinci, yang mana pengguna ruang kerja yang berbeda memiliki akses ke akun atau folder penyimpanan yang berbeda dalam akun penyimpanan.
  • Biarkan ilmuwan data menggunakan kembali izin yang ada pada sistem penyimpanan.
  • Mengaudit akses penyimpanan karena log penyimpanan menunjukkan identitas mana yang digunakan untuk mengakses data.

Penting

Fungsi ini memiliki batasan berikut

  • Fitur didukung untuk eksperimen yang dikirimkan melalui Azure Pembelajaran Mesin CLI dan Python SDK V2, tetapi tidak melalui ML Studio.
  • Identitas pengguna dan identitas terkelola komputasi tidak dapat digunakan untuk autentikasi dalam pekerjaan yang sama.
  • Untuk pekerjaan alur, sebaiknya atur identitas pengguna pada tingkat langkah individual yang akan dijalankan pada komputasi, bukan di tingkat alur akar. ( Meskipun pengaturan identitas didukung pada tingkat alur akar dan langkah, pengaturan tingkat langkah lebih diutamakan jika keduanya diatur. Namun, untuk alur yang berisi komponen alur, identitas harus diatur pada langkah-langkah individual yang akan dijalankan. Identitas yang ditetapkan pada alur akar atau tingkat komponen alur tidak akan berfungsi. Oleh karena itu, kami menyarankan pengaturan identitas pada tingkat langkah individual untuk kesederhanaan.)

Langkah-langkah berikut menguraikan cara menyiapkan akses data dengan identitas pengguna untuk pekerjaan pelatihan pada kluster komputasi dari CLI.

  1. Berikan akses identitas pengguna ke sumber daya penyimpanan. Misalnya, berikan akses StorageBlobReader ke akun penyimpanan tertentu yang ingin Anda gunakan atau berikan izin berbasis ACL ke folder atau file tertentu di penyimpanan Azure Data Lake Gen 2.

  2. Buat penyimpanan data Azure Machine Learning tanpa cache info masuk untuk akun penyimpanan. Jika penyimpanan data memiliki cache info masuk, seperti kunci akun penyimpanan, info masuk kredensial tersebut digunakan alih-alih identitas pengguna.

  3. Kirim pekerjaan pelatihan dengan properti identity yang diatur ke jenis: user_identity, seperti yang ditunjukkan dalam spesifikasi pekerjaan berikut. Selama pekerjaan pelatihan, autentikasi ke penyimpanan terjadi melalui identitas pengguna yang mengirimkan pekerjaan.

    Catatan

    Jika properti identity dibiarkan tidak ditentukan dan penyimpanan data tidak memiliki cache info masuk, identitas terkelola komputasi menjadi opsi fallback.

    command: |
    echo "--census-csv: ${{inputs.census_csv}}"
    python hello-census.py --census-csv ${{inputs.census_csv}}
    code: src
    inputs:
    census_csv:
        type: uri_file 
        path: azureml://datastores/mydata/paths/census.csv
    environment: azureml:AzureML-sklearn-1.0-ubuntu20.04-py38-cpu@latest
    compute: azureml:cpu-cluster
    identity:
    type: user_identity
    

Langkah-langkah berikut menguraikan cara menyiapkan akses data dengan identitas pengguna untuk pekerjaan pelatihan pada kluster komputasi dari Python SDK.

  1. Berikan akses data dan buat penyimpanan data seperti yang dijelaskan di atas untuk CLI.

  2. Kirim pekerjaan pelatihan dengan parameter identitas yang diatur ke azure.ai.ml.UserIdentityConfiguration. Pengaturan parameter ini memungkinkan pekerjaan untuk mengakses data atas nama pengguna yang mengirimkan pekerjaan.

    from azure.ai.ml import command
    from azure.ai.ml.entities import Data, UriReference
    from azure.ai.ml import Input
    from azure.ai.ml.constants import AssetTypes
    from azure.ai.ml import UserIdentityConfiguration
    
    # Specify the data location
    my_job_inputs = {
        "input_data": Input(type=AssetTypes.URI_FILE, path="<path-to-my-data>")
    }
    
    # Define the job
    job = command(
        code="<my-local-code-location>", 
        command="python <my-script>.py --input_data ${{inputs.input_data}}",
        inputs=my_job_inputs,
        environment="AzureML-sklearn-0.24-ubuntu18.04-py37-cpu:9",
        compute="<my-compute-cluster-name>",
        identity= UserIdentityConfiguration() 
    )
    # submit the command
    returned_job = ml_client.jobs.create_or_update(job)
    

Penting

Selama pengiriman pekerjaan dengan autentikasi dengan identitas pengguna diaktifkan, rekam jepret kode dilindungi dari pengubahan dengan validasi checksum. Jika Anda memiliki komponen alur yang ada dan ingin menggunakannya dengan autentikasi dengan identitas pengguna diaktifkan, Anda mungkin perlu mengunggahnya kembali. Jika tidak, pekerjaan mungkin gagal selama validasi checksum.

Bekerja dengan jaringan virtual

Secara default, Azure Machine Learning tidak dapat berkomunikasi dengan akun penyimpanan yang berada di belakang firewall atau di jaringan virtual.

Anda dapat mengonfigurasi akun penyimpanan untuk mengizinkan akses hanya dari dalam jaringan virtual tertentu. Konfigurasi ini memerlukan langkah tambahan untuk memastikan data tidak bocor di luar jaringan. Perilaku ini sama untuk akses data berbasis info masuk. Untuk informasi selengkapnya, lihat Cara mencegah penyelundupan data.

Jika akun penyimpanan Anda memiliki pengaturan jaringan virtual, hal tersebut menentukan jenis identitas dan akses izin yang diperlukan. Misalnya untuk pratinjau data dan profil data, pengaturan jaringan virtual menentukan jenis identitas apa yang digunakan untuk mengautentikasi akses data.

  • Dalam skenario di mana hanya IP dan subnet tertentu yang diizinkan untuk mengakses penyimpanan, maka Azure Machine Learning menggunakan MSI ruang kerja untuk menyelesaikan pratinjau dan profil data.

  • Jika penyimpanan Anda adalah ADLS Gen 2 atau Blob dan memiliki pengaturan jaringan virtual, pelanggan dapat menggunakan identitas pengguna atau ruang kerja MSI tergantung pada pengaturan penyimpanan data yang ditentukan selama pembuatan.

  • Jika pengaturan jaringan virtual adalah "Izinkan layanan Azure pada daftar layanan tepercaya untuk mengakses akun penyimpanan ini", maka MSI Ruang Kerja digunakan.

Skenario: Azure Container Registry tanpa pengguna admin

Saat Anda menonaktifkan pengguna admin untuk ACR, Azure Pembelajaran Mesin menggunakan identitas terkelola untuk membangun dan menarik gambar Docker. Ada dua alur kerja saat mengonfigurasi Azure Pembelajaran Mesin untuk menggunakan ACR dengan pengguna admin dinonaktifkan:

  • Izinkan Azure Pembelajaran Mesin membuat instans ACR lalu nonaktifkan pengguna admin setelahnya.
  • Bawa ACR yang ada dengan pengguna admin yang sudah dinonaktifkan.

Azure Pembelajaran Mesin dengan instans ACR yang dibuat secara otomatis

  1. Buat ruang kerja Azure Pembelajaran Mesin baru.

  2. Lakukan tindakan yang memerlukan Azure Container Registry. Misalnya, Tutorial: Melatih model pertama Anda.

  3. Dapatkan nama ACR yang dibuat oleh kluster.

    BERLAKU UNTUK:ekstensi ml Azure CLI v2 (saat ini)

    az ml workspace show -w <my workspace> \
    -g <my resource group>
    --query containerRegistry
    

    Perintah ini mengembalikan nilai yang mirip dengan teks berikut. Anda hanya menginginkan bagian terakhir teks, yaitu nama instans ACR:

    /subscriptions/<subscription id>/resourceGroups/<my resource group>/providers/MicrosoftContainerReggistry/registries/<ACR instance name>
    
  4. Perbarui ACR untuk menonaktifkan pengguna admin:

    az acr update --name <ACR instance name> --admin-enabled false
    

Membawa ACR Anda sendiri

Jika pengguna admin ACR tidak diizinkan oleh kebijakan langganan, Anda harus terlebih dahulu membuat ACR tanpa pengguna admin, lalu mengaitkannya dengan ruang kerja. Selain itu, jika Anda memiliki ACR yang ada dengan pengguna admin yang dinonaktifkan, Anda dapat melampirkannya ke ruang kerja.

Membuat ACR dari Azure CLI tanpa mengatur argumen --admin-enabled, atau dari portal Microsoft Azure tanpa mengaktifkan pengguna admin. Kemudian, saat membuat ruang kerja Pembelajaran Mesin Microsoft Azure, tentukan ID sumber daya Azure ACR. Contoh berikut menunjukkan pembuatan ruang kerja Azure Pembelajaran Mesin baru yang menggunakan ACR yang sudah ada:

Tip

Untuk mendapatkan nilai parameter --container-registry, gunakan perintah az acr show untuk menampilkan informasi untuk ACR Anda. Bidang id berisi ID sumber daya untuk ACR Anda.

BERLAKU UNTUK:ekstensi ml Azure CLI v2 (saat ini)

az ml workspace create -w <workspace name> \
-g <workspace resource group> \
-l <region> \
--container-registry /subscriptions/<subscription id>/resourceGroups/<acr resource group>/providers/Microsoft.ContainerRegistry/registries/<acr name>

Buat komputasi dengan identitas terkelola untuk mengakses gambar Docker untuk pelatihan

Untuk mengakses ACR ruang kerja, buat kluster komputasi pembelajaran mesin dengan identitas terkelola yang ditetapkan sistem diaktifkan. Anda dapat mengaktifkan identitas dari portal Azure atau Studio saat membuat komputasi, atau dari Azure CLI dengan menggunakan parameter berikut ini. Untuk informasi selengkapnya, lihat menggunakan identitas terkelola dengan kluster komputasi.

BERLAKU UNTUK:ekstensi ml Azure CLI v2 (saat ini)

az ml compute create --name cpu-cluster --type <cluster name>  --identity-type systemassigned

Identitas terkelola secara otomatis diberikan peran ACRPull pada ACR ruang kerja untuk memungkinkan menarik gambar Docker untuk pelatihan.

Catatan

Jika Anda membuat komputasi terlebih dahulu, sebelum ACR ruang kerja dibuat, Anda harus menetapkan peran ACRPull secara manual.

Menggunakan gambar Docker untuk inferensi

Setelah mengonfigurasi ACR tanpa pengguna admin seperti yang dijelaskan sebelumnya, Anda dapat mengakses gambar Docker untuk inferensi tanpa kunci admin dari Azure Kubernetes Service (AKS). Saat Anda membuat atau melampirkan AKS ke ruang kerja, perwakilan layanan kluster secara otomatis menetapkan akses ACRPull ke ACR ruang kerja.

Catatan

Jika Anda membawa kluster AKS Anda sendiri, kluster harus mengaktifkan perwakilan layanan, bukan identitas terkelola.

Skenario: Menggunakan Azure Container Registry privat

Secara default, Pembelajaran Mesin Microsoft Azure menggunakan gambar dasar Docker yang berasal dari repositori publik yang dikelola oleh Microsoft. Kemudian, lingkungan pelatihan atau inferensi Anda dibangun pada gambar-gambar tersebut. Untuk informasi selengkapnya, lihat Apa itu lingkungan ML?.

Untuk menggunakan gambar dasar kustom internal ke perusahaan Anda, Anda dapat menggunakan identitas terkelola untuk mengakses ACR pribadi Anda. Ada dua kasus penggunaan:

  • Gunakan gambar dasar untuk pelatihan apa adanya.
  • Bangun gambar terkelola Pembelajaran Mesin Microsoft Azure dengan gambar kustom sebagai dasar.

Tarik gambar dasar Docker ke kluster komputasi pembelajaran mesin untuk pelatihan apa adanya

Buat kluster komputasi pembelajaran mesin dengan identitas terkelola yang ditetapkan sistem diaktifkan seperti yang dijelaskan sebelumnya. Kemudian, tentukan ID pokok identitas dikelola.

BERLAKU UNTUK:ekstensi ml Azure CLI v2 (saat ini)

az ml compute show --name <cluster name> -w <workspace> -g <resource group>

Secara opsional, Anda dapat memperbarui kluster komputasi untuk menetapkan identitas terkelola yang ditetapkan pengguna:

BERLAKU UNTUK:ekstensi ml Azure CLI v2 (saat ini)

az ml compute update --name <cluster name> --user-assigned-identities <my-identity-id>

Untuk memungkinkan kluster komputasi menarik gambar dasar, berikan peran ACRPull identitas layanan terkelola pada ACR pribadi

BERLAKU UNTUK:ekstensi ml Azure CLI v2 (saat ini)

az role assignment create --assignee <principal ID> \
--role acrpull \
--scope "/subscriptions/<subscription ID>/resourceGroups/<private ACR resource group>/providers/Microsoft.ContainerRegistry/registries/<private ACR name>"

Terakhir, buat lingkungan dan tentukan lokasi gambar dasar dalam file YAML lingkungan.

BERLAKU UNTUK:ekstensi ml Azure CLI v2 (saat ini)

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-image-example
image: pytorch/pytorch:latest
description: Environment created from a Docker image.
az ml environment create --file <yaml file>

Anda sekarang dapat menggunakan lingkungan dalam pekerjaan pelatihan.

Bangun lingkungan yang dikelola Pembelajaran Mesin Microsoft Azure menjadi gambar dasar dari ACR pribadi untuk pelatihan atau inferensi

BERLAKU UNTUK:ekstensi ml Azure CLI v2 (saat ini)

Dalam skenario ini, Azure Machine Learning service membangun lingkungan pelatihan atau inferensi di atas gambar dasar yang Anda berikan dari ACR pribadi. Karena tugas membangun gambar terjadi pada ACR ruang kerja menggunakan Tugas ACR, Anda harus melakukan lebih banyak langkah untuk mengizinkan akses.

  1. Buat identitas terkelola yang ditetapkan pengguna dan berikan identitas ACRPull akses ke ACR pribadi.

  2. Berikan peran Operator Identitas Terkelola pada identitasterkelola yang ditetapkan pengguna dari langkah sebelumnya. Peran ini memungkinkan ruang kerja untuk menetapkan identitas terkelola yang ditetapkan pengguna ke Tugas ACR untuk membangun lingkungan terkelola.

    1. Dapatkan ID utama identitas terkelola yang ditetapkan sistem ruang kerja:

      BERLAKU UNTUK:ekstensi ml Azure CLI v2 (saat ini)

      az ml workspace show -w <workspace name> -g <resource group> --query identityPrincipalId
      
    2. Berikan peran Operator Identitas Terkelola:

      az role assignment create --assignee <principal ID> --role managedidentityoperator --scope <user-assigned managed identity resource ID>
      

      ID sumber daya identitas terkelola yang ditetapkan pengguna adalah ID sumber daya Azure dari identitas yang ditetapkan pengguna, dalam format /subscriptions/<subscription ID>/resourceGroups/<resource group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned managed identity name>.

  3. Tentukan ACR eksternal dan ID klien identitas terkelola yang ditetapkan pengguna dalam koneksi ruang kerja dengan menggunakan az ml connection perintah . Perintah ini menerima file YAML yang menyediakan informasi tentang koneksi. Contoh berikut menunjukkan format untuk menentukan identitas terkelola. client_id Ganti nilai dan resource_id dengan nilai untuk identitas terkelola Anda:

    BERLAKU UNTUK:ekstensi ml Azure CLI v2 (saat ini)

    name: test_ws_conn_cr_managed
    type: container_registry
    target: https://test-feed.com
    credentials:
      type: managed_identity
      client_id: client_id
      resource_id: resource_id
    

    Perintah berikut menunjukkan cara menggunakan file YAML untuk membuat koneksi dengan ruang kerja Anda. Ganti <yaml file>, <workspace name>, dan <resource group> dengan nilai untuk konfigurasi Anda:

    az ml connection create --file <yml file> --resource-group <resource group> --workspace-name <workspace>
    
  4. Setelah konfigurasi selesai, Anda dapat menggunakan gambar dasar dari ACR pribadi saat membangun lingkungan untuk pelatihan atau inferensi. Cuplikan kode berikut menunjukkan cara menentukan gambar dasar ACR dan nama gambar dalam definisi lingkungan:

    BERLAKU UNTUK: Python SDK azure-ai-ml v2 (saat ini)

    $schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
    name: private-acr-example
    image: <acr url>/pytorch/pytorch:latest
    description: Environment created from private ACR.
    

Langkah berikutnya