Untuk mengontrol akses database dengan kredensial berbasis sandi, Anda dapat membuat, mengelola, dan menghapus peran, pengguna, dan grup PostgreSQL dan AlloyDB untuk PostgreSQL menggunakan autentikasi bawaan.
Membuat pengguna PostgreSQL di AlloyDB
Saat Anda membuat pengguna PostgreSQL, mereka hanya akan memulai dengan hak istimewa LOGIN.
Untuk mengetahui informasi selengkapnya tentang hak istimewa ini, lihat
CREATE USER.
Anda dapat mengubah hak istimewa pengguna mana pun menggunakan perintah
ALTER ROLE. Jika Anda membuat pengguna baru dengan klien psql, Anda dapat memilih untuk
mengaitkannya dengan peran lain, atau menetapkan hak istimewa yang berbeda.
Kelola pengguna
Anda dapat membuat dan mengelola pengguna AlloyDB dengan Google Cloud CLI, atau menggunakan perintah PostgreSQL. Bagian berikut menunjukkan tugas pengelolaan pengguna umum menggunakan salah satu metode.
Sebelum memulai
Untuk menggunakan perintah PostgreSQL guna mengelola pengguna di cluster, Anda memerlukan hal berikut:
- Akses ke klien
psql - Akses ke pengguna database
postgres, atau peran pengguna lain dengan hak istimewa administratif yang sesuai
Untuk menggunakan konsol Google Cloud atau Google Cloud CLI guna mengelola pengguna di cluster, cluster tersebut harus memiliki instance utama. Jika cluster Anda tidak memiliki instance utama, Anda harus membuatnya sebelum dapat mengelola pengguna.
Membuat pengguna database
Untuk membuat pengguna database yang melakukan autentikasi dengan database secara langsung menggunakan nama pengguna dan sandi, yang juga dikenal sebagai autentikasi bawaan, ikuti langkah-langkah di bagian ini.
Untuk membuat pengguna database yang menggunakan Identity and Access Management (IAM) untuk melakukan autentikasi, lihat Mengelola autentikasi IAM.
Konsol
Buka halaman Clusters.
Klik nama cluster tempat Anda ingin menambahkan pengguna.
Klik Pengguna.
Klik Add user account.
Biarkan Built-in authentication dipilih.
Jika ingin menggunakan IAM untuk mengautentikasi dan login ke cluster database, Anda harus menyelesaikan langkah-langkah tambahan untuk menyiapkan project dan memberikan izin yang sesuai kepada pengguna baru. Untuk mengetahui informasi selengkapnya, lihat Mengelola autentikasi IAM.
Masukkan nama pengguna dan sandi untuk pengguna baru.
Untuk menetapkan peran selain
alloydbsuperuserdefault kepada pengguna, ikuti langkah-langkah berikut:- Masukkan nama peran di Roles.
- Untuk menambahkan peran, tekan Enter atau Tab.
Pilih x untuk peran yang ingin Anda hapus bagi pengguna tersebut.
Untuk mengetahui informasi selengkapnya, lihat Peran bawaan.
Klik Tambahkan.
psql
Jalankan pernyataan CREATE USER berikut:
CREATE USER USERNAME WITH PASSWORD 'PASSWORD';
Ganti kode berikut:
USERNAME: nama pengguna dari pengguna database.PASSWORD: sandi yang akan ditetapkan ke pengguna.
Untuk mengetahui informasi selengkapnya tentang cara membuat dan menentukan pengguna database, lihat
CREATE USER.
Setelah membuat pengguna, Anda dapat mengubah hak istimewanya menggunakan perintah ALTER ROLE di klien psql.
gcloud
Gunakan perintah
gcloud alloydb users create berikut:
gcloud alloydb users create USERNAME \
--password=PASSWORD \
--cluster=CLUSTER_ID \
--region=REGION_IDGanti kode berikut:
USERNAME: nama pengguna dari pengguna database.USERNAMEharus mengikuti aturan untuk ID SQL: tanpa karakter khusus, atau diapit tanda petik ganda. Misalnya,db_user_1.PASSWORD: sandi pengguna database. Untuk membuat pengguna tanpa sandi, hapus argumen ini.CLUSTER_ID: ID cluster tempat pengguna akan ditambahkan.REGION_ID: ID region tempat cluster berada. Contoh,us-central1.
Setelah membuat pengguna, Anda dapat mengubah hak istimewanya menggunakan perintah gcloud alloydb users set-roles.
Selain itu, Anda dapat memberikan peran atau hak istimewa superuser kepada pengguna saat
membuatnya. Untuk melakukannya, sertakan argumen --db-roles atau --superuser, seperti yang dijelaskan di bagian berikut.
Memberikan peran kepada pengguna database
Konsol
Untuk memberikan peran kepada pengguna database yang ada di konsol Google Cloud ,
hubungkan ke database Anda menggunakan
AlloyDB Studio
dan jalankan pernyataan GRANT berikut:
GRANT ROLE TO USERNAME;
Ganti kode berikut:
USERNAME: nama pengguna dari pengguna database.ROLE: peran yang akan diberikan kepada pengguna. Misalnya, untuk memberi pengguna hak istimewa superuser, berikan peranalloydbsuperuserkepada mereka.
psql
GRANT ROLE TO USERNAME;
Ganti kode berikut:
USERNAME: nama pengguna dari pengguna database.ROLE: peran yang akan diberikan kepada pengguna. Misalnya, untuk memberi pengguna hak istimewa superuser, berikan peranalloydbsuperuserkepada mereka.
gcloud
Gunakan perintah gcloud alloydb users set-roles
berikut untuk menentukan semua peran yang Anda inginkan untuk dimiliki pengguna:
gcloud alloydb users set-roles USERNAME \
--db-roles=ROLES \
--cluster=CLUSTER_ID \
--region=REGION_IDGanti kode berikut:
USERNAME: nama pengguna dari pengguna database.ROLES: daftar yang dipisahkan koma dari semua peran yang Anda inginkan untuk dimiliki pengguna. Mencantumkan semua peran, yang mencakup peran yang ada dan peran baru.Untuk menemukan daftar peran yang ada yang ditetapkan kepada pengguna, jalankan perintah berikut:
gcloud alloydb users list --cluster=CLUSTER_ID --region=REGION_IDGanti kode berikut:
CLUSTER_ID: ID cluster yang berisi pengguna.REGION_ID: ID region tempat cluster berada. Contoh,us-central1.
Untuk memberi pengguna hak istimewa superuser, Anda dapat memberikan peran
alloydbsuperuserkepada pengguna tersebut secara manual menggunakanpsql, atau Anda dapat menjalankan perintahgcloud alloydb users set-superuserdengan argumen--superuser=true:gcloud alloydb users set-superuser USERNAME \ --superuser=true \ --cluster=CLUSTER_ID \ --region=REGION_IDGanti kode berikut:
USERNAME: nama pengguna dari pengguna database.CLUSTER_ID: ID cluster yang berisi pengguna.REGION_ID: ID region tempat cluster berada. Contoh,us-central1.
Mengubah sandi pengguna database
Untuk menetapkan sandi baru bagi pengguna database PostgreSQL standar, ikuti langkah-langkah di bagian ini.
Anda tidak dapat mengubah atau menetapkan sandi pengguna berbasis IAM karena pengguna IAM tidak menggunakan sandi untuk melakukan autentikasi. Untuk mengetahui informasi selengkapnya, lihat Terhubung menggunakan akun IAM.
Konsol
Buka halaman Clusters.
Klik nama cluster yang berisi pengguna database.
Klik Pengguna.
Di baris yang mewakili pengguna, klik Open actions for this user.
Pilih Change Password.
Tentukan sandi:
Untuk menetapkan sandi baru bagi pengguna ini, masukkan sandi di kolom Sandi.
Untuk tidak menyetel sandi bagi pengguna ini, centang kotak No password.
Klik Oke.
psql
ALTER USER USERNAME WITH PASSWORD 'PASSWORD';
Untuk mengetahui informasi selengkapnya tentang cara mengubah sandi pengguna, lihat
ALTER ROLE.
gcloud
Gunakan perintah gcloud alloydb users set-password berikut:
gcloud alloydb users set-password USERNAME \
--password=PASSWORD \
--cluster=CLUSTER_ID \
--region=REGION_IDGanti kode berikut:
USERNAME: nama pengguna dari pengguna database.PASSWORD: sandi baru yang akan ditetapkan ke pengguna.CLUSTER_ID: ID cluster tempat pengguna berada.REGION_ID: ID region tempat cluster berada. Contoh,us-central1.
Mencabut peran dari pengguna database
Konsol
Untuk mencabut peran dari pengguna di konsol Google Cloud , hubungkan ke database Anda menggunakan AlloyDB Studio dan jalankan pernyataan REVOKE berikut:
REVOKE ROLE FROM USERNAME;
Ganti kode berikut:
ROLE: peran yang akan dicabut dari pengguna. Untuk menghapus hak istimewa superuser pengguna, cabut peranalloydbsuperuserdari pengguna tersebut.USERNAME: nama pengguna dari pengguna database.
psql
Anda dapat mencabut hak istimewa yang diberikan sebelumnya dari satu atau beberapa peran atau mencabut keanggotaan pengguna dalam peran, seperti yang ditunjukkan:
REVOKE ROLE FROM USERNAME;
Untuk menghapus hak istimewa superuser pengguna, cabut peran alloydbsuperuser dari pengguna tersebut.
gcloud
Untuk mencabut peran dengan Google Cloud CLI, gunakan perintah
gcloud alloydb users set-roles berikut
untuk menentukan semua peran yang Anda inginkan untuk dimiliki pengguna, dan untuk menghilangkan
peran yang akan dicabut dari pengguna:
gcloud alloydb users set-roles USERNAME \
--db-roles=ROLES \
--cluster=CLUSTER_ID \
--region=REGION_IDGanti kode berikut:
USERNAME: nama pengguna dari pengguna database.ROLES: daftar yang dipisahkan koma dari semua peran yang Anda inginkan untuk dimiliki pengguna. Cantumkan semua peran, termasuk peran yang ada dan yang baru.Untuk menemukan daftar peran yang ada yang ditetapkan kepada pengguna, jalankan perintah berikut:
gcloud alloydb users list --cluster=CLUSTER_ID --region=REGION_IDCLUSTER_ID: ID cluster yang berisi pengguna.REGION_ID: ID region tempat cluster berada. Contoh,us-central1.
Untuk mencabut hak istimewa superuser, Anda dapat menghapus peran alloydbsuperuser pengguna secara manual menggunakan psql, atau Anda dapat menjalankan perintah gcloud alloydb users set-superuser dengan argumen --superuser=false.
Melihat daftar pengguna database
Konsol
Buka halaman Clusters.
Klik nama cluster yang penggunanya ingin Anda lihat.
Klik Pengguna.
psql
Gunakan perintah \du berikut untuk mencetak tabel semua pengguna database,
yang mencakup keanggotaan grup mereka:
\du
gcloud
Gunakan perintah gcloud alloydb users list berikut:
gcloud alloydb users list \
--cluster=CLUSTER_ID \
--region=REGION_IDGanti kode berikut:
CLUSTER_ID: ID cluster yang berisi pengguna.REGION_ID: ID region tempat cluster berada. Contoh,us-central1.
Menghapus dependensi pengguna
Sebelum dapat menghapus pengguna database, Anda harus menghapus semua objek database yang dimiliki oleh pengguna tersebut dan mencabut hak istimewa apa pun yang diberikan kepadanya. Jika tidak, upaya penghapusan akan gagal dengan menampilkan error (misalnya, ERROR: role "username" cannot
be dropped because some objects depend on it).
Untuk mengidentifikasi dan menghapus dependensi ini, hubungkan ke database Anda menggunakan klien psql sebagai pengguna postgres atau akun apa pun dengan peran alloydbsuperuser, dan lakukan langkah-langkah berikut untuk setiap database di cluster Anda:
Jalankan kueri berikut untuk mencantumkan objek, seperti tabel, tampilan, skema, dan database yang dimiliki oleh pengguna yang ingin Anda hapus:
SELECT n.nspname AS schema_name, c.relname AS object_name, CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 't' THEN 'TOAST table' WHEN 'f' THEN 'foreign table' WHEN 'p' THEN 'partitioned table' WHEN 'I' THEN 'partitioned index' END as object_type FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE pg_catalog.pg_get_userbyid(c.relowner) = 'USERNAME' AND n.nspname NOT IN ('pg_catalog', 'information_schema') AND n.nspname !~ '^pg_toast';Ganti
USERNAMEdengan nama pengguna yang ingin Anda hapus.Untuk objek yang diidentifikasi, Anda harus mengubah kepemilikan untuk setiap objek.
Untuk mengubah pemilik tabel atau tampilan:
ALTER TABLE SCHEMA_NAME.OBJECT_NAME OWNER TO NEW_OWNER;Ganti kode berikut:
SCHEMA_NAME: nama skema yang berisi tabel atau tampilan.OBJECT_NAME: nama tabel atau tampilan.NEW_OWNER: nama pengguna yang ingin Anda beri kepemilikan.
Untuk mengubah pemilik database:
ALTER DATABASE DATABASE_NAME OWNER TO NEW_OWNER;Ganti kode berikut:
DATABASE_NAME: nama database.NEW_OWNER: nama pengguna yang ingin Anda beri kepemilikan.
Mengidentifikasi dan mencabut hak istimewa. Pengguna mungkin juga memiliki hak istimewa yang diberikan pada objek lain, atau keanggotaan peran yang mencegah penghapusan.
Untuk mencantumkan keanggotaan peran bagi pengguna:
WITH RECURSIVE cte AS ( SELECT oid ,oid as member_of,1 as d,''::name as path FROM pg_roles r where r.rolname !~ '^pg_' UNION SELECT m.roleid,m.member as member_of ,d+1,path||'->'||pg_get_userbyid(cte.oid) as path FROM cte JOIN pg_auth_members m ON m.member = cte.oid where d<15 ) SELECT DISTINCT pg_get_userbyid(member_of)::varchar AS username, pg_get_userbyid(oid)::varchar as parent_role, d::int as depth, substr(path::text||'->'||pg_get_userbyid(oid),3) as path FROM cte WHERE d > 1 ORDER BY depth;Untuk mencabut keanggotaan peran:
REVOKE ROLE_NAME FROM USERNAME;Ganti kode berikut:
ROLE_NAME: keanggotaan peran yang ingin Anda cabut.USERNAME: nama pengguna yang keanggotaan perannya ingin Anda cabut.
Untuk mencabut hak istimewa pada tabel:
Berikan peran pemilik tabel kepada pengguna yang mengeksekusi:
GRANT TABLE_OWNER TO EXECUTOR_USER;Ganti kode berikut:
TABLE_OWNER: nama pengguna atau peran yang memiliki tabel.EXECUTOR_USER: nama pengguna yang mengeksekusi—misalnya,postgres.
Cabut hak istimewa pada tabel:
REVOKE ALL PRIVILEGES ON TABLE SCHEMA_NAME.TABLE_NAME FROM USERNAME;Ganti kode berikut:
SCHEMA_NAME: nama skema yang berisi tabel.TABLE_NAME: nama tabel.USERNAME: nama pengguna yang hak istimewanya ingin Anda cabut.
Menghapus pengguna database
Sebelum menghapus pengguna, Anda harus menghapus atau menetapkan kembali semua objek yang dimilikinya, dan mencabut hak istimewa yang telah diberikan kepada pengguna pada objek lain. Untuk mengetahui detailnya, lihat Menghapus dependensi pengguna.
Konsol
Buka halaman Clusters.
Klik nama cluster yang berisi pengguna.
Klik Pengguna.
Di baris yang mewakili pengguna, klik Open actions for this user.
Pilih Hapus.
Dalam dialog Hapus akun pengguna?, klik Hapus.
psql
Gunakan resource berikut:
DROP ROLE USERNAME;
gcloud
Gunakan perintah
gcloud alloydb users delete berikut:
gcloud alloydb users delete USERNAME \
--cluster=CLUSTER_ID \
--region=REGION_IDGanti kode berikut:
USERNAME: nama pengguna dari pengguna database.CLUSTER_ID: ID cluster tempat pengguna berada.REGION_ID: ID region tempat cluster berada. Contoh,us-central1.