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
danDROP CAST
sebagai pengguna database dengan perancloudsqlsuperuser
. Namun, pengguna ini harus memiliki hak istimewaUSAGE
pada jenis data sumber dan target. Misalnya, pengguna dapat membuat transmisi yang mengonversi jenis dataint
sumber ke jenis databoolean
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
- Membuat dan mengelola pengguna..
- Membuat dan mengelola database.
- Lihat Dokumentasi PostgreSQL tentang peran.
- Pelajari tentang opsi untuk terhubung ke instance Anda.