Hak istimewa metastore Apache Hive dan objek yang dapat diamankan (warisan)

Artikel ini menjelaskan model hak istimewa untuk metastore Azure Databricks Hive warisan, yang dibangun di setiap ruang kerja Azure Databricks. Ini juga menjelaskan cara memberikan, menolak, dan mencabut hak istimewa untuk objek dalam metastore Apache Hive bawaan. Unity Catalog menggunakan model yang berbeda untuk memberikan hak istimewa. Lihat Hak istimewa Unity Catalog dan objek yang dapat diamankan.

Catatan

Kontrol akses tabel untuk data yang dikelola oleh metastore Apache Hive adalah model tata kelola data warisan. Databricks merekomendasikan agar Anda meningkatkan tabel yang dikelola oleh metastore Apache Hive ke metastore Unity Catalog. Unity Catalog menyederhanakan keamanan dan tata kelola data Anda dengan menyediakan tempat terpusat untuk mengelola dan mengaudit akses data di beberapa ruang kerja di akun Anda. Untuk mempelajari selengkapnya tentang perbedaan model hak istimewa warisan dari model hak istimewa Unity Catalog, lihat Bekerja dengan Unity Catalog dan metastore Apache Hive warisan.

Persyaratan

Catatan

  • Kontrol akses data selalu diaktifkan di Databricks SQL meskipun kontrol akses tabel tidak diaktifkan untuk ruang kerja.
  • Jika kontrol akses tabel diaktifkan untuk ruang kerja dan Anda telah menentukan ACL (diberikan dan ditolak hak istimewa) di ruang kerja, ACL tersebut dihormati di Databricks SQL.

Mengelola hak istimewa pada objek di metastore Apache Hive

Hak istimewa pada objek data yang dikelola oleh metastore Apache Hive dapat diberikan oleh admin ruang kerja atau pemilik objek. Anda dapat mengelola hak istimewa untuk objek metastore Apache Hive dengan menggunakan perintah SQL.

Untuk mengelola hak istimewa di SQL, Anda menggunakan pernyataan GRANT, REVOKE, DENY, MSCK, dan SHOW GRANTS dalam notebook atau editor kueri Databricks SQL, menggunakan sintaks:

GRANT privilege_type ON securable_object TO principal

Mana:

Untuk memberikan hak istimewa kepada semua pengguna di ruang kerja Anda, berikan hak istimewa kepada users grup. Contohnya:

GRANT SELECT ON TABLE <schema-name>.<table-name> TO users

Untuk informasi selengkapnya tentang mengelola hak istimewa untuk objek di metastore Apache Hive menggunakan perintah SQL, lihat Hak istimewa dan objek yang dapat diamankan di metastore Apache Hive.

Anda juga dapat mengelola kontrol akses tabel dalam penyiapan yang sepenuhnya otomatis menggunakan penyedia Databricks Terraform dan databricks_sql_permissions.

Kepemilikan objek

Ketika kontrol akses tabel diaktifkan pada kluster atau gudang SQL, pengguna yang membuat skema, tabel, tampilan, atau fungsi akan menjadi pemiliknya. Pemilik akan diberikan semua hak istimewa dan dapat memberikan hak istimewa kepada pengguna lain.

Grup dapat memiliki objek. Dalam hal ini, semua anggota grup tersebut dianggap sebagai pemilik.

Pemilik objek atau admin ruang kerja dapat mentransfer kepemilikan objek menggunakan perintah berikut:

ALTER <object> OWNER TO `<user-name>@<user-domain>.com`

Catatan

Ketika kontrol akses tabel dinonaktifkan di kluster atau gudang SQL, pemilik tidak akan didaftarkan saat skema, tabel, atau tampilan dibuat. Admin ruang kerja harus menetapkan pemilik ke objek menggunakan ALTER <object> OWNER TO perintah .

Objek yang dapat diamankan di metastore Apache Hive

Objek yang dapat diamankan adalah:

  • CATALOG: mengontrol akses ke seluruh katalog data.

    • SCHEMA: mengontrol akses ke skema.
      • TABLE: mengontrol akses ke tabel terkelola atau eksternal.
      • VIEW: mengontrol akses ke tampilan SQL.
      • FUNCTION: mengontrol akses ke fungsi bernama.
  • ANONYMOUS FUNCTION: mengontrol akses ke anonim atau fungsi sementara.

    Catatan

    Objek ANONYMOUS FUNCTION tidak didukung di Databricks SQL.

  • ANY FILE: mengontrol akses ke sistem file yang mendasarinya.

    Peringatan

    Pengguna yang diberikan akses ke ANY FILE dapat mengabaikan batasan yang terdapat di katalog, skema, tabel, dan tampilan dengan membaca dari sistem file secara langsung.

Catatan

Hak istimewa tentang tampilan sementara global dan lokal tidak didukung. Tampilan lokal sementara hanya terlihat dalam sesi yang sama serta tampilan yang dibuat dalam skema global_temp, yang dapat dilihat oleh semua pengguna yang memiliki kluster atau gudang SQL yang sama. Namun, hak istimewa di tabel dan tampilan yang mendasarinya yang dirujuk oleh tampilan sementara akan diberlakukan.

