Menyiapkan autentikasi untuk sumber daya dan alur kerja Azure Machine Learning menggunakan SDK v1

BERLAKU UNTUK:SDK Python azureml v1

Pelajari cara menyiapkan autentikasi ke ruang kerja Azure Machine Learning Anda. Autentikasi ke ruang kerja Azure Pembelajaran Mesin Anda didasarkan pada ID Microsoft Entra untuk sebagian besar hal. Secara umum, ada empat alur kerja autentikasi yang dapat Anda gunakan saat menyambungkan ke ruang kerja:

  • Interaktif: Anda menggunakan akun Anda di ID Microsoft Entra untuk mengautentikasi secara langsung, atau untuk mendapatkan token yang digunakan untuk autentikasi. Autentikasi interaktif digunakan selama eksperimen dan pengembangan berulang. Autentikasi interaktif memungkinkan Anda mengontrol akses ke sumber daya (seperti layanan web) pada basis per pengguna.

  • Perwakilan layanan: Anda membuat akun perwakilan layanan di ID Microsoft Entra, dan menggunakannya untuk mengautentikasi atau mendapatkan token. Perwakilan layanan digunakan saat Anda memerlukan proses otomatis untuk mengautentikasi ke layanan tanpa memerlukan interaksi pengguna. Misalnya, integrasi berkelanjutan dan skrip penyebaran yang melatih dan menguji model setiap kali kode pelatihan berubah.

  • Sesi Azure CLI: Anda menggunakan sesi Azure CLI yang aktif untuk mengautentikasi. Autentikasi Azure CLI digunakan selama eksperimen dan pengembangan berulang, atau saat Anda memerlukan proses otomatis untuk mengautentikasi ke layanan menggunakan sesi pra-autentikasi. Anda dapat masuk ke Azure melalui Azure CLI di stasiun kerja lokal Anda, tanpa menyimpan info masuk dalam kode Python atau meminta pengguna untuk mengautentikasi. Demikian pula, Anda dapat menggunakan kembali skrip yang sama sebagai bagian dari integrasi berkelanjutan dan alur penyebaran, sambil mengautentikasi Azure CLI dengan identitas perwakilan layanan.

  • Identitas terkelola: Saat menggunakan SDK Azure Machine Learningdi Komputer Virtual Azure, Anda dapat menggunakan identitas terkelola untuk Azure. Alur kerja ini memungkinkan VM terhubung ke ruang kerja menggunakan identitas terkelola, tanpa menyimpan kredensial dalam kode Python atau meminta pengguna untuk mengautentikasi. Azure Pembelajaran Mesin kluster komputasi dan instans komputasi juga dapat dikonfigurasi untuk menggunakan identitas terkelola untuk mengakses ruang kerja saat melatih model.

Terlepas dari alur kerja autentikasi yang digunakan, kontrol akses berbasis peran Azure (Azure RBAC) digunakan untuk mencakup tingkat akses (otorisasi) yang diizinkan ke sumber daya. Misalnya, admin atau proses otomatisasi mungkin memiliki akses untuk membuat instans komputasi, tetapi tidak menggunakannya, sementara ilmuwan data dapat menggunakannya, tetapi tidak menghapus atau membuatnya. Untuk informasi selengkapnya, lihat Mengelola akses ke ruang kerja Azure Machine Learning.

Microsoft Entra Conditional Access dapat digunakan untuk mengontrol atau membatasi akses lebih lanjut ke ruang kerja untuk setiap alur kerja autentikasi. Misalnya, admin hanya dapat mengizinkan akses ruang kerja dari perangkat terkelola.

Prasyarat

Microsoft Entra ID

Semua alur kerja autentikasi untuk ruang kerja Anda mengandalkan ID Microsoft Entra. Jika Anda ingin pengguna mengautentikasi menggunakan akun individual, mereka harus memiliki akun di ID Microsoft Entra Anda. Jika Anda ingin menggunakan perwakilan layanan, perwakilan layanan tersebut harus ada di ID Microsoft Entra Anda. Identitas terkelola juga merupakan fitur ID Microsoft Entra.

