Menggunakan identitas terkelola Azure di Unity Catalog untuk mengakses penyimpanan

Artikel ini menjelaskan cara menggunakan identitas terkelola Azure untuk menyambungkan ke kontainer penyimpanan atas nama pengguna Katalog Unity.

Apa itu identitas terkelola Azure?

Katalog Unity dapat dikonfigurasi untuk menggunakan identitas terkelola Azure untuk mengakses kontainer penyimpanan atas nama pengguna Katalog Unity. Identitas terkelola menyediakan identitas untuk digunakan aplikasi saat terhubung ke sumber daya yang mendukung autentikasi ID Microsoft Entra (sebelumnya Azure Active Directory).

Anda dapat menggunakan identitas terkelola di Unity Catalog untuk mendukung dua kasus penggunaan utama:

  • Sebagai identitas untuk menyambungkan ke akun penyimpanan terkelola metastore (tempat tabel terkelola disimpan).
  • Sebagai identitas untuk terhubung ke akun penyimpanan eksternal lainnya (baik untuk akses berbasis file atau untuk mengakses himpunan data yang ada melalui tabel eksternal).

Mengonfigurasi Unity Catalog dengan identitas terkelola memiliki manfaat berikut daripada mengonfigurasi Unity Catalog dengan perwakilan layanan:

  • Identitas terkelola tidak mengharuskan Anda untuk mempertahankan mandat atau memutar rahasia.

  • Jika ruang kerja Azure Databricks Anda disebarkan di VNet Anda sendiri (juga dikenal sebagai injeksi VNet) dan Anda menggunakan firewall penyimpanan untuk melindungi akun Azure Data Lake Storage Gen2, Anda dapat menggunakan identitas terkelola untuk menyambungkan ruang kerja ke akun tersebut. Lihat (Direkomendasikan untuk ruang kerja yang disuntikkan VNet) Mengonfigurasi akses tepercaya ke Azure Storage berdasarkan identitas terkelola Anda.

    Catatan

    Anda tidak dapat menggunakan firewall penyimpanan dalam penyebaran Azure Databricks standar.

Mengonfigurasi identitas terkelola untuk Katalog Unity

Untuk mengonfigurasi identitas terkelola untuk digunakan dengan Unity Catalog, Anda terlebih dahulu membuat konektor akses untuk Azure Databricks di Azure. Secara default, konektor akses akan disebarkan dengan identitas terkelola yang ditetapkan sistem. Anda dapat memilih untuk melampirkan identitas terkelola yang ditetapkan pengguna. Anda kemudian memberikan akses identitas terkelola ke akun Azure Data Lake Storage Gen2 Anda dan menggunakan konektor akses saat Anda membuat metastore Unity Catalog atau kredensial penyimpanan.

Persyaratan

Pengguna Azure atau perwakilan layanan yang membuat konektor akses harus:

  • Jadilah Kontributor atau Pemilik grup sumber daya Azure.

Pengguna Azure atau perwakilan layanan yang memberikan identitas terkelola ke akun penyimpanan harus:

  • Jadilah Pemilik atau pengguna dengan peran Administrator Akses Pengguna Azure RBAC di akun penyimpanan.

Langkah 1: Membuat konektor akses untuk Azure Databricks

Access Koneksi or untuk Azure Databricks adalah sumber daya Azure pihak pertama yang memungkinkan Anda menyambungkan identitas terkelola ke akun Azure Databricks.

Setiap konektor akses untuk Azure Databricks dapat berisi satu identitas terkelola yang ditetapkan sistem atau satu identitas terkelola yang ditetapkan pengguna. Jika Anda ingin menggunakan beberapa identitas terkelola, buat konektor akses terpisah untuk masing-masing identitas.