Hak istimewa yang dapat Anda berikan pada objek metastore Apache Hive

  • SELECT: memberikan akses baca ke objek.
  • CREATE: memberikan kemampuan untuk membuat objek (misalnya, tabel dalam skema).
  • MODIFY: memberikan kemampuan untuk menambahkan, menghapus, dan memodifikasi data ke atau dari suatu objek.
  • USAGE: tidak memberikan kemampuan apa pun, tetapi merupakan persyaratan tambahan untuk melakukan tindakan apa pun pada objek skema.
  • READ_METADATA: memberikan kemampuan untuk melihat objek dan metadatanya.
  • CREATE_NAMED_FUNCTION: memberikan kemampuan untuk membuat UDF bernama dalam katalog atau skema yang ada.
  • MODIFY_CLASSPATH: memberikan kemampuan untuk menambahkan file ke jalur kelas Spark.
  • ALL PRIVILEGES: memberikan semua hak istimewa (diterjemahkan ke dalam semua hak istimewa di atas).

Catatan

Hak istimewa MODIFY_CLASSPATH tidak didukung di Databricks SQL.

Hak istimewa USAGE

Untuk melakukan tindakan pada objek skema di metastore Apache Hive, pengguna harus memiliki USAGE hak istimewa pada skema tersebut selain hak istimewa untuk melakukan tindakan tersebut. Salah satu hal berikut memenuhi USAGE persyaratan:

  • Menjadi admin ruang kerja
  • Memiliki hak istimewa USAGE pada skema atau berada dalam grup yang memiliki hak istimewa USAGE pada skema
  • Memiliki hak istimewa USAGE pada CATALOG atau berada dalam grup yang memiliki hak istimewa USAGE
  • Jadilah pemilik skema atau berada dalam grup yang memiliki skema

Bahkan pemilik objek di dalam skema harus memiliki hak istimewa USAGE agar dapat menggunakannya.

Hierarki hak istimewa

Ketika kontrol akses tabel diaktifkan di ruang kerja dan di semua kluster, objek SQL di Azure Databricks bersifat hierarkis dan hak istimewa diwariskan ke bawah. Artinya, pemberian atau penolakan hak istimewa pada CATALOG akan otomatis memberikan atau menolak hak istimewa untuk semua skema dalam katalog. Demikian pula, hak istimewa yang diberikan pada objek skema akan diwarisi oleh semua objek dalam skema itu. Pola ini berlaku untuk semua objek yang dapat diamankan.

Jika Anda menolak hak istimewa pengguna di tabel, pengguna yang mencoba mencantumkan semua tabel dalam skema tidak dapat melihat tabel. Jika Anda menolak hak istimewa pengguna di skema, pengguna tidak dapat melihat bahwa skema tersebut ada dengan mencoba mencantumkan semua skema dalam katalog.

Fungsi tampilan dinamis

Azure Databricks menyertakan dua fungsi pengguna yang memungkinkan Anda mengekspresikan izin tingkat kolom dan baris secara dinamis dalam isi definisi tampilan yang dikelola oleh metastore Apache Hive.

  • current_user(): menampilkan nama pengguna saat ini.
  • is_member(): tentukan apakah pengguna saat ini adalah anggota grup Azure Databricks tertentu di tingkat ruang kerja.

Contoh berikut menggabungkan kedua fungsi untuk menentukan apakah pengguna memiliki keanggotaan grup yang sesuai:

-- Return: true if the user is a member and false if they are not
SELECT
  current_user as user,
-- Check to see if the current user is a member of the "Managers" group.
  is_member("Managers") as admin

Izin tingkat-kolom

Anda dapat menggunakan tampilan dinamis untuk membatasi kolom yang dapat dilihat oleh grup atau pengguna tertentu. Pertimbangkan contoh berikut yang menunjukkan hanya pengguna yang termasuk dalam grup auditors yang dapat melihat alamat email dari tabel sales_raw. Saat waktu analisis, Spark menggantikan pernyataan CASE dengan literal 'REDACTED' atau kolom email. Perilaku ini memungkinkan semua pengoptimalan performa biasa yang disediakan oleh Spark.

-- Alias the field 'email' to itself (as 'email') to prevent the
-- permission logic from showing up directly in the column name results.
CREATE VIEW sales_redacted AS
SELECT
  user_id,
  CASE WHEN
    is_group_member('auditors') THEN email
    ELSE 'REDACTED'
  END AS email,
  country,
  product,
  total
FROM sales_raw

Izin tingkat-baris

Dengan menggunakan tampilan dinamis, Anda dapat menentukan izin hingga ke tingkat baris atau bidang. Pertimbangkan contoh berikut, yang menunjukkan hanya pengguna yang termasuk dalam grup managers yang dapat melihat jumlah transaksi (kolom total) yang lebih besar dari $1.000.000,00:

CREATE VIEW sales_redacted AS
SELECT
  user_id,
  country,
  product,
  total
FROM sales_raw
WHERE
  CASE
    WHEN is_group_member('managers') THEN TRUE
    ELSE total <= 1000000
  END;

Masking data

Seperti yang ditunjukkan pada contoh sebelumnya, Anda dapat menerapkan masking tingkat kolom untuk mencegah agar pengguna tidak dapat melihat data kolom tertentu kecuali mereka berada dalam grup yang benar. Karena tampilan ini menggunakan SQL Spark standar, Anda dapat melakukan jenis masking yang lebih canggih dengan ekspresi SQL yang lebih kompleks. Contoh berikut memungkinkan semua pengguna melakukan analisis pada domain email, tetapi memungkinkan anggota grup auditors melihat alamat email lengkap pengguna.

-- The regexp_extract function takes an email address such as
-- user.x.lastname@example.com and extracts 'example', allowing
-- analysts to query the domain name

CREATE VIEW sales_redacted AS
SELECT
  user_id,
  region,
  CASE
    WHEN is_group_member('auditors') THEN email
    ELSE regexp_extract(email, '^.*@(.*)$', 1)
  END
  FROM sales_raw