Untuk informasi selengkapnya tentang ID Microsoft Entra, lihat Apa itu autentikasi Microsoft Entra.

Setelah Anda membuat akun Microsoft Entra, lihat Mengelola akses ke ruang kerja Azure Pembelajaran Mesin untuk informasi tentang memberi mereka akses ke ruang kerja dan operasi lain di Azure Pembelajaran Mesin.

Mengonfigurasi perwakilan layanan

Untuk menggunakan perwakilan layanan (SP), Anda harus terlebih dahulu membuat SP. Kemudian berikan akses ke ruang kerja Anda. Seperti yang disebutkan sebelumnya, kontrol akses berbasis peran Azure (Azure RBAC) digunakan untuk mengontrol akses, jadi Anda juga harus memutuskan akses apa yang akan diberikan kepada SP.

Penting

Saat menggunakan perwakilan layanan, berikan akses minimum yang diperlukan untuk tugas yang digunakan. Misalnya, Anda tidak akan memberikan akses kepada pemilik atau kontributor utama layanan jika semua yang digunakan adalah membaca token akses untuk penyebaran web.

Alasan untuk memberikan akses paling sedikit adalah karena perwakilan layanan menggunakan kata sandi untuk mengautentikasi, dan kata sandi dapat disimpan sebagai bagian dari skrip otomatisasi. Jika kata sandi bocor, memiliki akses minimum yang diperlukan untuk tugas tertentu akan meminimalkan penggunaan SP yang berbahaya.

Cara termudah untuk membuat SP dan memberikan akses ke ruang kerja Anda adalah dengan menggunakan Azure CLI. Untuk membuat perwakilan layanan dan memberinya akses ke ruang kerja Anda, gunakan langkah-langkah berikut:

Catatan

Anda harus menjadi admin di langganan untuk melakukan semua langkah ini.

  1. Autentikasi ke langganan Azure Anda:

    az login
    

    Jika CLI dapat membuka browser default Anda, CLI akan melakukannya dan memuat halaman masuk. Jika tidak, Anda perlu membuka browser dan mengikuti instruksi pada baris perintah. Petunjuknya meliputi penjelajahan ke https://aka.ms/devicelogin dan memasukkan kode otorisasi.

    Jika Anda memiliki beberapa langganan Azure, Anda dapat menggunakan perintah az account set -s <subscription name or ID> untuk mengatur langganan. Untuk informasi selengkapnya, lihat Menggunakan beberapa langganan Azure.

    Untuk metode autentikasi lainnya, lihat Masuk dengan Azure CLI.

  2. Buat perwakilan layanan. Dalam contoh berikut, SP bernama ml-auth dibuat:

    az ad sp create-for-rbac --json-auth --name ml-auth --role Contributor --scopes /subscriptions/<subscription id>
    

    Parameter --json-auth tersedia dalam versi >Azure CLI = 2.51.0. Versi sebelum penggunaan --sdk-authini .

    Outputnya akan menjadi JSON yang mirip dengan berikut ini. Perhatikan bidang clientId, clientSecret, dan tenantId, karena Anda akan memerlukannya untuk langkah lain dalam artikel ini.

    {
        "clientId": "your-client-id",
        "clientSecret": "your-client-secret",
        "subscriptionId": "your-sub-id",
        "tenantId": "your-tenant-id",
        "activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
        "resourceManagerEndpointUrl": "https://management.azure.com",
        "activeDirectoryGraphResourceId": "https://graph.windows.net",
        "sqlManagementEndpointUrl": "https://management.core.windows.net:5555",
        "galleryEndpointUrl": "https://gallery.azure.com/",
        "managementEndpointUrl": "https://management.core.windows.net"
    }
    
  3. Ambil detail untuk perwakilan layanan dengan menggunakan nilai clientId yang ditampilkan pada langkah sebelumnya:

    az ad sp show --id your-client-id
    

    JSON berikut adalah contoh sederhana output dari perintah. Catat bidang objectId, karena Anda akan membutuhkan nilainya untuk langkah berikutnya.

    {
        "accountEnabled": "True",
        "addIns": [],
        "appDisplayName": "ml-auth",
        ...
        ...
        ...
        "objectId": "your-sp-object-id",
        "objectType": "ServicePrincipal"
    }
    
  4. Untuk memberikan akses ke ruang kerja dan sumber daya lain yang digunakan oleh Azure Machine Learning, gunakan informasi dalam artikel berikut ini:

    Penting

    Akses pemilik memungkinkan perwakilan layanan melakukan hampir semua operasi di ruang kerja Anda. Hal ini digunakan dalam dokumen ini untuk menunjukkan cara memberikan akses; di lingkungan produksi, Microsoft merekomendasikan untuk memberikan akses minimum kepada perwakilan layanan yang diperlukan untuk menjalankan peran yang Anda inginkan. Untuk informasi tentang membuat peran kustom dengan akses yang diperlukan untuk skenario Anda, lihat Mengelola akses ke ruang kerja Azure Machine Learning.

