Tentang pengguna dan peran PostgreSQL

Halaman ini menjelaskan tentang cara kerja Cloud SQL dengan pengguna dan peran PostgreSQL. Peran PostgreSQL memungkinkan Anda mengontrol akses dan kemampuan pengguna yang mengakses instance PostgreSQL.

Untuk dokumentasi lengkap tentang peran PostgreSQL, lihat Database Roles dalam dokumentasi PostgreSQL. Untuk mengetahui informasi tentang cara membuat dan mengelola pengguna Cloud SQL, lihat Membuat dan mengelola pengguna.

Perbedaan antara pengguna dan peran

Peran PostgreSQL dapat berupa peran tunggal atau dapat berfungsi sebagai sekelompok peran. Pengguna adalah peran dengan kemampuan untuk login (peran tersebut memiliki LOGIN atribut). Karena semua peran yang dibuat Cloud SQL memiliki LOGIN atribut, Cloud SQL menggunakan istilah peran dan pengguna secara bergantian. Namun, jika Anda membuat peran dengan psql klien, peran tersebut tidak harus memiliki LOGIN atribut.

Semua pengguna PostgreSQL harus memiliki sandi. Anda tidak dapat login menggunakan pengguna yang tidak memiliki sandi.

Pembatasan dan hak istimewa superuser

Cloud SQL untuk PostgreSQL adalah layanan terkelola, sehingga membatasi akses ke prosedur dan tabel sistem tertentu yang memerlukan hak istimewa lanjutan. Pada Cloud SQL, pelanggan tidak dapat membuat atau memiliki akses ke pengguna dengan atribut superuser.

Anda tidak dapat membuat pengguna database yang memiliki hak istimewa superuser. Namun, Anda dapat membuat pengguna database dengan cloudsqlsuperuser peran yang memiliki beberapa hak istimewa superuser, termasuk:

  • Membuat ekstensi yang memerlukan hak istimewa superuser.
  • Membuat pemicu peristiwa.
  • Membuat pengguna replikasi.
  • Membuat langganan dan publikasi replikasi.
  • Melakukan pernyataan CREATE CAST dan DROP CAST sebagai pengguna database dengan peran cloudsqlsuperuser. Namun, pengguna ini harus memiliki hak istimewa USAGE pada jenis data sumber dan target. Misalnya, pengguna dapat membuat transmisi yang mengonversi jenis data int sumber ke jenis data boolean target.

  • Memiliki akses penuh ke tabel katalog pg_largeobject.

Pengguna PostgreSQL default

Saat Anda membuat instance Cloud SQL untuk PostgreSQL baru, pengguna admin default postgres akan dibuat, tetapi tidak dengan sandinya. Anda harus mengatur kata sandi untuk pengguna ini sebelum login. Anda dapat melakukannya di konsol Google Cloud atau dengan menggunakan perintah gcloud berikut ini:

gcloud sql users set-password postgres \
--instance=INSTANCE_NAME \
--password=PASSWORD

Pengguna postgres adalah bagian dari cloudsqlsuperuser peran dan memiliki atribut (hak istimewa): sebagai berikut: CREATEROLE, CREATEDB, dan LOGIN. Pengguna ini tidak memiliki SUPERUSER atau REPLICATION atribut.

Pengguna cloudsqlimportexport default dibuat dengan serangkaian hak istimewa minimal yang diperlukan untuk operasi impor/ekspor CSV. Anda dapat membuat pengguna sendiri untuk melakukan operasi ini. Jika tidak, maka pengguna cloudsqlimportexport default akan digunakan. Penggunacloudsqlimportexport adalah pengguna sistem dan pelanggan yang tidak dapat menggunakannya secara langsung.

Pengguna IAM Cloud SQL untuk autentikasi IAM

Identity and Access Management (IAM) terintegrasi dengan Cloud SQL melalui fitur yang disebut autentikasi IAM. Saat Anda membuat instance menggunakan fitur ini, pengguna IAM dapat login ke instance menggunakan nama pengguna dan sandi IAM mereka. Keuntungan menggunakan autentikasi IAM adalah Anda dapat menggunakan kredensial IAM milik pengguna yang sudah ada saat memberi mereka akses ke database. Saat pengguna keluar dari organisasi, akun IAM-nya akan ditangguhkan, sehingga aksesnya otomatis terhapus.