Menggunakan identitas terkelola yang ditetapkan sistem

  1. Masuk ke Portal Microsoft Azure sebagai Kontributor atau Pemilik grup sumber daya.

  2. Klik + Buat atau Buat sumber daya baru.

  3. Cari Access Koneksi or untuk Azure Databricks dan pilih.

  4. Klik Buat.

  5. Pada tab Dasar , terima, pilih, atau masukkan nilai untuk bidang berikut ini:

    • Langganan: Ini adalah langganan Azure tempat konektor akses akan dibuat. Defaultnya adalah langganan Azure yang saat ini Anda gunakan. Ini bisa menjadi langganan apa pun di penyewa.
    • Grup sumber daya: Ini adalah grup sumber daya Azure tempat konektor akses akan dibuat.
    • Nama: Masukkan nama yang menunjukkan tujuan konektor.
    • Wilayah: Ini harus menjadi wilayah yang sama dengan akun penyimpanan yang akan Anda sambungkan.
  6. Klik Tinjau + buat.

  7. Saat Anda melihat pesan Validasi Lulus , klik Buat.

    Ketika penyebaran berhasil, konektor akses disebarkan dengan identitas terkelola yang ditetapkan sistem.

  8. Setelah penyebaran selesai, klik Buka sumber daya.

  9. Catat ID Sumber Daya.

    ID sumber daya dalam format:

    /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    

Untuk menggunakan identitas terkelola yang ditetapkan pengguna

  1. Jika Anda belum memiliki identitas terkelola yang ditetapkan pengguna, buat identitas terkelola baru dan catat ID sumber dayanya.

    Lihat Mengelola identitas terkelola yang ditetapkan pengguna.

  2. Masuk ke Portal Microsoft Azure sebagai Kontributor atau Pemilik grup sumber daya.

    Grup sumber daya harus berada di wilayah yang sama dengan akun penyimpanan yang ingin Anda sambungkan.

  3. Cari Sebarkan templat kustom dan pilih templat tersebut.

  4. Pilih Bangun templat Anda sendiri dan tempelkan templat berikut ke editor:

    {
     "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
     "contentVersion": "1.0.0.0",
     "parameters": {
         "connectorName": {
             "defaultValue": "testConnector",
             "type": "String",
             "metadata": {
                 "description": "The name of the Azure Databricks Access Connector to create."
             }
         },
         "accessConnectorRegion": {
             "defaultValue": "[resourceGroup().location]",
             "type": "String",
             "metadata": {
                 "description": "Location for the access connector resource."
             }
         },
         "userAssignedManagedIdentiy": {
             "type": "String",
             "metadata": {
                 "description": "The resource Id of the user assigned managed identity."
             }
         }
     },
     "resources": [
         {
             "type": "Microsoft.Databricks/accessConnectors",
             "apiVersion": "2023-05-01",
             "name": "[parameters('connectorName')]",
             "location": "[parameters('accessConnectorRegion')]",
             "identity": {
                 "type": "UserAssigned",
                 "userAssignedIdentities": {
                     "[parameters('userAssignedManagedIdentiy')]": {}
                 }
              }
          }
       ]
    }
    
  5. Pada tab Dasar, terima, pilih, atau masukkan nilai untuk bidang berikut ini:

    • Langganan: Langganan Azure tempat konektor akses akan dibuat. Defaultnya adalah langganan Azure yang saat ini Anda gunakan. Ini bisa menjadi langganan apa pun di penyewa.
    • Grup sumber daya: Grup sumber daya di wilayah yang sama dengan akun penyimpanan yang akan Anda sambungkan.
    • Nama: Nama yang menunjukkan tujuan konektor.
    • Wilayah: Ini harus menjadi wilayah yang sama dengan akun penyimpanan yang akan Anda sambungkan. Anda dapat memilih nilai yang telah diisi sebelumnya '[resourceGroup().location]' jika grup sumber daya dibuat di wilayah yang sama dengan akun penyimpanan yang akan Anda sambungkan.
    • Identitas Terkelola yang Ditetapkan Pengguna: ID Sumber Daya dari identitas terkelola yang ditetapkan pengguna yang ingin Anda gunakan.
  6. Klik Tinjau + buat.

  7. Saat Anda melihat pesan Validasi Lulus , klik Buat.

  8. Setelah penyebaran selesai, klik Buka sumber daya.

  9. Catat ID Sumber Daya.

    ID sumber daya dalam format:

    /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    