Mengonfigurasi identitas terkelola

Penting

Identitas terkelola hanya didukung saat menggunakan Azure Pembelajaran Mesin SDK dari Azure Virtual Machine atau dengan kluster komputasi atau instans komputasi Azure Pembelajaran Mesin.

Identitas terkelola dengan VM

  1. Aktifkan identitas terkelola yang ditetapkan sistem untuk sumber daya Azure di VM.

  2. Dari Portal Microsoft Azure, pilih ruang kerja Anda, lalu pilih Access Control (IAM).

  3. Pilih Tambahkan, Tambahkan Penetapan Peran untuk membuka Tambahkan halaman penetapan peran.

  4. Tetapkan peran berikut. Untuk langkah-langkah mendetail, lihat Menetapkan peran Azure menggunakan portal Azure.

    Pengaturan Nilai
    Peran Peran yang Anda ingin tetapkan.
    Tetapkan akses ke Identitas Terkelola
    Anggota Identitas terkelola yang Anda buat sebelumnya

    Add role assignment page in Azure portal.

Identitas terkelola dengan kluster komputasi

Untuk informasi selengkapnya, lihat Menyiapkan identitas terkelola untuk kluster komputasi.

Menggunakan autentikasi interaktif

Penting

Autentikasi interaktif menggunakan browser Anda, dan memerlukan cookie (termasuk cookie pihak ketiga). Jika Anda telah menonaktifkan cookie, Anda mungkin menerima kesalahan seperti "kami tidak dapat memasukkan Anda." Kesalahan ini juga dapat terjadi jika Anda telah mengaktifkan autentikasi multifaktor Microsoft Entra.

Sebagian besar contoh dalam dokumentasi dan sampel menggunakan autentikasi interaktif. Misalnya, saat menggunakan SDK, ada dua panggilan fungsi yang secara otomatis akan meminta Anda dengan alur autentikasi berbasis UI:

  • Memanggil fungsi from_config() akan mengeluarkan permintaan.

    from azureml.core import Workspace
    ws = Workspace.from_config()
    

    Fungsi from_config() mencari file JSON yang berisi informasi koneksi ruang kerja Anda.

  • Menggunakan konstruktor Workspace untuk menyediakan informasi langganan, grup sumber daya, dan ruang kerja, juga akan meminta autentikasi interaktif.

    ws = Workspace(subscription_id="your-sub-id",
                  resource_group="your-resource-group-id",
                  workspace_name="your-workspace-name"
                  )
    

Tip

Jika Anda memiliki akses ke beberapa penyewa, Anda mungkin perlu mengimpor kelas dan secara eksplisit menentukan penyewa yang Anda targetkan. Memanggil konstruktor untuk InteractiveLoginAuthentication juga akan meminta Anda untuk masuk mirip dengan panggilan di atas.

from azureml.core.authentication import InteractiveLoginAuthentication
interactive_auth = InteractiveLoginAuthentication(tenant_id="your-tenant-id")

