Mengelola autentikasi IAM

Untuk mengautentikasi pengguna dan grup database dengan kredensial Google Cloud , bukan sandi database, Anda dapat mengaktifkan dan mengonfigurasi autentikasi Identity and Access Management (IAM) di instance AlloyDB untuk PostgreSQL.

Autentikasi IAM melengkapi autentikasi database melalui pengguna PostgreSQL standar, yang didukung oleh setiap cluster AlloyDB.

Anda dapat melakukan autentikasi menggunakan akun atau grup perorangan:

  • Akun individu: Anda menambahkan setiap pengguna atau akun 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 melakukan autentikasi. 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:

  1. Aktifkan autentikasi individu atau grup IAM di instance Anda.
  2. Berikan peran yang diperlukan ke akun atau grup.
  3. Tambahkan akun atau grup ke cluster Anda.
  4. Berikan hak istimewa database ke akun atau grup.

Mengaktifkan dan menonaktifkan autentikasi IAM

Untuk mengaktifkan autentikasi IAM pada instance, tetapkan flag database.

Untuk menonaktifkan autentikasi IAM, tetapkan flag ke off.

Untuk mengetahui informasi selengkapnya tentang cara menetapkan flag, lihat Mengonfigurasi flag database instance.

Memberikan akses ke akun perorangan

Untuk mengaktifkan akses IAM ke pengguna database baru, ikuti langkah-langkah berikut:

  1. Perbarui setelan IAM project Anda untuk memberikan akses database AlloyDB ke pengguna atau akun layanan IAM yang sesuai.

  2. Buat pengguna database baru di cluster Anda, dengan menetapkan nama pengguna sebagai alamat email pengguna atau akun layanan IAM.

Untuk memberi akun IAM akses ke cluster lain di project Anda, ulangi langkah terakhir.

Memperbarui akun IAM dengan peran yang sesuai

Anda dapat memberi pengguna atau akun layanan IAM kemampuan untuk melakukan autentikasi dengan instance AlloyDB dengan memberi mereka peran IAM berikut:

  • Pengguna Database AlloyDB (roles/alloydb.databaseUser): memungkinkan pengguna terhubung ke instance AlloyDB Anda.

  • Service Usage Consumer (roles/serviceusage.serviceUsageConsumer): memberi pengguna akses ke API yang memeriksa izin.

Untuk melakukannya, ikuti petunjuk di Memberikan akses kepada pengguna lain. Pada langkah saat Anda memilih peran yang akan diberikan kepada akun utama IAM, pilih AlloyDB Database User (roles/alloydb.databaseUser).

Menambahkan akun pengguna atau layanan IAM ke cluster

Konsol

  1. Buka halaman Clusters.

    Buka Cluster

  2. Klik nama cluster tempat Anda ingin menambahkan pengguna.

  3. Klik Pengguna.

  4. Klik Add user account.

  5. Pilih Cloud IAM.

  6. Di kolom Principal, masukkan akun utama IAM.

    Untuk akun pengguna IAM, berikan alamat email lengkap akun pengguna. Misalnya, dana@example.com.

    Untuk akun layanan IAM, berikan alamat akun layanan tanpa akhiran .gserviceaccount.com. Misalnya, untuk menentukan akun layanan my-service@my-project.iam.gserviceaccount.com, Anda menggunakan nilai my-service@my-project.iam.

  7. Untuk menetapkan peran selain alloydbsuperuser default kepada pengguna, ikuti langkah-langkah berikut:

    1. Masukkan nama peran di Roles.
    2. Untuk menambahkan peran, tekan Enter atau Tab.
    3. Pilih x untuk peran yang ingin Anda hapus bagi pengguna tersebut.

      Untuk mengetahui informasi selengkapnya tentang peran PostgreSQL yang telah ditetapkan, lihat Peran yang telah ditetapkan.

  8. Klik Tambahkan.

gcloud

Untuk membuat pengguna database PostgreSQL berdasarkan pengguna IAM atau akun layanan, gunakan perintah gcloud alloydb users create.

gcloud alloydb users create USERNAME \
--cluster=CLUSTER \
--region=REGION \
--type=IAM_BASED \
--db-roles=alloydbiamuser

Ganti kode berikut:

  • USERNAME: ID untuk pengguna IAM yang ingin Anda tambahkan sebagai pengguna database baru.

    Untuk akun pengguna IAM, berikan alamat email lengkap akun pengguna. Misalnya, dana@example.com.

    Untuk akun layanan IAM, berikan alamat akun layanan tanpa akhiran .gserviceaccount.com. Misalnya, untuk menentukan akun layanan my-service@my-project.iam.gserviceaccount.com, Anda menggunakan nilai my-service@my-project.iam.

  • CLUSTER: ID cluster tempat akun pengguna database ini akan dibuat.

  • 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 kode 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

  1. Buka halaman Clusters.

    Buka Cluster

  2. Klik nama cluster tempat Anda ingin menghapus pengguna.

  3. Klik Pengguna.

  4. Di baris yang mewakili pengguna yang ingin Anda hapus, klik Open actions for this user.

  5. Pilih Hapus.

  6. Dalam dialog Hapus akun pengguna?, klik Hapus.

gcloud