Langkah 2: Berikan akses identitas terkelola ke akun penyimpanan

Untuk memberikan izin dalam langkah ini, Anda harus memiliki peran Pemilik atau Administrator Akses Pengguna Azure RBAC di akun penyimpanan Anda.

  1. Masuk ke akun Azure Data Lake Storage Gen2 Anda.
  2. Buka Kontrol Akses (IAM), klik + Tambahkan, dan pilih Tambahkan penetapan peran.
  3. Pilih peran Kontributor Data Blob Penyimpanan dan klik Berikutnya.
  4. Di bawah Tetapkan akses ke, pilih Identitas terkelola.
  5. Klik +Pilih Anggota, dan pilih Konektor akses untuk Azure Databricks atau Identitas terkelola yang ditetapkan pengguna.
  6. Cari nama konektor atau identitas yang ditetapkan pengguna, pilih, dan klik Tinjau dan Tetapkan.

Atau, Anda dapat membatasi akses ke akun penyimpanan dengan memberikan akses identitas terkelola ke kontainer tertentu. Ikuti langkah-langkah yang sama di atas, tetapi berikan peran Delegator Blob Penyimpanan pada akun penyimpanan dan peran Kontributor Data Blob Penyimpanan pada kontainer.

Langkah 3: Memberikan akses identitas terkelola ke peristiwa file

Memberikan akses identitas terkelola Anda ke peristiwa file memungkinkan Azure Databricks berlangganan pemberitahuan peristiwa file yang dipancarkan oleh penyedia cloud. Ini membuat pemrosesan file lebih efisien. Untuk memberikan izin dalam langkah ini, Anda harus memiliki peran Pemilik atau Administrator Akses Pengguna Azure RBAC di akun penyimpanan Anda.

  1. Masuk ke akun Azure Data Lake Storage Gen2 Anda.
  2. Buka Kontrol Akses (IAM), klik + Tambahkan, dan pilih Tambahkan penetapan peran.
  3. Pilih peran Kontributor Data Antrean Penyimpanan, dan klik Berikutnya.
  4. Di bawah Tetapkan akses ke, pilih Identitas terkelola.
  5. Klik +Pilih Anggota, dan pilih Konektor akses untuk Azure Databricks atau Identitas terkelola yang ditetapkan pengguna.
  6. Cari nama konektor atau identitas yang ditetapkan pengguna, pilih, dan klik Tinjau dan Tetapkan.

Langkah ini memungkinkan Azure Databricks untuk menyiapkan peristiwa file secara otomatis. Jika Anda tidak memberikan akses Azure Databricks untuk mengonfigurasi peristiwa file atas nama Anda, Anda harus mengonfigurasi peristiwa file secara manual untuk setiap lokasi. Untuk memberikan izin dalam langkah ini, Anda harus memiliki peran Pemilik atau Administrator Akses Pengguna Azure RBAC pada identitas terkelola Anda dan grup sumber daya tempat akun Azure Data Lake Storage Gen2 Anda berada.

  1. Ikuti langkah-langkah di atas pada Langkah 3: Berikan akses identitas terkelola ke peristiwa file dan tetapkan Kontributor Akun Penyimpanan, bersama dengan peran Kontributor Data Antrean Penyimpanan, ke identitas terkelola Anda.
  2. Navigasikan ke grup sumber daya Azure tempat akun Azure Data Lake Storage Gen2 Anda berada.
  3. Buka Kontrol Akses (IAM), klik + Tambahkan, dan pilih Tambahkan penetapan peran.
  4. Pilih peran EventGrid EventSubscription Contributor dan klik Berikutnya.
  5. Di bawah Tetapkan akses ke, pilih Identitas terkelola.
  6. Klik +Pilih Anggota, dan pilih Konektor akses untuk Azure Databricks atau Identitas terkelola yang ditetapkan pengguna.
  7. Cari nama konektor atau identitas yang ditetapkan pengguna, pilih, dan klik Tinjau dan Tetapkan.

