Bagikan melalui


Membuat peran Postgres

Penting

Lakebase Autoscaling berada di Beta di wilayah berikut: eastus2, , westeuropewestus.

Lakebase Autoscaling adalah versi terbaru Lakebase dengan komputasi penskalaan otomatis, skala-ke-nol, percabangan, dan pemulihan instan. Untuk perbandingan fitur dengan Lakebase Provisioned, lihat memilih antar versi.

Saat Anda membuat proyek, Lakebase membuat beberapa peran Postgres dalam proyek:

  • Peran Postgres untuk identitas pemilik proyek di Azure Databricks (misalnya, user@databricks.com), yang memiliki database default databricks_postgres.
  • Peran databricks_superuser administratif

Database databricks_postgres dibuat sehingga Anda dapat menyambungkan dan mencoba Lakebase segera setelah pembuatan proyek.

Beberapa peran yang dikelola oleh sistem juga telah dibuat. Ini adalah peran internal yang digunakan oleh layanan Azure Databricks untuk manajemen, pemantauan, dan operasi data.

Nota

Peran Postgres mengontrol akses database (siapa yang dapat mengkueri data). Untuk izin proyek (siapa yang dapat mengelola infrastruktur), lihat Izin proyek. Untuk tutorial tentang menyiapkan keduanya, lihat Tutorial: Memberikan proyek dan akses database ke pengguna baru.

Lihat Peran yang telah dibuat sebelumnya dan Peran sistem.

Membuat peran Postgres

Lakebase mendukung dua jenis peran Postgres untuk akses database:

  • Peran OAuth untuk identitas Azure Databricks: Buat ini menggunakan databricks_auth ekstensi dan SQL. Mengaktifkan identitas Azure Databricks (pengguna, perwakilan layanan, dan grup) untuk terhubung menggunakan token OAuth.
  • Peran kata sandi Postgres asli: Buat ini menggunakan UI Lakebase atau SQL. Gunakan nama peran yang valid dengan autentikasi kata sandi.

Untuk panduan tentang memilih jenis peran yang akan digunakan, lihat Gambaran umum autentikasi. Masing-masing dirancang untuk kasus penggunaan yang berbeda.

Membuat peran OAuth untuk identitas Azure Databricks menggunakan SQL

Untuk mengizinkan identitas Azure Databricks (pengguna, perwakilan layanan, atau grup) terhubung menggunakan token OAuth, Anda harus membuat peran Postgres mereka menggunakan databricks_auth ekstensi. Membuat peran untuk grup memungkinkan semua anggota grup untuk mengautentikasi menggunakan peran grup, menyederhanakan manajemen izin.

Untuk petunjuk terperinci tentang mendapatkan token OAuth dalam alur pengguna-ke-mesin dan mesin-ke-mesin, lihat Mendapatkan token OAuth dalam alur pengguna-ke-mesin dan Mendapatkan token OAuth dalam alur mesin-ke-mesin dalam dokumentasi autentikasi.

Prasyarat:

  • Anda harus memiliki CREATE dan CREATE ROLE izin pada database
  • Anda harus diautentikasi sebagai identitas Azure Databricks dengan token OAuth yang valid
  • Sesi terautentikasi Postgres asli tidak dapat membuat peran OAuth

Untuk membuat peran OAuth:

  1. databricks_auth Buat ekstensi. Setiap database Postgres harus memiliki ekstensinya sendiri.

    CREATE EXTENSION IF NOT EXISTS databricks_auth;
    
  2. databricks_create_role Gunakan fungsi untuk membuat peran Postgres untuk identitas Azure Databricks:

    SELECT databricks_create_role('identity_name', 'identity_type');
    

    Untuk pengguna Azure Databricks:

    SELECT databricks_create_role('myuser@databricks.com', 'USER');
    

    Untuk perwakilan layanan Azure Databricks:

    SELECT databricks_create_role('8c01cfb1-62c9-4a09-88a8-e195f4b01b08', 'SERVICE_PRINCIPAL');
    

    Untuk grup Azure Databricks:

    SELECT databricks_create_role('My Group Name', 'GROUP');
    

    Nama grup sensitif terhadap huruf besar/kecil dan harus persis sesuai dengan yang muncul di ruang kerja Azure Databricks Anda. Saat Anda membuat peran Postgres untuk grup, setiap anggota langsung atau tidak langsung (pengguna atau perwakilan layanan) dari grup Databricks tersebut dapat mengautentikasi ke Postgres sebagai peran grup menggunakan token OAuth individual mereka. Ini memungkinkan Anda mengelola izin di tingkat grup di Postgres alih-alih mempertahankan izin untuk pengguna individual.

  3. Berikan izin database ke peran baru.

