Halaman ini menjelaskan cara menyiapkan instance AlloyDB untuk PostgreSQL guna memfasilitasi autentikasi database menggunakan Identity and Access Management (IAM).
Autentikasi IAM melengkapi autentikasi database melalui pengguna PostgreSQL standar, yang didukung oleh setiap cluster AlloyDB.
Anda dapat melakukan autentikasi menggunakan akun atau grup individual:
- Akun perorangan: Anda menambahkan setiap akun pengguna atau layanan IAM ke cluster. Anda dapat menggunakan peran pengguna IAM atau PostgreSQL untuk melakukan autentikasi dengan cluster tersebut.
- Grup: Anda menambahkan grup IAM ke cluster. Semua anggota (pengguna dan akun layanan) grup tersebut mewarisi izin untuk mengautentikasi. Hal ini memungkinkan Anda mengelola akses dengan mengelola keanggotaan grup tanpa menambahkan setiap anggota ke cluster satu per satu.
Autentikasi IAM dinonaktifkan di instance AlloyDB secara default.
Untuk menggunakan autentikasi IAM, selesaikan langkah-langkah umum berikut:
- Aktifkan autentikasi perorangan atau grup IAM di instance Anda.
- Berikan peran yang diperlukan ke akun atau grup.
- Tambahkan akun atau grup ke cluster Anda.
- Memberikan hak istimewa database ke akun atau grup.
Mengaktifkan dan menonaktifkan autentikasi IAM
Untuk mengaktifkan autentikasi IAM pada instance, tetapkan flag database.
- Untuk autentikasi individual, tetapkan
alloydb.iam_authenticationkeon. - Untuk autentikasi grup, setel
alloydb.iam_authenticationdanalloydb.iam_group_authenticationkeon.
Untuk menonaktifkan autentikasi IAM, setel tanda ke off.
Untuk mengetahui informasi selengkapnya tentang menyetel flag, lihat Mengonfigurasi flag database instance.
Memberikan akses ke akun perorangan
Untuk mengaktifkan akses IAM bagi pengguna database baru, ikuti langkah-langkah berikut:
Perbarui setelan IAM project Anda untuk memberikan akses database AlloyDB kepada pengguna atau akun layanan IAM yang sesuai.
Buat pengguna database baru di cluster Anda, dengan menetapkan nama pengguna sebagai alamat email pengguna IAM atau akun layanan.
Untuk memberi akun IAM akses ke cluster lain di project Anda, ulangi langkah terakhir.
Memperbarui akun IAM dengan peran yang sesuai
Anda dapat memberikan kemampuan kepada pengguna IAM atau akun layanan untuk melakukan autentikasi dengan instance AlloyDB dengan memberikan peran IAM berikut kepada mereka:
alloydb.databaseUser: Mengizinkan pengguna terhubung ke instance AlloyDB Anda.serviceusage.serviceUsageConsumer: Memberikan akses pengguna ke API yang memeriksa izin.
Untuk melakukannya, ikuti petunjuk di bagian
Memberikan akses kepada pengguna lain. Pada
langkah saat Anda memilih peran untuk diberikan ke akun utama IAM,
pilih alloydb.databaseUser.
Menambahkan akun pengguna atau akun layanan IAM ke cluster
Konsol
Buka halaman Clusters.
Klik nama cluster tempat Anda ingin menambahkan pengguna.
Klik Pengguna.
Klik Add user account.
Pilih Cloud IAM.
Di kolom Principal, masukkan akun utama IAM.
Untuk akun pengguna IAM, berikan alamat email lengkap akun pengguna. Misalnya,
kai@altostrat.com.Untuk akun layanan IAM, berikan alamat akun layanan tanpa akhiran
.gserviceaccount.com. Misalnya, untuk menentukan akun layananmy-service@my-project.iam.gserviceaccount.com, Anda menggunakan nilaimy-service@my-project.iam.Untuk menetapkan peran selain
alloydbsuperuserdefault kepada pengguna, ikuti langkah-langkah berikut:- Masukkan nama peran di Peran.
- Untuk menambahkan peran, tekan Enter atau Tab.
Pilih x untuk peran yang ingin Anda hapus bagi pengguna tersebut.
Untuk mengetahui informasi selengkapnya, lihat Peran yang telah ditetapkan
Klik Tambahkan.
gcloud
Untuk membuat pengguna database PostgreSQL berdasarkan akun layanan atau
pengguna IAM, gunakan perintah
gcloud alloydb users create.
gcloud alloydb users create USERNAME \
--cluster=CLUSTER \
--region=REGION \
--type=IAM_BASEDGanti variabel berikut:
USERNAME: ID pengguna IAM yang ingin Anda tambahkan sebagai pengguna database baru.Untuk akun pengguna IAM, berikan alamat email lengkap akun pengguna. Misalnya,
kai@altostrat.com.Untuk akun layanan IAM, berikan alamat akun layanan tanpa akhiran
.gserviceaccount.com. Misalnya, untuk menentukan akun layananmy-service@my-project.iam.gserviceaccount.com, Anda menggunakan nilaimy-service@my-project.iam.CLUSTER: ID cluster untuk membuat akun pengguna database ini.REGION: ID region tempat cluster berada—misalnya,us-central1.
Memberikan izin database yang sesuai kepada pengguna IAM
Saat Anda menambahkan pengguna IAM ke cluster AlloyDB, pengguna tersebut tidak memiliki hak istimewa di database mana pun secara default, kecuali untuk objek database yang dapat diakses oleh PUBLIC.
Jika pengguna memerlukan akses tambahan, berikan lebih banyak hak istimewa menggunakan
pernyataan PostgreSQL GRANT:
GRANT SELECT ON TABLE_NAME TO "USERNAME";
Ganti variabel berikut:
USERNAME: alamat email untuk pengguna. Anda harus menyertakan tanda kutip ganda di sekitar alamat.TABLE_NAME: Nama tabel yang ingin Anda berikan akses kepada pengguna.
Menghapus akun pengguna atau akun layanan IAM dari cluster
Konsol
Buka halaman Clusters.
Klik nama cluster tempat Anda ingin menghapus pengguna.
Klik Pengguna.
Pada baris yang menampilkan pengguna yang ingin Anda hapus, klik Buka tindakan untuk pengguna ini.
Pilih Hapus.
Pada dialog Hapus akun pengguna?, klik Hapus.
gcloud
Gunakan
perintah gcloud alloydb users delete.
gcloud alloydb users delete USERNAME \
--cluster=CLUSTER \
--region=REGIONGanti kode berikut:
USERNAME: ID pengguna IAM yang ingin Anda hapus dari cluster.Untuk akun pengguna IAM, berikan alamat email lengkap akun pengguna. Misalnya,
kai@altostrat.com.Untuk akun layanan IAM, berikan alamat akun layanan tanpa akhiran
.gserviceaccount.com. Misalnya, untuk menentukan akun layananmy-service@my-project.iam.gserviceaccount.com, Anda menggunakan nilaimy-service@my-project.iam.CLUSTER: ID cluster tempat pengguna ini akan dihapus.REGION: ID region tempat cluster berada. Contoh,us-central1.
Memberikan akses ke grup IAM
Untuk menggunakan autentikasi grup (Pratinjau), Anda menambahkan grup IAM ke cluster AlloyDB.
Menambahkan grup IAM ke cluster
Tetapkan peran
alloydb.databaseUserdanserviceusage.serviceUsageConsumerke akun grup. Untuk mengetahui informasi selengkapnya, lihat Memperbarui akun IAM dengan peran yang sesuai.Maksimum 200 grup IAM dapat ada di cluster kapan saja. Grup yang tidak aktif dihitung dalam batas ini.
Nama grup IAM hanya boleh memiliki panjang 63 karakter.
Jika Anda memiliki grup IAM dengan nama yang melebihi batasan panjang, Anda dapat menyarangkannya di bawah grup induk dengan nama yang valid. Anda harus menambahkan grup induk ke cluster sebelum dapat menggunakan grup bertingkat.
Untuk membuat pengguna database untuk grup, gunakan perintah
gcloud alloydb users createdengan flag--type=IAM_GROUP.gcloud beta alloydb users create GROUP_EMAIL \ --cluster=CLUSTER \ --region=REGION \ --type=IAM_GROUP
Menambahkan anggota grup secara otomatis
Saat Anda menambahkan grup IAM ke cluster, semua anggota (pengguna dan akun layanan) grup tersebut akan mewarisi izin untuk mengautentikasi. Anda tidak perlu menambahkan anggota satu per satu. Setelah anggota login untuk pertama kalinya, AlloyDB akan membuat akun untuknya secara otomatis.
Memberikan hak istimewa database kepada grup IAM
Anda memberikan hak istimewa database kepada grup, bukan pengguna individu.
Jalankan pernyataan GRANT dari command line psql:
GRANT SELECT ON TABLE_NAME TO "GROUP_NAME";
GROUP_NAME: Alamat email grup. Anda harus menggunakan tanda kutip karena string berisi karakter khusus.TABLE_NAME: Nama tabel.
Menghapus grup IAM dari cluster
Untuk menghapus grup IAM dari cluster AlloyDB, batalkan izin grup di Google Cloud konsol dan hapus pengguna grup yang sesuai dari cluster AlloyDB.
Mencabut izin IAM:
Di konsol Google Cloud , buka halaman IAM.
Temukan grup IAM yang aksesnya ingin Anda hapus.
Hapus peran
roles/alloydb.databaseUserdan peran lain yang terkait dengan AlloyDB yang memberikan akses ke cluster. Tindakan ini mencegah anggota grup melakukan autentikasi.
Hapus pengguna grup dari cluster AlloyDB:
Gunakan Google Cloud CLI untuk menghapus pengguna yang mewakili grup IAM dari cluster AlloyDB. Nama pengguna biasanya berupa alamat email grup IAM.
gcloud alloydb users delete GROUP_EMAIL_ADDRESS \ --cluster=CLUSTER_ID \ --region=REGION_IDGanti kode berikut:
GROUP_EMAIL_ADDRESS: alamat email lengkap grup IAM—misalnya,my-group@example.com.CLUSTER_ID: ID cluster AlloyDB Anda.REGION_ID: region tempat cluster AlloyDB Anda berada—misalnya,us-central1.
Opsional: Hapus grup dari Cloud Identity:
Anda memerlukan hak istimewa administrator yang sesuai (seperti Admin Grup) di akun Cloud Identity untuk menghapus grup. Pemilik grup biasanya hanya dapat menghapus grup yang mereka miliki.
Perubahan pada izin IAM dan keanggotaan grup mungkin memerlukan waktu untuk diterapkan, mungkin 15 menit atau lebih.
Pastikan Anda memiliki hak istimewa administrator yang sesuai seperti Admin Grup di akun Cloud Identity Anda. Pemilik grup hanya dapat menghapus grup yang mereka miliki. Untuk mengetahui informasi selengkapnya, lihat Peran administrator standar.
Jalankan perintah gcloud CLI Cloud Identity berikut:
gcloud identity groups delete GROUP_EMAIL_ADDRESSSaat Anda mencabut izin login
alloydb.databaseUseruntuk grup IAM di Cloud Identity, Anda juga harus menghapus grup dari cluster AlloyDB untuk memastikan bahwa akses dihapus sepenuhnya.
Memigrasikan pengguna yang ada ke autentikasi grup IAM
Pengguna IAM perorangan yang sudah ada tidak menggunakan autentikasi grup. Anda dapat memigrasikannya dengan mengikuti langkah-langkah berikut:
- Tambahkan pengguna ke grup IAM.
- Tambahkan grup ke cluster Anda.
- Tetapkan peran yang diperlukan untuk grup.
- Tetapkan hak istimewa database ke grup.
- Hapus pengguna perorangan yang ada dari cluster Anda. Pastikan Anda mentransfer kepemilikan jika memang diinginkan.
Saat pengguna login lagi, AlloyDB akan membuat ulang akun sebagai pengguna grup.
Memecahkan masalah autentikasi grup
Gunakan informasi berikut untuk memecahkan masalah autentikasi grup.
Akun yang ada tidak mewarisi hak istimewa
Jika akun tidak mewarisi hak istimewa dari grup, ikuti langkah-langkah berikut:
Mencantumkan pengguna.
gcloud alpha alloydb users list --cluster=CLUSTER --region=REGIONJika jenisnya adalah
ALLOYDB_IAM_USERatauALLOYDB_IAM_SERVICE_ACCOUNT, hapus akun. Pengguna ini tidak mewarisi hak istimewa grup.Untuk membuat ulang akun dengan jenis grup yang benar, login lagi ke instance dengan akun pengguna atau layanan. Login kembali ke instance akan membuat ulang akun dengan jenis akun yang benar, yaitu
ALLOYDB_IAM_GROUP_USERatauALLOYDB_IAM_GROUP_SERVICE_ACCOUNT.