Pengguna PostgreSQL lainnya

Anda dapat membuat pengguna atau peran PostgreSQL lainnya. Semua pengguna yang Anda buat menggunakan Cloud SQL dibuat sebagai bagian dari cloudsqlsuperuser peran, dan memiliki kumpulan atribut yang sama dengan postgres pengguna: CREATEROLE, CREATEDB, dan LOGIN. Anda dapat mengubah atribut pengguna mana pun dengan menggunakan perintah ALTER ROLE.

Jika Anda membuat pengguna baru dengan psql klien, Anda dapat memilih untuk mengaitkannya dengan peran lain atau memberinya atribut yang berbeda.

Akses ke pg_shadow tampilan dan pg_authid tabel

Anda dapat menggunakan pg_shadow tampilan untuk menggunakan properti peran yang ditandai sebagai rolcanlogin pada pg_authid tabel katalog.

Tampilan pg_shadow berisi sandi yang di-hash dan properti lainnya dari peran (pengguna) yang diizinkan untuk login ke cluster. Tabel pg_authid katalog berisi sandi yang di-hash dan properti lainnya untuk semua peran database.

Pada Cloud SQL, pelanggan tidak dapat mengakses pg_shadow tampilan atau pg_authid tabel menggunakan hak istimewa default. Namun, akses ke nama peran dan sandi yang di-hash berguna dalam situasi tertentu, termasuk:

  • Menyiapkan proxy atau load balancing dengan pengguna dan sandi yang sudah ada
  • Memigrasikan pengguna tanpa mengubah sandi
  • Menerapkan solusi khusus untuk pengelolaan kebijakan sandi

Menyetel flag untuk pg_shadow tampilan danpg_authid tabel

Untuk mengakses pg_shadow tampilan, setel cloudsql.pg_shadow_select_role flag ke nama peran PostgreSQL. Untuk mengakses pg_authid tabel, setel cloudsql.pg_authid_select_role flag ke nama peran PostgreSQL.

Jika cloudsql.pg_shadow_select_role sudah ada, maka akan memiliki akses (SELECT) baca saja ke pg_shadow tampilan. Jika cloudsql.pg_authid_select_role sudah ada, maka akan memiliki SELECT akses ke pg_authid tabel.

Jika salah satu peran tidak ada, setelan tidak akan berpengaruh, tetapi tidak akan terjadi error. Namun, error akan dicatat saat pengguna mencoba mengakses tampilan atau tabel. Error ini dicatat dalam log database PostgreSQL: cloudsql.googleapis.com/postgres.log. Untuk mengetahui informasi tentang cara melihat log ini, buka Melihat log instance.

Pastikan peran yang dikonfigurasi ada dan tidak memiliki kesalahan ketik pada nilai flag cloudsql.pg_shadow_select_role atau cloudsql.pg_authid_select_role flag. Anda juga dapat menggunakan pg_has_role untuk memverifikasi bahwa pengguna adalah anggota dari peran ini. Informasi tentang fungsi ini tersedia pada halaman System Information Functions and Operators .

Anda dapat menggunakan flag cloudsql.pg_shadow_select_role atau cloudsql.pg_authid_select_role flag dengan keanggotaan peran PostgreSQL untuk mengelola akses pg_shadow atau pg_authid untuk beberapa pengguna.

Tidak perlu memulai ulang database jika terjadi perubahan pada salah satu flag.

Untuk mengetahui informasi selengkapnya tentang flag yang didukung, lihat Mengonfigurasi flag database.

Pilih format penyimpanan sandi

Cloud SQL untuk PostgreSQL menyimpan sandi pengguna dalam format yang di-hash. Anda dapat menggunakan password_encryption flag untuk menyetel algoritma enkripsi ke md5 atau scram-sha-256. Algoritma md5 memberikan kompatibilitas paling luas, sedangkan scram-sha-256 lebih aman, tetapi mungkin tidak kompatibel dengan klien lama.

Saat mengaktifkan pg_shadow untuk mengekspor properti peran dari instance Cloud SQL, pertimbangkan untuk menggunakan algoritma paling aman yang didukung oleh klien Anda.

Pada dokumentasi PostgreSQL, lihat juga:

Langkah berikutnya