Fungsi ini databricks_create_role() membuat peran Postgres dengan LOGIN izin saja. Setelah membuat peran, Anda harus memberikan hak istimewa dan izin database yang sesuai pada database, skema, atau tabel tertentu yang perlu diakses pengguna. Pelajari caranya: Mengelola izin

Autentikasi berbasis grup

Saat Anda membuat peran Postgres untuk grup Azure Databricks, Anda mengaktifkan autentikasi berbasis grup. Ini memungkinkan setiap anggota grup Azure Databricks untuk mengautentikasi ke Postgres menggunakan peran grup, menyederhanakan manajemen izin.

Cara kerjanya:

  1. Buat peran Postgres untuk grup Databricks menggunakan databricks_create_role('Group Name', 'GROUP').
  2. Berikan hak akses database ke role grup di Postgres. Lihat Mengelola izin.
  3. Setiap anggota langsung atau tidak langsung (pengguna atau perwakilan layanan) dari grup Databricks dapat terhubung ke Postgres menggunakan token OAuth individual mereka.
  4. Ketika terhubung, anggota mengautentikasi sebagai peran grup dan mewarisi semua izin yang diberikan ke peran tersebut.

Alur autentikasi:

Saat anggota grup terhubung, mereka menentukan nama peran Postgres grup sebagai nama pengguna dan token OAuth mereka sendiri sebagai kata sandi:

export PGPASSWORD='<OAuth token of a group member>'
export GROUP_ROLE_NAME='<pg-case-sensitive-group-role-name>'

psql -h $HOSTNAME -p 5432 -d databricks_postgres -U $GROUP_ROLE_NAME

pertimbangan Penting:

  • Validasi keanggotaan grup: Keanggotaan grup hanya divalidasi pada waktu autentikasi. Jika anggota dihapus dari grup Azure Databricks setelah membuat koneksi, koneksi tetap aktif. Upaya koneksi baru dari anggota yang dihapus ditolak.
  • Cakupan ruang kerja: Hanya grup yang ditetapkan ke ruang kerja Azure Databricks yang sama dengan proyek yang didukung untuk autentikasi berbasis grup. Untuk mempelajari cara menetapkan grup ke ruang kerja, lihat Mengelola grup.
  • Sensitivitas kasus: Nama grup yang digunakan databricks_create_role() harus cocok dengan nama grup persis seperti yang muncul di ruang kerja Azure Databricks Anda, termasuk kasus.
  • Manajemen izin: Mengelola izin di tingkat grup di Postgres lebih efisien daripada mengelola izin pengguna individual. Saat Anda memberikan izin ke peran grup, semua anggota grup saat ini dan yang akan datang mewarisi izin tersebut secara otomatis.

Nota

Nama peran tidak boleh melebihi 63 karakter, dan beberapa nama tidak diizinkan. Pelajari lebih lanjut: Mengelola peran

Membuat peran kata sandi Postgres asli

Anda dapat membuat peran kata sandi Postgres asli menggunakan UI Lakebase atau perintah SQL standar.

Menggunakan UI:

  1. Di Aplikasi Lakebase, navigasikan ke halaman gambaran umum cabang Anda lalu tab Peran &Database cabang.
  2. Klik Tambahkan peran dan tentukan nama peran (nama peran Postgres yang valid).

Menambahkan peran Postgres

  1. Klik Buat.
  2. Salin kata sandi yang dihasilkan dan berikan dengan aman kepada pengguna yang akan menggunakan peran ini.

UI Lakebase menghasilkan kata sandi aman secara otomatis dengan entropi 60-bit. Peran yang dibuat melalui UI secara otomatis diberikan keanggotaan dalam peran databricks_superuser, yang memberikan hak istimewa yang luas terhadap database.

Menggunakan SQL:

Anda juga dapat membuat peran kata sandi Postgres asli menggunakan perintah Postgres SQL standar:

CREATE ROLE role_name WITH LOGIN PASSWORD 'your_secure_password';

Saat membuat peran dengan SQL, kata sandi harus memiliki setidaknya 12 karakter dengan campuran karakter huruf kecil, huruf besar, angka, dan simbol. Kata sandi yang ditentukan pengguna divalidasi pada waktu pembuatan untuk memastikan entropi 60-bit.

Menampilkan peran Postgres