Gunakan perintah gcloud alloydb users delete.

gcloud alloydb users delete USERNAME \
--cluster=CLUSTER \
--region=REGION

Ganti kode berikut:

  • USERNAME: ID pengguna IAM yang ingin Anda hapus dari cluster.

    Untuk akun pengguna IAM, berikan alamat email lengkap akun pengguna. Misalnya, dana@example.com.

    Untuk akun layanan IAM, berikan alamat akun layanan tanpa akhiran .gserviceaccount.com. Misalnya, untuk menentukan akun layanan my-service@my-project.iam.gserviceaccount.com, Anda menggunakan nilai my-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), tambahkan grup IAM ke cluster AlloyDB.

Menambahkan grup IAM ke cluster

  1. Tetapkan peran roles/alloydb.databaseUser dan roles/serviceusage.serviceUsageConsumer ke 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 mengurangi batas ini.

    Nama grup IAM hanya boleh berisi 63 karakter.

    Jika Anda memiliki grup IAM dengan nama yang melebihi batas panjang, Anda dapat menyarangkannya di bawah grup induk dengan nama yang valid. Anda harus menambahkan grup induk ke cluster sebelum dapat menggunakan grup bertingkat.

  2. Untuk membuat pengguna database untuk grup, gunakan perintah gcloud alloydb users create dengan flag --type=IAM_GROUP.

    gcloud alloydb users create GROUP_EMAIL \
    --cluster=CLUSTER \
    --region=REGION \
    --type=IAM_GROUP

    Ganti kode berikut:

    • GROUP_EMAIL: alamat email lengkap grup IAM—misalnya, my-group@example.com.

    • CLUSTER: ID cluster yang akan ditambahkan grup ini.

    • REGION: ID region tempat cluster berada—misalnya, us-central1.

Menambahkan anggota grup secara otomatis

Saat Anda menambahkan grup IAM ke cluster, semua anggota (pengguna dan akun layanan) grup tersebut akan mewarisi izin untuk melakukan autentikasi. Anda tidak perlu menambahkan anggota satu per satu. Setelah anggota login untuk pertama kalinya, AlloyDB akan otomatis membuat akun untuknya.

Memberikan hak istimewa database kepada grup IAM

Anda memberikan hak istimewa database ke grup, bukan ke pengguna individu.

Jalankan pernyataan GRANT dari command line psql:

GRANT SELECT ON TABLE_NAME TO "GROUP_NAME";

Ganti kode berikut:

  • 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, cabut izin grup di konsol Google Cloud dan hapus pengguna grup yang sesuai dari cluster AlloyDB.

  1. Mencabut izin IAM:

    1. Di konsol Google Cloud , buka halaman IAM.

      Buka IAM

    2. Temukan grup IAM yang ingin Anda hapus aksesnya.

    3. Hapus peran roles/alloydb.databaseUser dan peran terkait AlloyDB lainnya yang memberikan akses ke cluster. Tindakan ini mencegah anggota grup melakukan autentikasi.

  2. Hapus pengguna grup dari cluster AlloyDB:

    Gunakan Google Cloud CLI untuk menghapus pengguna yang mewakili grup IAM dari cluster AlloyDB. Nama pengguna biasanya adalah alamat email grup IAM.

    gcloud alloydb users delete GROUP_EMAIL_ADDRESS \
    --cluster=CLUSTER_ID \
    --region=REGION_ID

    Ganti 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.

  3. 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 dapat memerlukan waktu untuk diterapkan, mungkin 15 menit atau lebih.

    1. Dapatkan 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.

    2. Jalankan perintah gcloud CLI Cloud Identity berikut:

      gcloud identity groups delete GROUP_EMAIL_ADDRESS
    3. Saat mencabut peran AlloyDB Database User (roles/alloydb.databaseUser) untuk grup IAM di Cloud Identity, Anda juga harus menghapus grup dari cluster AlloyDB agar akses dihapus sepenuhnya.

Memigrasikan pengguna yang ada ke autentikasi grup IAM

Pengguna IAM individual yang ada tidak menggunakan autentikasi grup. Anda dapat memigrasikannya dengan mengikuti langkah-langkah berikut:

  1. Tambahkan pengguna ke grup IAM.

  2. Tetapkan peran IAM yang diperlukan (roles/alloydb.databaseUser dan roles/serviceusage.serviceUsageConsumer) ke grup.

  3. Tambahkan grup ke cluster Anda.

  4. Menetapkan hak istimewa database ke grup.

  5. Hapus pengguna individu yang ada dari cluster Anda. Transfer kepemilikan objek sebelum menghapus pengguna, jika diperlukan.

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:

  1. Mencantumkan pengguna:

    gcloud alloydb users list --cluster=CLUSTER --region=REGION

    Ganti kode berikut:

    • CLUSTER: ID cluster.

    • REGION: region tempat cluster berada—misalnya, us-central1.

  2. Jika jenisnya adalah ALLOYDB_IAM_USER atau ALLOYDB_IAM_SERVICE_ACCOUNT, hapus akun tersebut. Akun ini tidak mewarisi hak istimewa grup.

  3. 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_USER atau ALLOYDB_IAM_GROUP_SERVICE_ACCOUNT.

Langkah berikutnya