Menggunakan identitas terkelola untuk mengakses akun penyimpanan akar Katalog Unity

Bagian ini menjelaskan cara memberikan akses identitas terkelola ke akun penyimpanan akar saat Anda membuat metastore Katalog Unity.

Untuk mempelajari cara meningkatkan metastore Katalog Unity yang ada untuk menggunakan identitas terkelola, lihat Meningkatkan metastore Katalog Unity yang ada untuk menggunakan identitas terkelola untuk mengakses penyimpanan akarnya.

  1. Sebagai admin akun Azure Databricks, masuk ke konsol akun Azure Databricks.
  2. Klik Ikon katalogKatalog.
  3. Klik Buat Metastore.
  4. Masukkan nilai untuk bidang berikut:
    • Nama untuk metastore.

    • Wilayah tempat metastore akan disebarkan.

      Untuk performa terbaik, temukan lokasi konektor akses, ruang kerja, metastore, dan penyimpanan cloud di wilayah cloud yang sama.

    • Jalur ADLS Gen 2: masukkan jalur ke kontainer penyimpanan yang akan Anda gunakan sebagai penyimpanan akar untuk metastore.

      Prefiks abfss:// ditambahkan secara otomatis.

    • ID access Koneksi or: masukkan ID sumber daya konektor akses Azure Databricks dalam format:

      /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
      
    • (Opsional) ID Identitas Terkelola: Jika Anda membuat konektor akses menggunakan identitas terkelola yang ditetapkan pengguna, masukkan ID sumber daya identitas terkelola.

  5. Klik Buat.
  6. Ketika diminta, pilih ruang kerja untuk ditautkan ke metastore.

Menggunakan identitas terkelola untuk mengakses penyimpanan eksternal yang dikelola di Katalog Unity

Katalog Unity memberi Anda kemampuan untuk mengakses data yang ada di akun penyimpanan menggunakan kredensial penyimpanan dan lokasi eksternal. Kredensial penyimpanan menyimpan identitas terkelola, dan lokasi eksternal menentukan jalur ke penyimpanan bersama dengan referensi ke kredensial penyimpanan. Anda dapat menggunakan pendekatan ini untuk memberikan dan mengontrol akses ke data yang ada di penyimpanan cloud dan untuk mendaftarkan tabel eksternal di Unity Catalog.

Kredensial penyimpanan dapat menyimpan identitas terkelola atau perwakilan layanan. Menggunakan identitas terkelola memiliki manfaat memungkinkan Katalog Unity untuk mengakses akun penyimpanan yang dilindungi oleh aturan jaringan, yang tidak dimungkinkan menggunakan perwakilan layanan, dan menghapus kebutuhan untuk mengelola dan memutar rahasia.

Untuk membuat kredensial penyimpanan menggunakan identitas terkelola dan menetapkan kredensial penyimpanan tersebut ke lokasi eksternal, ikuti instruksi di Koneksi penyimpanan objek cloud menggunakan Katalog Unity.

Jika ruang kerja Azure Databricks Anda disebarkan di jaringan virtual Azure Anda sendiri, juga dikenal sebagai "injeksi VNet", dan Anda menggunakan firewall penyimpanan untuk melindungi akun Azure Data Lake Storage Gen2, Anda harus:

  1. Aktifkan ruang kerja Azure Databricks Anda untuk mengakses Azure Storage.
  2. Aktifkan identitas terkelola Anda untuk mengakses Azure Storage.

Langkah 1. Mengaktifkan ruang kerja Azure Databricks Anda untuk mengakses Azure Storage

