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.
Batasan 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.
Menjalankan pernyataan
CREATE CASTdanDROP CASTsebagai pengguna database dengan perancloudsqlsuperuser. Namun, pengguna ini harus memiliki hak istimewaUSAGEpada jenis data sumber dan target. Misalnya, pengguna dapat membuat pemeran yang mengonversi jenis dataintsumber ke jenis databooleantarget.- 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:
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 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. Pengguna yang dibuat
menggunakan Cloud SQL yang
tidak dibuat menggunakan
IAM
dibuat sebagai bagian dari peran cloudsqlsuperuser, dan memiliki kumpulan
atribut yang sama dengan pengguna postgres: CREATEROLE, CREATEDB, dan LOGIN. Anda
dapat mengubah atribut pengguna mana pun 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.