Antarmuka Pengguna

Untuk melihat semua peran Postgres dalam proyek Anda, navigasikan ke tab Peran & Database cabang Anda di Aplikasi Lakebase. Semua peran yang dibuat di cabang, dengan pengecualian peran Sistem, tercantum, termasuk peran Postgres asli dengan autentikasi kata sandi.

Menampilkan peran Postgres

PostgreSQL

Lihat semua peran dengan \du perintah:

Anda dapat melihat semua peran Postgres, termasuk peran sistem, menggunakan \du meta-command dari klien Postgres apa pun (seperti psql) atau editor Lakebase SQL:

\du
                                      List of roles
          Role name          |                         Attributes
-----------------------------+------------------------------------------------------------
 cloud_admin                 | Superuser, Create role, Create DB, Replication, Bypass RLS
 my.user@databricks.com      | Create role, Create DB, Bypass RLS
 databricks_control_plane    | Superuser
 databricks_gateway          |
 databricks_monitor          |
 databricks_reader_12345     | Create role, Create DB, Replication, Bypass RLS
 databricks_replicator       | Replication
 databricks_superuser        | Create role, Create DB, Cannot login, Bypass RLS
 databricks_writer_12345     | Create role, Create DB, Replication, Bypass RLS

Ini menampilkan semua peran dan atributnya (Superuser, Buat peran, Buat DB, dll.).

Menghilangkan peran Postgres

Anda dapat menghilangkan peran berbasis identitas Databricks dan peran kata sandi Postgres asli.

Antarmuka Pengguna

Menghapus peran adalah tindakan permanen yang tidak dapat dibatalkan. Anda tidak dapat menghapus peran yang memiliki database. Database harus dihapus sebelum menghapus peran yang memiliki database.

Untuk menghapus peran Postgres apa pun menggunakan UI:

  1. Navigasikan ke tab Peran & Database cabang Anda di Aplikasi Lakebase.
  2. Pilih Hapus peran dari menu peran dan konfirmasi penghapusan.

PostgreSQL

Anda dapat menghilangkan peran Postgres apa pun menggunakan perintah Postgres standar. Untuk detailnya, lihat dokumentasi PostgreSQL tentang menghilangkan peran.

Hilangkan peran:

DROP ROLE role_name;

Setelah peran berbasis identitas Azure Databricks dihilangkan, identitas tersebut tidak dapat lagi mengautentikasi ke Postgres menggunakan token OAuth hingga peran baru dibuat.

Peran yang telah dibuat sebelumnya

Setelah proyek dibuat, Azure Databricks secara otomatis membuat peran Postgres untuk administrasi proyek dan memulai.

Role Description Hak istimewa yang diwariskan
<project_owner_role> Identitas Azure Databricks dari pembuat proyek (misalnya, my.user@databricks.com). Peran ini memiliki database default databricks_postgres dan dapat masuk dan mengelola proyek. Anggota dari databricks_superuser
databricks_superuser Peran administratif internal. Digunakan untuk mengonfigurasi dan mengelola akses di seluruh proyek. Peran ini diberikan hak istimewa yang luas. Mewarisi dari pg_read_all_data, pg_write_all_data, dan pg_monitor.

Pelajari selengkapnya tentang kemampuan dan hak istimewa khusus peran ini: Kemampuan peran yang telah dibuat sebelumnya

Peran sistem yang dibuat oleh Azure Databricks

Azure Databricks membuat peran sistem berikut yang diperlukan untuk layanan internal. Anda dapat melihat peran ini dengan menjalankan perintah \du dari psql atau melalui Editor Lakebase SQL.

Role Tujuan
cloud_admin Peran superuser yang digunakan untuk manajemen infrastruktur cloud
databricks_control_plane Peran superuser yang digunakan oleh komponen Databricks internal untuk operasi manajemen
databricks_monitor Digunakan oleh layanan pengumpulan metrik internal
databricks_replicator Digunakan untuk operasi replikasi database
databricks_writer_<dbid> Peran per database yang digunakan untuk membuat dan mengelola tabel yang disinkronkan
databricks_reader_<dbid> Peran per database yang digunakan untuk membaca tabel yang terdaftar di Katalog Unity
databricks_gateway Digunakan untuk koneksi internal untuk layanan penyajian data terkelola

Untuk mempelajari cara kerja peran, hak istimewa, dan keanggotaan peran di Postgres, gunakan sumber daya berikut dalam dokumentasi Postgres:

Langkah selanjutnya