Anda harus mengonfigurasi pengaturan jaringan untuk mengizinkan ruang kerja Azure Databricks Anda mengakses Azure Data Lake Storage Gen2. Anda dapat mengonfigurasi titik akhir privat atau akses dari jaringan virtual Anda di Azure Data Lake Storage Gen2 untuk mengizinkan koneksi dari subnet Anda ke akun Azure Data Lake Storage Gen2 Anda.

Untuk petunjuknya, lihat Memberikan akses ruang kerja Azure Databricks Anda ke Azure Data Lake Storage Gen2.

Langkah 2: Aktifkan identitas terkelola Anda untuk mengakses Azure Storage

Langkah ini hanya diperlukan jika "Izinkan layanan Azure pada daftar layanan tepercaya untuk mengakses akun penyimpanan ini" dinonaktifkan untuk akun Azure Storage Anda. Jika konfigurasi tersebut diaktifkan:

  • Setiap konektor akses untuk Azure Databricks di penyewa yang sama dengan akun penyimpanan dapat mengakses akun penyimpanan.
  • Layanan tepercaya Azure apa pun dapat mengakses akun penyimpanan. Lihat Memberikan akses ke layanan Azure tepercaya.

Instruksi di bawah ini mencakup langkah di mana Anda menonaktifkan konfigurasi ini. Anda dapat menggunakan Portal Microsoft Azure atau Azure CLI.

Menggunakan Portal Microsoft Azure

  1. Masuk ke Portal Microsoft Azure, temukan dan pilih akun Azure Storage, dan buka tab Jaringan .

  2. Atur Akses Jaringan Publik ke Diaktifkan dari jaringan virtual dan alamat IP yang dipilih.

    Sebagai opsi, Anda dapat mengatur Akses Jaringan Publik ke Dinonaktifkan. Identitas terkelola dapat digunakan untuk melewati pemeriksaan akses jaringan publik.

  3. Di bawah Instans sumber daya, pilih Jenissumber daya Microsoft.Databricks/access Koneksi ors dan pilih konektor akses Azure Databricks Anda.

  4. Di bawah Pengecualian, kosongkan kotak centang Izinkan layanan Azure pada layanan tepercaya untuk mengakses akun penyimpanan ini.

Menggunakan Azure CLI

  1. Instal Azure CLI dan masuk.

    Untuk masuk dengan menggunakan perwakilan layanan ID Microsoft Entra, lihat Login Azure CLI dengan perwakilan layanan ID Microsoft Entra.

    Untuk masuk dengan menggunakan akun pengguna Azure Databricks, lihat Masuk Azure CLI dengan akun pengguna Azure Databricks.

  2. Tambahkan aturan jaringan ke akun penyimpanan:

    az storage account network-rule add \
    -–subscription <subscription id of the resource group> \
    -–resource-id <resource Id of the access connector for Azure Databricks> \
    -–tenant-id <tenant Id> \
    -g <name of the Azure Storage resource group> \
    -–account-name <name of the Azure Storage resource> \
    

    Tambahkan ID sumber daya dalam format:

    /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    
  3. Setelah Anda membuat aturan jaringan, buka akun Azure Storage Anda di Portal Microsoft Azure dan lihat identitas terkelola di tab Jaringan di bawah Instans sumber daya, jenis Microsoft.Databricks/accessConnectorssumber daya .

  4. Di bawah Pengecualian, kosongkan kotak centang Izinkan layanan Azure pada layanan tepercaya untuk mengakses akun penyimpanan ini.

  5. Secara opsional, atur Akses Jaringan Publik ke Dinonaktifkan. Identitas terkelola dapat digunakan untuk melewati pemeriksaan akses jaringan publik.

    Pendekatan standar adalah menjaga nilai ini diatur ke Diaktifkan dari jaringan virtual dan alamat IP yang dipilih.