Saat menggunakan Azure CLI, perintah az login digunakan untuk mengautentikasi sesi CLI. Untuk informasi selengkapnya, lihat Mulai menggunakan Azure CLI.

Tip

Jika Anda menggunakan SDK dari lingkungan tempat Anda sebelumnya telah mengautentikasi secara interaktif menggunakan Azure CLI, Anda dapat menggunakan kelas AzureCliAuthentication untuk mengautentikasi ke ruang kerja menggunakan kredensial yang di-cache oleh CLI:

from azureml.core.authentication import AzureCliAuthentication
cli_auth = AzureCliAuthentication()
ws = Workspace(subscription_id="your-sub-id",
               resource_group="your-resource-group-id",
               workspace_name="your-workspace-name",
               auth=cli_auth
               )

Menggunakan autentikasi perwakilan layanan

Untuk mengautentikasi ke ruang kerja Anda dari SDK, menggunakan perwakilan layanan, gunakan konstruktor kelas ServicePrincipalAuthentication. Gunakan nilai yang Anda dapatkan saat membuat penyedia layanan sebagai parameter. Parameter tenant_id memetakan ke tenantId dari atas, service_principal_id memetakan ke clientId, dan service_principal_password memetakan ke clientSecret.

from azureml.core.authentication import ServicePrincipalAuthentication

sp = ServicePrincipalAuthentication(tenant_id="your-tenant-id", # tenantID
                                    service_principal_id="your-client-id", # clientId
                                    service_principal_password="your-client-secret") # clientSecret

Variabel sp ​​sekarang menyimpan objek autentikasi yang Anda gunakan langsung di SDK. Secara umum, hal ini adalah ide yang baik untuk menyimpan ID/rahasia yang digunakan dalam variabel lingkungan seperti yang ditunjukkan pada kode berikut. Menyimpan dalam variabel lingkungan mencegah informasi diperiksa secara tidak sengaja ke dalam repo GitHub.

import os

sp = ServicePrincipalAuthentication(tenant_id=os.environ['AML_TENANT_ID'],
                                    service_principal_id=os.environ['AML_PRINCIPAL_ID'],
                                    service_principal_password=os.environ['AML_PRINCIPAL_PASS'])

Untuk alur kerja otomatis yang berjalan dengan Python dan menggunakan SDK sebagai dasarnya, Anda dapat menggunakan objek ini apa adanya dalam banyak kasus untuk autentikasi. Kode berikut mengautentikasi ke ruang kerja menggunakan objek autentikasi yang Anda buat.

from azureml.core import Workspace

ws = Workspace.get(name="ml-example",
                   auth=sp,
                   subscription_id="your-sub-id",
                   resource_group="your-rg-name")
ws.get_details()

Menggunakan autentikasi identitas terkelola

Untuk mengautentikasi ke ruang kerja dari VM, kluster komputasi, atau instans komputasi yang dikonfigurasi dengan identitas terkelola, gunakan MsiAuthentication kelas . Contoh berikut menunjukkan cara menggunakan kelas ini untuk mengautentikasi ke ruang kerja:

from azureml.core.authentication import MsiAuthentication

msi_auth = MsiAuthentication()

ws = Workspace(subscription_id="your-sub-id",
                resource_group="your-resource-group-id",
                workspace_name="your-workspace-name",
                auth=msi_auth
                )

Menggunakan Akses Bersyarat

Sebagai administrator, Anda dapat menerapkan kebijakan Akses Bersyarat Microsoft Entra untuk pengguna yang masuk ke ruang kerja. Misalnya, Anda dapat memerlukan autentikasi dua faktor atau mengizinkan proses masuk hanya dari perangkat terkelola. Untuk menggunakan Akses Bersyar untuk ruang kerja Azure Pembelajaran Mesin secara khusus, tetapkan kebijakan Akses Bersyar ke aplikasi bernama Azure Pembelajaran Mesin. ID aplikasi adalah 0736f41a-0425-bdb5-1563eff02385.

Langkah berikutnya