Gudang SQL tanpa server adalah sumber daya komputasi yang berjalan di langganan Azure untuk Azure Databricks, bukan langganan Azure Anda. Jika Anda mengonfigurasi firewall di Azure Data Lake Storage Gen2 dan Anda berencana menggunakan gudang SQL tanpa server, Anda harus mengonfigurasi firewall untuk mengizinkan akses dari gudang SQL tanpa server.

Untuk petunjuknya, lihat Mengonfigurasi firewall untuk akses komputasi tanpa server.

Tingkatkan metastore Katalog Unity yang ada untuk menggunakan identitas terkelola untuk mengakses penyimpanan akarnya

Jika Anda memiliki metastore Unity Catalog yang dibuat menggunakan perwakilan layanan dan Anda ingin meningkatkannya untuk menggunakan identitas terkelola, Anda dapat memperbaruinya menggunakan panggilan API.

  1. Buat Koneksi or Akses untuk Azure Databricks dan tetapkan izin ke kontainer penyimpanan yang digunakan untuk penyimpanan akar metastore Unity Catalog Anda, menggunakan instruksi di Mengonfigurasi identitas terkelola untuk Katalog Unity.

    Anda dapat membuat konektor akses dengan identitas terkelola yang ditetapkan sistem atau identitas terkelola yang ditetapkan pengguna.

    Catat ID sumber daya konektor akses. Jika Anda menggunakan identitas terkelola yang ditetapkan pengguna, catat juga ID sumber dayanya.

  2. Sebagai admin akun, masuk ke ruang kerja Azure Databricks yang ditetapkan ke metastore.

    Anda tidak harus menjadi admin ruang kerja.

    Catat URL ruang kerja, yang merupakan bagian pertama dari URL, setelah https:// dan mencakup azuredatabricks.net.

  3. Buat token akses pribadi.

  4. Tambahkan token akses personal ke file di .netrc direktori beranda Anda. Ini meningkatkan keamanan dengan mencegah token akses personal muncul di riwayat perintah shell Anda. Lihat API manajemen Token.

  5. Jalankan perintah cURL berikut untuk membuat ulang kredensial penyimpanan.

    Ganti nilai tempat penampung:

    • <databricks-instance>: URL ruang kerja ruang kerja tempat token akses pribadi dibuat.
    • <credential-name>: Nama untuk kredensial penyimpanan.
    • <access-connector-id>: ID Sumber Daya untuk konektor akses Azure Databricks dalam format /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    • <managed-identity-id>: Jika Anda membuat konektor akses menggunakan identitas terkelola yang ditetapkan pengguna, tentukan ID sumber daya identitas terkelola.
    curl -n -X POST --header 'Content-Type: application/json' https://<databricks-instance>/api/2.0/unity-catalog/storage-credentials --data "{
      \"name\": \"<credential-name>\",
      \"azure_managed_identity\": {
        \"access_connector_id\": \"<access-connector-id>\",
        \"managed_identity_id\": \"<managed-identity-id>\"
      }
    }"
    
  6. Catat ID kredensial penyimpanan dalam respons.

  7. Jalankan perintah cURL berikut untuk mengambil metastore_id, di mana <databricks-instance> adalah URL ruang kerja ruang kerja tempat token akses pribadi dibuat.

    curl -n GET--header 'Content-Type: application/json' https://<databricks-instance>/api/2.0/unity-catalog/metastore_summary
    
  8. Jalankan perintah cURL berikut untuk memperbarui metastore dengan kredensial penyimpanan root baru.

    Ganti nilai tempat penampung:

    • <databricks-instance>: URL ruang kerja ruang kerja tempat token akses pribadi dibuat.
    • <metastore-id>: ID metastore yang Anda ambil di langkah sebelumnya.
    • <storage-credential-id>: ID kredensial penyimpanan.
    curl -n -X PATCH --header 'Content-Type: application/json' https://<databricks-instance>/api/2.0/unity-catalog/metastores/<metastore-id> --data
    "{\"storage_root_credential_id\": \"<storage-credential-id>\"}"