Halaman ini menjelaskan cara menambahkan dan mengelola pengguna, akun layanan, dan grup ke instance Cloud SQL yang menggunakan autentikasi database IAM.
Untuk mengetahui informasi selengkapnya tentang integrasi IAM, lihat Autentikasi IAM.
Sebelum memulai
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Pastikan Anda memiliki peran Admin Cloud SQL di akun pengguna.
- Aktifkan autentikasi database IAM pada instance Cloud SQL Anda.
- Tetapkan peran IAM
cloudsql.instanceUser
yang diperlukan ke akun utama IAM seperti pengguna IAM, akun layanan, atau grup untuk login ke instance Cloud SQL. - Jika Anda menambahkan pengguna atau akun layanan individual ke instance Cloud SQL, Anda harus menetapkan peran IAM secara terpisah kepada setiap pengguna dan akun layanan.
- Jika menambahkan grup, Anda harus menetapkan peran IAM ke grup karena anggota grup akan otomatis mewarisi izin IAM yang terkait dengan peran IAM. Untuk informasi selengkapnya tentang cara membuat grup di Cloud Identity, lihat Membuat dan mengelola grup Google di konsol Google Cloud.
- Anda dapat memberikan peran tersebut di project yang berisi instance Cloud SQL menggunakan halaman IAM di konsol Google Cloud, gcloud CLI, Terraform, atau Cloud SQL Admin API. Untuk mengetahui informasi selengkapnya, lihat Menambahkan binding kebijakan IAM ke pengguna, akun layanan, atau grup.
- Jika Anda menggunakan akun layanan, pastikan Anda telah menambahkan akun layanan untuk setiap layanan yang memerlukan akses ke database dalam project.
Untuk informasi selengkapnya tentang cara membuat akun layanan, lihat Membuat akun layanan.
Menambahkan binding kebijakan IAM ke pengguna, akun layanan, atau grup
Prosedur ini menambahkan binding kebijakan ke kebijakan IAM project tertentu, dengan ID project dan binding. Perintah binding terdiri dari anggota, peran, dan kondisi opsional.
Nama pengguna database harus berupa alamat email pengguna IAM,
misalnya, example-user@example.com
. Nama ini harus menggunakan huruf kecil dan tanda kutip
karena berisi karakter khusus (@
dan .
).
Konsol
-
Di konsol Google Cloud, buka halaman IAM.
- Klik Tambahkan.
- Di bagian Anggota baru, masukkan alamat email. Anda dapat menambahkan pengguna individu, akun layanan, atau grup sebagai anggota, tetapi setiap project harus memiliki setidaknya satu akun utama sebagai anggota.
- Di Peran, buka Cloud SQL lalu pilih Pengguna Instance Cloud SQL.
- Opsional: Jika Anda ingin terhubung menggunakan Proxy Auth Cloud SQL atau Cloud SQL Language Connectors, pilih juga Cloud SQL Client.
- Klik Simpan.
gcloud
Jalankan
gcloud projects add-iam-policy-binding
dengan flag --role=roles/cloudsql.instanceUser
.
Menambahkan binding kebijakan ke akun pengguna
Ganti kode berikut:
- PROJECT_ID: ID untuk project yang ingin Anda beri otorisasi untuk digunakan oleh pengguna.
- USERNAME: alamat email untuk pengguna.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=user:USERNAME \ --role=roles/cloudsql.instanceUser
Jika Anda ingin terhubung menggunakan Proxy Auth Cloud SQL atau Cloud SQL Language Connectors, jalankan gcloud projects add-iam-policy-binding
lagi dengan flag --role=roles/cloudsql.client
Menambahkan binding kebijakan ke akun layanan
Ganti kode berikut:
- PROJECT_ID: ID untuk project yang ingin Anda beri otorisasi untuk digunakan oleh pengguna.
- SERVICE_ACCT: alamat email untuk akun layanan.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCT \ --role=roles/cloudsql.instanceUser
Jika Anda ingin terhubung menggunakan Proxy Auth Cloud SQL atau Cloud SQL Language Connectors, jalankan gcloud projects add-iam-policy-binding
lagi dengan flag --role=roles/cloudsql.client
Menambahkan binding kebijakan ke grup Cloud Identity
Ganti kode berikut:
- PROJECT_ID: ID untuk project yang ingin Anda izinkan untuk digunakan oleh anggota grup.
- GROUP_EMAIL_ADDRESS: Alamat email untuk grup. Misalnya,
example-group@example.com
.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=group:GROUP_EMAIL_ADDRESS \ --role=roles/cloudsql.instanceUser
Semua anggota grup yang ditentukan akan diberi peran Cloud SQL Instance User dan dapat login ke instance dalam project ini.
Jika Anda ingin terhubung menggunakan Proxy Auth Cloud SQL atau Cloud SQL Language Connectors, jalankan gcloud projects add-iam-policy-binding
lagi dengan flag --role=roles/cloudsql.client
Terraform
Untuk menambahkan binding kebijakan yang diperlukan ke akun pengguna dan layanan IAM, gunakan resource Terraform.
Menerapkan perubahan
Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan langkah-langkah di bagian berikut.
Menyiapkan Cloud Shell
- Luncurkan Cloud Shell.
-
Tetapkan project Google Cloud default tempat Anda ingin menerapkan konfigurasi Terraform.
Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat dijalankan di direktori mana pun.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Variabel lingkungan akan diganti jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.
Menyiapkan direktori
Setiap file konfigurasi Terraform harus memiliki direktorinya sendiri (juga disebut modul root).
-
Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki
ekstensi
.tf
—misalnyamain.tf
. Dalam tutorial ini, file ini disebut sebagaimain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Jika mengikuti tutorial, Anda dapat menyalin kode contoh di setiap bagian atau langkah.
Salin kode contoh ke dalam
main.tf
yang baru dibuat.Atau, salin kode dari GitHub. Tindakan ini direkomendasikan jika cuplikan Terraform adalah bagian dari solusi menyeluruh.
- Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
- Simpan perubahan Anda.
-
Lakukan inisialisasi Terraform. Anda hanya perlu melakukan ini sekali per direktori.
terraform init
Secara opsional, untuk menggunakan versi penyedia Google terbaru, sertakan opsi
-upgrade
:terraform init -upgrade
Menerapkan perubahan
-
Tinjau konfigurasi dan pastikan resource yang akan dibuat atau
diupdate oleh Terraform sesuai yang Anda inginkan:
terraform plan
Koreksi konfigurasi jika diperlukan.
-
Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan
yes
pada prompt:terraform apply
Tunggu hingga Terraform menampilkan pesan "Apply complete!".
- Buka project Google Cloud Anda untuk melihat hasilnya. Di Konsol Google Cloud, buka resource Anda di UI untuk memastikan bahwa Terraform telah membuat atau mengupdatenya.
Menghapus perubahan
Untuk menghapus perubahan Anda, lakukan langkah-langkah berikut:
- Untuk menonaktifkan perlindungan penghapusan, di file konfigurasi Terraform Anda, tetapkan
argumen
deletion_protection
kefalse
.deletion_protection = "false"
- Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan
memasukkan
yes
pada prompt:terraform apply
-
Hapus resource yang sebelumnya diterapkan dengan konfigurasi Terraform Anda dengan menjalankan perintah berikut dan memasukkan
yes
pada prompt:terraform destroy
Terraform
Untuk menambahkan binding kebijakan yang diperlukan ke akun pengguna dan layanan IAM, gunakan resource Terraform.
Menerapkan perubahan
Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan langkah-langkah di bagian berikut.
Menyiapkan Cloud Shell
- Luncurkan Cloud Shell.
-
Tetapkan project Google Cloud default tempat Anda ingin menerapkan konfigurasi Terraform.
Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat dijalankan di direktori mana pun.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Variabel lingkungan akan diganti jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.
Menyiapkan direktori
Setiap file konfigurasi Terraform harus memiliki direktorinya sendiri (juga disebut modul root).
-
Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki
ekstensi
.tf
—misalnyamain.tf
. Dalam tutorial ini, file ini disebut sebagaimain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Jika mengikuti tutorial, Anda dapat menyalin kode contoh di setiap bagian atau langkah.
Salin kode contoh ke dalam
main.tf
yang baru dibuat.Atau, salin kode dari GitHub. Tindakan ini direkomendasikan jika cuplikan Terraform adalah bagian dari solusi menyeluruh.
- Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
- Simpan perubahan Anda.
-
Lakukan inisialisasi Terraform. Anda hanya perlu melakukan ini sekali per direktori.
terraform init
Secara opsional, untuk menggunakan versi penyedia Google terbaru, sertakan opsi
-upgrade
:terraform init -upgrade
Menerapkan perubahan
-
Tinjau konfigurasi dan pastikan resource yang akan dibuat atau
diupdate oleh Terraform sesuai yang Anda inginkan:
terraform plan
Koreksi konfigurasi jika diperlukan.
-
Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan
yes
pada prompt:terraform apply
Tunggu hingga Terraform menampilkan pesan "Apply complete!".
- Buka project Google Cloud Anda untuk melihat hasilnya. Di Konsol Google Cloud, buka resource Anda di UI untuk memastikan bahwa Terraform telah membuat atau mengupdatenya.
Menghapus perubahan
Untuk menghapus perubahan Anda, lakukan langkah-langkah berikut:
- Untuk menonaktifkan perlindungan penghapusan, di file konfigurasi Terraform Anda, tetapkan
argumen
deletion_protection
kefalse
.deletion_protection = "false"
- Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan
memasukkan
yes
pada prompt:terraform apply
-
Hapus resource yang sebelumnya diterapkan dengan konfigurasi Terraform Anda dengan menjalankan perintah berikut dan memasukkan
yes
pada prompt:terraform destroy
REST
Berikan peran cloudsql.instanceUser
dan cloudsql.client
ke kedua jenis akun dengan mengedit kebijakan binding JSON atau YAML
yang ditampilkan oleh perintah get-iam-policy
. Perlu diperhatikan bahwa perubahan
kebijakan ini tidak akan diterapkan hingga Anda menetapkan kebijakan yang diperbarui.
{ "role": "roles/cloudsql.instanceUser", "members": [ "user:example-user@example.com" "serviceAccount:service1@sql." "group:example-group@example.com" ] } { "role": "roles/cloudsql.client", "members": [ "user:example-user@example.com" "serviceAccount:service1@sql." ] }
Menambahkan akun pengguna atau akun layanan IAM individual ke instance Cloud SQL
Anda harus membuat akun pengguna baru untuk setiap pengguna IAM atau akun layanan yang Anda tambahkan ke instance Cloud SQL agar dapat mengakses database. Jika menambahkan grup IAM, Anda tidak perlu membuat akun pengguna untuk setiap anggota grup tersebut.
Nama pengguna database harus berupa
alamat email pengguna IAM dan semua huruf kecil.
Misalnya, example-user@example.com
.
Saat menggunakan perintah REST, nama pengguna harus menggunakan tanda kutip karena berisi
karakter khusus (@
dan .
). Akun layanan menggunakan format
service-account-name@project-id.
.
Untuk menambahkan akun pengguna atau akun layanan IAM individual, Anda dapat menambahkan akun pengguna baru dan memilih IAM sebagai metode autentikasi:
Konsol
-
Di konsol Google Cloud, buka halaman Instance Cloud SQL.
- Untuk membuka halaman Ringkasan instance, klik nama instance.
- Pilih Pengguna dari menu navigasi SQL.
- Klik Tambahkan akun pengguna. Tab Tambahkan akun pengguna ke instance instance_name akan terbuka.
- Klik tombol pilihan Cloud IAM.
- Tambahkan alamat email untuk akun pengguna atau akun layanan yang ingin Anda tambahkan di kolom Principal.
- Klik Tambahkan. Pengguna atau akun layanan kini berada dalam daftar akun pengguna.
Jika pengguna tidak memiliki peran IAM
cloudsql.instanceUser
yang ditetapkan setelah pembuatan akun pengguna, ikon akan muncul di samping nama pengguna.Untuk memberikan izin login kepada pengguna, klik ikon, lalu pilih Tambahkan peran IAM. Jika ikon tidak lagi muncul, akun pengguna akan diberi peran IAM yang memberikan izin login.
gcloud
Buat akun pengguna
Gunakan email, seperti example-user@example.com
, untuk mengidentifikasi pengguna.
Ganti kode berikut:
- USERNAME: alamat email untuk pengguna.
- INSTANCE_NAME: nama instance yang ingin Anda izinkan untuk diakses pengguna.
gcloud sql users create USERNAME \ --instance=INSTANCE_NAME \ --type=cloud_iam_user
Membuat akun layanan
Ganti kode berikut:
- SERVICE_ACCT: alamat email akun layanan.
- INSTANCE_NAME: nama instance yang ingin Anda izinkan untuk diakses akun layanan.
gcloud sql users create SERVICE_ACCT \ --instance=INSTANCE_NAME \ --type=cloud_iam_service_account
Terraform
Untuk menambahkan akun pengguna dan layanan IAM di instance dengan autentikasi database IAM yang diaktifkan, gunakan resource Terraform.
Menerapkan perubahan
Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan langkah-langkah di bagian berikut.
Menyiapkan Cloud Shell
- Luncurkan Cloud Shell.
-
Tetapkan project Google Cloud default tempat Anda ingin menerapkan konfigurasi Terraform.
Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat dijalankan di direktori mana pun.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Variabel lingkungan akan diganti jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.
Menyiapkan direktori
Setiap file konfigurasi Terraform harus memiliki direktorinya sendiri (juga disebut modul root).
-
Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki
ekstensi
.tf
—misalnyamain.tf
. Dalam tutorial ini, file ini disebut sebagaimain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Jika mengikuti tutorial, Anda dapat menyalin kode contoh di setiap bagian atau langkah.
Salin kode contoh ke dalam
main.tf
yang baru dibuat.Atau, salin kode dari GitHub. Tindakan ini direkomendasikan jika cuplikan Terraform adalah bagian dari solusi menyeluruh.
- Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
- Simpan perubahan Anda.
-
Lakukan inisialisasi Terraform. Anda hanya perlu melakukan ini sekali per direktori.
terraform init
Secara opsional, untuk menggunakan versi penyedia Google terbaru, sertakan opsi
-upgrade
:terraform init -upgrade
Menerapkan perubahan
-
Tinjau konfigurasi dan pastikan resource yang akan dibuat atau
diupdate oleh Terraform sesuai yang Anda inginkan:
terraform plan
Koreksi konfigurasi jika diperlukan.
-
Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan
yes
pada prompt:terraform apply
Tunggu hingga Terraform menampilkan pesan "Apply complete!".
- Buka project Google Cloud Anda untuk melihat hasilnya. Di Konsol Google Cloud, buka resource Anda di UI untuk memastikan bahwa Terraform telah membuat atau mengupdatenya.
Menghapus perubahan
Untuk menghapus perubahan Anda, lakukan langkah-langkah berikut:
- Untuk menonaktifkan perlindungan penghapusan, di file konfigurasi Terraform Anda, tetapkan
argumen
deletion_protection
kefalse
.deletion_protection = "false"
- Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan
memasukkan
yes
pada prompt:terraform apply
-
Hapus resource yang sebelumnya diterapkan dengan konfigurasi Terraform Anda dengan menjalankan perintah berikut dan memasukkan
yes
pada prompt:terraform destroy
REST v1
Buat akun pengguna
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: the project ID
- INSTANCE_ID: ID instance untuk instance tempat Anda menambahkan pengguna
- USERNAME: alamat email untuk pengguna
Metode HTTP dan URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users
Meminta isi JSON:
{ "name": "USERNAME", "type": "CLOUD_IAM_USER" }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan menerima respons JSON yang mirip seperti berikut:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:44:16.656Z", "startTime": "2020-02-07T22:44:16.686Z", "endTime": "2020-02-07T22:44:20.437Z", "operationType": "CREATE_USER", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Membuat akun layanan
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- SERVICE_ACCT: email akun layanan
- PROJECT_ID: the project ID
- INSTANCE_ID: ID instance untuk instance tempat Anda menambahkan akun layanan
Metode HTTP dan URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users
Meminta isi JSON:
{ "name": "SERVICE_ACCT", "type": "CLOUD_IAM_SERVICE_ACCOUNT" }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "DONE", "user": "user@example.com", "insertTime": "2020-11-20T04:08:00.211Z", "startTime": "2020-11-20T04:08:00.240Z", "endTime": "2020-11-20T04:08:02.003Z", "operationType": "CREATE_USER", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
REST v1beta4
Buat akun pengguna
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: the project ID
- INSTANCE_ID: ID instance untuk instance tempat Anda menambahkan pengguna
- USERNAME: alamat email untuk pengguna
Metode HTTP dan URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users
Meminta isi JSON:
{ "name": "USERNAME", "type": "CLOUD_IAM_USER" }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan menerima respons JSON yang mirip seperti berikut:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:44:16.656Z", "startTime": "2020-02-07T22:44:16.686Z", "endTime": "2020-02-07T22:44:20.437Z", "operationType": "CREATE_USER", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Membuat akun layanan
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- SERVICE_ACCT: email akun layanan
- PROJECT_ID: the project ID
- INSTANCE_ID: ID instance untuk instance tempat Anda menambahkan akun layanan
Metode HTTP dan URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users
Meminta isi JSON:
{ "name": "SERVICE_ACCT", "type": "CLOUD_IAM_SERVICE_ACCOUNT" }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "DONE", "user": "user@example.com", "insertTime": "2020-11-20T04:08:00.211Z", "startTime": "2020-11-20T04:08:00.240Z", "endTime": "2020-11-20T04:08:02.003Z", "operationType": "CREATE_USER", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Menambahkan grup IAM ke instance Cloud SQL
Untuk menggunakan autentikasi grup IAM dan menambahkan grup IAM ke instance Cloud SQL, gunakan salah satu prosedur di bagian ini. Setelah menambahkan grup IAM, Anda tidak perlu menambahkan setiap anggota grup ke instance. Untuk informasi selengkapnya, lihat Menambahkan anggota grup ke instance Cloud SQL secara otomatis.
Konsol
-
Di konsol Google Cloud, buka halaman Instance Cloud SQL.
- Untuk membuka halaman Ringkasan instance, klik nama instance.
- Pilih Pengguna dari menu navigasi SQL.
- Klik Tambahkan akun pengguna. Tab Tambahkan akun pengguna ke instance instance_name akan terbuka.
- Klik tombol pilihan Cloud IAM.
- Tambahkan alamat email untuk grup yang ingin Anda tambahkan di kolom Principal.
- Klik Tambahkan. Grup kini berada dalam daftar pengguna.
Jika grup tidak memiliki peran IAM
cloudsql.instanceUser
yang ditetapkan setelah pembuatan akun pengguna, ikon akan muncul di samping grup.Untuk memberikan izin login kepada anggota grup, klik ikon, lalu pilih Tambahkan peran IAM. Jika ikon tidak lagi muncul, semua anggota grup akan diberi peran yang memberikan izin login.
gcloud
Ganti kode berikut:
- GROUP_EMAIL_ADDRESS: alamat email grup Cloud Identity yang ingin Anda tambahkan ke instance. Misalnya, example-group@example.com.
- INSTANCE_NAME: nama instance tempat Anda ingin menambahkan grup.
Jalankan perintah berikut:
gcloud sql users create GROUP_EMAIL_ADDRESS \ --instance=INSTANCE_NAME \ --type=cloud_iam_group
Terraform
Untuk menambahkan akun pengguna dan layanan IAM di instance dengan autentikasi database IAM yang diaktifkan, gunakan resource Terraform.
Menerapkan perubahan
Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan langkah-langkah di bagian berikut.
Menyiapkan Cloud Shell
- Luncurkan Cloud Shell.
-
Tetapkan project Google Cloud default tempat Anda ingin menerapkan konfigurasi Terraform.
Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat dijalankan di direktori mana pun.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Variabel lingkungan akan diganti jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.
Menyiapkan direktori
Setiap file konfigurasi Terraform harus memiliki direktorinya sendiri (juga disebut modul root).
-
Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki
ekstensi
.tf
—misalnyamain.tf
. Dalam tutorial ini, file ini disebut sebagaimain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Jika mengikuti tutorial, Anda dapat menyalin kode contoh di setiap bagian atau langkah.
Salin kode contoh ke dalam
main.tf
yang baru dibuat.Atau, salin kode dari GitHub. Tindakan ini direkomendasikan jika cuplikan Terraform adalah bagian dari solusi menyeluruh.
- Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
- Simpan perubahan Anda.
-
Lakukan inisialisasi Terraform. Anda hanya perlu melakukan ini sekali per direktori.
terraform init
Secara opsional, untuk menggunakan versi penyedia Google terbaru, sertakan opsi
-upgrade
:terraform init -upgrade
Menerapkan perubahan
-
Tinjau konfigurasi dan pastikan resource yang akan dibuat atau
diupdate oleh Terraform sesuai yang Anda inginkan:
terraform plan
Koreksi konfigurasi jika diperlukan.
-
Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan
yes
pada prompt:terraform apply
Tunggu hingga Terraform menampilkan pesan "Apply complete!".
- Buka project Google Cloud Anda untuk melihat hasilnya. Di Konsol Google Cloud, buka resource Anda di UI untuk memastikan bahwa Terraform telah membuat atau mengupdatenya.
Menghapus perubahan
Untuk menghapus perubahan Anda, lakukan langkah-langkah berikut:
- Untuk menonaktifkan perlindungan penghapusan, di file konfigurasi Terraform Anda, tetapkan
argumen
deletion_protection
kefalse
.deletion_protection = "false"
- Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan
memasukkan
yes
pada prompt:terraform apply
-
Hapus resource yang sebelumnya diterapkan dengan konfigurasi Terraform Anda dengan menjalankan perintah berikut dan memasukkan
yes
pada prompt:terraform destroy
REST v1
Sebelum menggunakan salah satu data permintaan, buatlah pengganti berikut:
- PROJECT_ID: the project ID
- INSTANCE_ID: ID instance untuk instance tempat Anda menambahkan grup Cloud Identity
- GROUP_EMAIL: alamat email untuk grup Cloud Identity
Metode HTTP dan URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users
Meminta isi JSON:
{ "name": "GROUP_EMAIL", "type": "CLOUD_IAM_GROUP" }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "DONE", "user": "example-group@example.com", "insertTime": "2023-12-07T22:44:16.656Z", "startTime": "2023-12-07T22:44:16.686Z", "endTime": "2023-12-07T22:44:20.437Z", "operationType": "CREATE_USER", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
REST v1beta4
Sebelum menggunakan salah satu data permintaan, buatlah pengganti berikut:
- PROJECT_ID: the project ID
- INSTANCE_ID: ID instance untuk instance tempat Anda menambahkan grup Cloud Identity
- GROUP_EMAIL: alamat email untuk grup Cloud Identity
Metode HTTP dan URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users
Meminta isi JSON:
{ "name": "GROUP_EMAIL", "type": "CLOUD_IAM_GROUP" }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "DONE", "user": "example-group@example.com", "insertTime": "2023-12-07T22:44:16.656Z", "startTime": "2023-12-07T22:44:16.686Z", "endTime": "2023-12-07T22:44:20.437Z", "operationType": "CREATE_USER", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Menambahkan anggota grup ke instance Cloud SQL secara otomatis
Saat Anda menambahkan grup IAM ke instance Cloud SQL, semua anggota (pengguna dan akun layanan) grup tersebut akan mewarisi izin IAM untuk melakukan autentikasi ke instance. Anda tidak perlu menambahkan anggota grup satu per satu ke instance Cloud SQL. Setelah anggota grup login dan berhasil melakukan autentikasi ke instance untuk pertama kalinya, Cloud SQL akan membuat akun pengguna grup atau akun layanan grup untuk anggota grup tersebut. Anda dapat melihat anggota grup yang tercantum di instance setelah login pertama mereka berhasil.
Untuk mengetahui informasi selengkapnya tentang login, lihat Login menggunakan autentikasi database IAM.
Mengelola anggota grup di instance Cloud SQL
Saat Anda menambahkan grup IAM ke instance Cloud SQL, semua anggota (akun pengguna atau layanan) grup tersebut akan mewarisi izin IAM untuk melakukan autentikasi ke instance. Anda dapat mengontrol akses ke instance dengan mengelola grup di Cloud Identity. Misalnya, jika Anda ingin memberi pengguna baru akses ke instance, tambahkan pengguna tersebut sebagai anggota grup di Cloud Identity. Anda tidak perlu menghapus atau menambahkan anggota grup secara terpisah di tingkat instance Cloud SQL karena perubahan pada keanggotaan grup disebarkan dari ke instance Cloud SQL secara otomatis. Perubahan pada keanggotaan grup, seperti penambahan atau penghapusan anggota, memerlukan waktu sekitar 15 menit untuk diterapkan. Hal ini selain waktu yang diperlukan untuk perubahan IAM.
Memberikan atau mencabut hak istimewa database untuk grup IAM di PostgreSQL akan langsung berlaku. Misalnya, jika Anda mencabut akses ke tabel, anggota grup IAM tersebut akan langsung kehilangan akses ke tabel tersebut.
Pengguna atau akun layanan dapat menjadi anggota beberapa grup IAM. Jika pengguna atau akun layanan termasuk dalam beberapa grup IAM di instance, mereka memiliki semua izin IAM dan hak istimewa database yang digabungkan dari setiap grup IAM tersebut.
Saat Anda menambahkan anggota baru (pengguna atau akun layanan) ke grup IAM di Cloud Identity dan mereka berhasil login ke instance untuk pertama kalinya, mereka akan mewarisi hak istimewa database yang diberikan ke grup secara otomatis.
Memberikan hak istimewa database kepada setiap akun pengguna atau layanan IAM
Saat pengguna atau layanan IAM individual ditambahkan ke instance Cloud SQL, akun baru tersebut tidak diberi hak istimewa di database mana pun, secara default. Mereka hanya dapat menjalankan kueri terhadap objek database yang aksesnya telah diberikan ke PUBLIC.Jika membutuhkan akses tambahan, lebih banyak hak istimewa dapat diberikan menggunakan pernyataan GRANT. Lihat halaman referensi GRANT untuk melihat daftar lengkap hak istimewa yang dapat Anda berikan kepada akun pengguna dan akun layanan. Jalankan GRANT dari command line.
Ganti kode berikut:
- USERNAME: alamat email untuk pengguna. Anda harus memberi tanda kutip
pada email karena berisi karakter khusus (
@
dan.
) - TABLE_NAME: nama tabel yang ingin Anda berikan akses kepada pengguna.
grant select on TABLE_NAME to "USERNAME";
Memberikan hak istimewa database kepada grup IAM
Saat menggunakan autentikasi grup IAM, Anda memberikan hak istimewa database ke grup IAM, bukan memberikan hak istimewa ke setiap pengguna atau akun layanan. Secara default, saat Anda menambahkan grup IAM ke instance Cloud SQL, grup tersebut tidak memiliki hak istimewa database.
Untuk memberikan hak istimewa database kepada grup IAM, gunakan pernyataan GRANT. Setelah login ke instance Cloud SQL untuk pertama kalinya, setiap anggota grup (termasuk pengguna dan akun layanan) akan mewarisi hak istimewa database yang diberikan ke grup secara otomatis.
Ganti kode berikut:
- GROUP_NAME: alamat email grup Cloud Identity, termasuk
@
dan nama domain. Misalnya, jika alamat email grup IAM adalahexample-group@example.com
, nama grupnya adalahexample-group@example.com
. Anda harus menggunakan tanda kutip pada nama grup karena string berisi karakter khusus (@
dan.
) - TABLE_NAME: nama tabel yang ingin Anda berikan akses kepada pengguna.
Jalankan GRANT dari command line psql
.
grant select on TABLE_NAME to "GROUP_NAME";
Untuk informasi selengkapnya tentang cara memberikan hak istimewa, lihat halaman referensi GRANT dalam dokumentasi PostgreSQL.
Hak istimewa database yang Anda berikan ke grup IAM akan langsung berlaku.
Melihat pengguna, akun layanan, dan grup IAM yang ditambahkan ke instance Cloud SQL
Untuk melihat pengguna, akun layanan, dan grup IAM yang telah ditambahkan ke instance Cloud SQL, jalankan perintah berikut.
Konsol
-
Di konsol Google Cloud, buka halaman Instance Cloud SQL.
- Untuk membuka halaman Ringkasan instance, klik nama instance.
- Pilih Pengguna dari menu navigasi SQL. Halaman ini menampilkan daftar pengguna IAM, akun layanan, dan grup Cloud Identity yang telah ditambahkan ke instance Anda.
- Opsional: Untuk melihat daftar pengguna IAM atau akun layanan yang telah login ke instance, klik Anggota grup IAM yang diautentikasi.
gcloud
Ganti INSTANCE_NAME dengan nama instance yang memiliki grup yang ingin Anda lihat.
gcloud sql users list --instance=INSTANCE_NAME
Grup memiliki jenis pengguna CLOUD_IAM_GROUP
.
Output juga mencantumkan akun pengguna dan akun layanan di instance Cloud SQL Anda.
- Akun pengguna yang merupakan anggota grup memiliki jenis
CLOUD_IAM_GROUP_USER
. - Akun layanan yang merupakan anggota grup memiliki jenis
CLOUD_IAM_GROUP_SERVICE_ACCOUNT
. - Akun pengguna yang merupakan akun pengguna autentikasi database IAM perorangan memiliki jenis
CLOUD_IAM_USER
. - Akun layanan yang merupakan akun layanan autentikasi database IAM individual memiliki jenis
CLOUD_IAM_SERVICE_ACCOUNT
.
REST v1
Permintaan berikut menggunakan metode users.list untuk mencantumkan pengguna yang memiliki akun di instance Cloud SQL.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: project ID
- INSTANCE_ID: ID instance
Metode HTTP dan URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users/list
Untuk mengirim permintaan, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
{ "kind": "sql#usersList", "items": [ { "kind": "sql#user", "etag": "--redacted--", "name": "example-service-acct@PROJECT_ID.iam", "host": "", "instance": "INSTANCE_ID", "project": "PROJECT_ID", "type": "CLOUD_IAM_SERVICE_ACCOUNT" }, { "kind": "sql#user", "etag": "--redacted--", "name": "another-example-service-acct@PROJECT_ID.iam", "host": "", "instance": "INSTANCE_ID", "project": "PROJECT_ID", "type": "CLOUD_IAM_GROUP_SERVICE_ACCOUNT" }, { "kind": "sql#user", "etag": "--redacted--", "name": "postgres", "host": "", "instance": "INSTANCE_ID", "project": "PROJECT_ID", }, { "kind": "sql#user", "etag": "--redacted--", "name": "example-user@example.com", "host": "", "instance": "INSTANCE_ID", "project": "PROJECT_ID", "type": "CLOUD_IAM_USER" }, { "kind": "sql#user", "etag": "--redacted--", "name": "another-example-user@example.com", "host": "", "instance": "INSTANCE_ID", "project": "PROJECT_ID", "type": "CLOUD_IAM_GROUP_USER" }, { "kind": "sql#user", "etag": "--redacted--", "name": "example-group@example.com", "host": "", "instance": "INSTANCE_ID", "project": "PROJECT_ID", "type": "CLOUD_IAM_GROUP" } ] }
Grup memiliki jenis pengguna CLOUD_IAM_GROUP
.
Output juga mencantumkan akun pengguna dan akun layanan di instance Cloud SQL Anda.
- Akun pengguna yang merupakan anggota grup memiliki jenis
CLOUD_IAM_GROUP_USER
. - Akun layanan yang merupakan anggota grup memiliki jenis
CLOUD_IAM_GROUP_SERVICE_ACCOUNT
. - Akun pengguna yang merupakan akun pengguna autentikasi database IAM perorangan memiliki jenis
CLOUD_IAM_USER
. - Akun layanan yang merupakan akun layanan autentikasi database IAM individual memiliki jenis
CLOUD_IAM_SERVICE_ACCOUNT
.
REST v1beta4
Permintaan berikut menggunakan metode users.list untuk mencantumkan pengguna yang memiliki akun di instance Cloud SQL.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- project-id: project ID Anda
- instance-id: ID instance yang diinginkan
Metode HTTP dan URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users
Untuk mengirim permintaan, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
{ "kind": "sql#usersList", "items": [ { "kind": "sql#user", "etag": "--redacted--", "name": "sqlserver", "host": "", "instance": "instance-id", "project": "project-id", "sqlserverUserDetails": { "serverRoles": [ "CustomerDbRootRole" ] } }, { "kind": "sql#user", "etag": "--redacted--", "name": "user-id-1", "host": "", "instance": "instance-id", "project": "project-id", "sqlserverUserDetails": { "serverRoles": [ "CustomerDbRootRole" ] } }, { "kind": "sql#user", "etag": "--redacted--", "name": "user-id-2", "host": "", "instance": "instance-id", "project": "project-id", "sqlserverUserDetails": { "serverRoles": [ "CustomerDbRootRole" ] } }, { ... }, { ... } ] }
Grup memiliki jenis pengguna CLOUD_IAM_GROUP
.
Output juga mencantumkan akun pengguna dan akun layanan di instance Cloud SQL Anda.
- Akun pengguna yang merupakan anggota grup memiliki jenis
CLOUD_IAM_GROUP_USER
. - Akun layanan yang merupakan anggota grup memiliki jenis
CLOUD_IAM_GROUP_SERVICE_ACCOUNT
. - Akun pengguna yang merupakan akun pengguna autentikasi database IAM perorangan memiliki jenis
CLOUD_IAM_USER
. - Akun layanan yang merupakan akun layanan autentikasi database IAM individual memiliki jenis
CLOUD_IAM_SERVICE_ACCOUNT
.
Menghapus akun pengguna atau akun layanan IAM individual dari instance Cloud SQL
Untuk menghapus akun pengguna atau akun layanan individual yang bukan anggota grup dari instance Cloud SQL, Anda dapat menghapus akun tersebut menggunakan perintah berikut:
Konsol
-
Di konsol Google Cloud, buka halaman Instance Cloud SQL.
- Untuk membuka halaman Ringkasan instance, klik nama instance.
- Pilih Pengguna dari menu navigasi SQL.
- Klik untuk pengguna yang ingin Anda hapus.
- Pilih Hapus. Tindakan ini hanya akan mencabut akses ke instance ini.
gcloud
Mencabut akses pengguna
Gunakan email, seperti example-user@example.com
, untuk mengidentifikasi pengguna.
Ganti kode berikut:
- USERNAME: alamat email.
- INSTANCE_NAME: nama instance yang ingin Anda hapus penggunanya.
gcloud sql users delete USERNAME \ --instance=INSTANCE_NAME
Menghapus akun layanan individual
Ganti kode berikut:
- SERVICE_ACCT: alamat email akun layanan.
- INSTANCE_NAME: nama instance yang ingin Anda hapus penggunanya.
gcloud sql users delete SERVICE_ACCT \ --instance=INSTANCE_NAME
REST v1
Permintaan berikut menggunakan metode users.delete untuk menghapus akun pengguna yang ditentukan.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: project ID Anda
- INSTANCE_ID: ID instance yang diinginkan
- USERNAME: Alamat email untuk pengguna atau akun layanan
Metode HTTP dan URL:
DELETE https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users?host=&name=USERNAME
Untuk mengirim permintaan, perluas salah satu opsi berikut:
Anda akan menerima respons JSON seperti berikut:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:38:41.217Z", "startTime": "2020-02-07T22:38:41.217Z", "endTime": "2020-02-07T22:38:44.801Z", "operationType": "DELETE_USER", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
REST v1beta4
Permintaan berikut menggunakan metode users.delete untuk menghapus akun pengguna yang ditentukan.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: project ID Anda
- INSTANCE_ID: ID instance yang diinginkan
- USERNAME: Alamat email untuk pengguna atau akun layanan
Metode HTTP dan URL:
DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users?host=&name=USERNAME
Untuk mengirim permintaan, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:38:41.217Z", "startTime": "2020-02-07T22:38:41.217Z", "endTime": "2020-02-07T22:38:44.801Z", "operationType": "DELETE_USER", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Menghapus anggota grup IAM dari instance Cloud SQL
Ada dua cara untuk menghapus anggota grup IAM dari instance Cloud SQL:
- Penghapusan otomatis
- Penghapusan manual
Penghapusan otomatis
Untuk menghapus anggota grup IAM, Anda harus menghapus keanggotaannya dari grup IAM yang berlaku di Cloud Identity. Setelah pengguna grup IAM kehilangan keanggotaan ke semua grup yang berlaku di Cloud Identity, Cloud SQL akan otomatis menghapus pengguna grup tersebut dari instance. Satu-satunya pengecualian untuk penghapusan ini adalah pengguna grup yang memiliki objek database. Pengguna grup ini harus dihapus secara manual.
Perubahan pada keanggotaan grup, seperti penambahan atau penghapusan anggota, memerlukan waktu sekitar 15 menit untuk diterapkan. Hal ini selain waktu yang diperlukan untuk perubahan IAM.
Penghapusan manual
Jika pengguna grup IAM tidak dapat dihapus secara otomatis, Anda dapat menghapusnya secara manual. Anda tidak dapat menghapus pengguna grup IAM secara manual dari instance Cloud SQL menggunakan gcloud CLI, Konsol Google Cloud, Terraform, atau Cloud SQL Admin API. Sebagai gantinya, pengguna database dengan hak istimewa superuser dapat menghapus pengguna grup IAM secara manual dari instance Cloud SQL menggunakan pernyataan DROP USER dari klien PostgreSQL.
Setelah Anda menghapus pengguna grup IAM secara manual dari instance Cloud SQL, pastikan Anda juga menghapusnya dari grup IAM di Cloud Identity untuk mencegah login lebih lanjut ke instance Cloud SQL.
Menghapus grup IAM dari instance Cloud SQL
Anda dapat menghapus grup IAM yang ditambahkan dari instance Cloud SQL. Setelah Anda menghapus grup IAM dari instance, semua pengguna dan akun layanan yang termasuk dalam grup IAM akan kehilangan hak istimewa database apa pun yang diberikan ke grup IAM. Selain itu, kondisi berikut berlaku:
- Pengguna dan akun layanan yang termasuk dalam grup IAM
masih dapat login hingga
izin IAM
cloudsql.instances.login
dihapus dari grup. - Jika penghapusan grup menyebabkan pengguna grup IAM atau akun layanan tidak termasuk dalam grup lain di instance, Cloud SQL akan menghapus pengguna grup IAM atau akun layanan dari instance.
- Namun, jika pengguna grup IAM memiliki objek database di instance, Anda harus menetapkan ulang kepemilikan objek tersebut sebelum dapat menghapus pengguna secara manual.
Jika Anda menghapus semua grup IAM dari instance Cloud SQL, semua pengguna grup IAM dan akun layanan akan kehilangan semua hak istimewa database mereka. Selain itu, kondisi berikut berlaku:
- Semua pengguna grup IAM dan akun layanan tidak dapat login ke instance.
- Cloud SQL juga menghapus semua pengguna grup IAM dan akun layanan dari instance secara otomatis.
- Namun, jika pengguna grup IAM memiliki objek database di instance, Anda harus menetapkan ulang kepemilikan objek tersebut sebelum dapat menghapus pengguna secara manual.
Konsol
-
Di konsol Google Cloud, buka halaman Instance Cloud SQL.
- Untuk membuka halaman Ringkasan instance, klik nama instance.
- Pilih Pengguna dari menu navigasi SQL.
- Klik untuk grup yang ingin Anda hapus.
- Pilih Hapus. Tindakan ini hanya akan mencabut akses ke instance ini.
gcloud
Untuk menghapus grup Cloud Identity dari instance, gunakan perintah gcloud sql users delete
.
Ganti kode berikut:
- GROUP_NAME: bagian pertama alamat email grup Cloud Identity. Misalnya, menggunakan alamat email
example-group@example.com
, nama grup Cloud Identity adalahexample-group
. - INSTANCE_NAME: nama instance Cloud SQL dengan grup Cloud Identity yang ingin Anda hapus.
gcloud sql users delete GROUP_NAME \ --instance=INSTANCE_NAME
Menghapus izin login IAM dari grup IAM
Jika Anda mencabut peran cloudsql.instanceUser
dari grup IAM,
semua anggota grup akan kehilangan kemampuan untuk login ke instance Cloud SQL
apa pun dalam project. Pengguna atau akun layanan hanya dapat login ke instance jika mereka adalah anggota grup IAM lain yang masih memiliki izin login.
Untuk mencabut peran dari grup Cloud Identity, lihat Mencabut satu peran.
Menghapus pengguna dari grup IAM
Anggota grup IAM seperti pengguna atau akun layanan dapat dihapus dari grup IAM di Cloud Identity.
Setelah penghapusan diterapkan melalui IAM, pengguna tidak dapat lagi login ke database kecuali jika mereka telah menerima izin login dari grup lain atau diberi hak istimewa login secara langsung. Selain itu, pengguna yang dihapus dari grup akan kehilangan hak istimewa database grup.
Jika pengguna grup IAM tidak termasuk dalam grup apa pun di instance, Cloud SQL akan otomatis menghapus pengguna dari instance. Namun, jika Cloud SQL mendeteksi bahwa pengguna grup IAM memiliki objek di instance, Cloud SQL tidak akan menghapus pengguna tersebut. Administrator harus menetapkan ulang kepemilikan objek dan menghapus pengguna secara manual.
Melihat informasi login di log audit
Anda dapat mengaktifkan log audit untuk mengambil login IAM ke database. Saat terjadi masalah saat login, Anda dapat menggunakan log audit untuk mendiagnosis masalah tersebut.
Setelah dikonfigurasi, Anda dapat melihat log audit Akses Data dari login yang berhasil menggunakan Logs Explorer.
Untuk autentikasi grup IAM, log audit menampilkan aktivitas dan login untuk setiap akun pengguna dan layanan.
Misalnya, sebuah log mungkin memiliki informasi yang mirip dengan yang berikut ini:
{
insertId: "..."
logName: "projects/.../logs/cloudaudit.googleapis.com%2Fdata_access"
protoPayload: {
@type: "type.googleapis.com/google.cloud.audit.AuditLog"
authenticationInfo: {
principalEmail: "..."
}
authorizationInfo: [
0: {
granted: true
permission: "cloudsql.instances.login"
resource: "instances/..."
resourceAttributes: {
}
}
]
methodName: "cloudsql.instances.login"
request: {
@type: "type.googleapis.com/google.cloud.sql.authorization.v1.InstancesLoginRequest"
clientIpAddress: "..."
database: "..."
databaseSessionId: ...
instance: "projects/.../locations/us-central1/instances/..."
user: "..."
}
requestMetadata: {
callerIp: "..."
destinationAttributes: {
}
requestAttributes: {
auth: {
}
time: "..."
}
}
resourceName: "instances/..."
serviceName: "cloudsql.googleapis.com"
status: {
}
}
receiveTimestamp: "..."
resource: {
labels: {
database_id: "...:..."
project_id: "..."
region: "us-central"
}
type: "cloudsql_database"
}
severity: "INFO"
timestamp: "..."
}
Memecahkan masalah kegagalan login
Jika upaya login gagal, PostgreSQL akan menampilkan pesan error minimal demi alasan keamanan. Contoh:
PGPASSWORD=not-a-password psql --host=... --username=... --dbname=...
psql: error: could not connect to server: FATAL: Cloud SQL IAM user authentication failed for user "..."
FATAL: pg_hba.conf rejects connection for host "...", user "...", database "...", SSL off
Anda dapat meninjau log error PostgreSQL untuk mengetahui detail selengkapnya tentang error tersebut. Untuk mengetahui informasi lebih lanjut, lihat Melihat Log.
Misalnya, untuk error sebelumnya, entri log berikut menjelaskan tindakan yang dapat Anda lakukan untuk menyelesaikan masalah.
F ... [152172]: [1-1] db=...,user=... FATAL: Cloud SQL IAM user authentication failed for user "..."
I ... [152172]: [2-1] db=...,user=... DETAIL: Request is missing required authentication credential. Expected OAuth 2 access token, log in cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.
Periksa pesan error yang Anda terima. Jika pesan tersebut tidak menunjukkan bahwa Anda
menggunakan "Autentikasi pengguna IAM Cloud SQL" atau
"Autentikasi akun layanan IAM Cloud SQL", pastikan bahwa
jenis pengguna database yang digunakan untuk login adalahCLOUD_IAM_USER
atau
CLOUD_IAM_SERVICE_ACCOUNT
.
Anda dapat menggunakan Konsol Google Cloud atau perintah gcloud sql
users list
untuk memeriksa hal ini.
Untuk pengguna IAM, pastikan nama pengguna database adalah
email pengguna IAM.
Jika Anda menggunakan autentikasi database IAM, periksa detail pesan error. Anda dapat menemukan
pesan error di log error database. Jika token akses tersebut menunjukkan bahwa token akses (OAuth
2.0) yang Anda kirim sebagai sandi tidak valid, Anda dapat menggunakan perintah
gcloud auth application-default print-access-token
gcloud
untuk menemukan detail token, seperti berikut:
curl -H "Content-Type: application/x-www-form-urlencoded" \ -d "access_token=$(gcloud auth application-default print-access-token)" \ https://www.googleapis.com/oauth2/v1/tokeninfo
Pastikan token ditujukan untuk akun pengguna atau akun layanan IAM yang dimaksud dan belum habis masa berlakunya.
Jika detailnya menunjukkan kurangnya izin, pastikan bahwa akun pengguna
atau akun layanan IAM diberi izin cloudsql.instances.login
menggunakan
peran Cloud SQL Instance User
atau peran khusus yang telah ditetapkan dalam
kebijakan IAM dari project instance Anda. Gunakan
Pemecah Masalah Kebijakan IAM untuk mendapatkan bantuan lainnya.
Jika login gagal karena autentikasi database IAM tidak tersedia, pengguna dapat login menggunakan pengguna dan sandi PostgreSQL default. Metode login ini tetap memberi pengguna akses ke seluruh database. Verifikasi bahwa koneksi adalah koneksi yang aman.
Memecahkan masalah akun pengguna yang menggunakan autentikasi grup IAM
Bagian ini mencantumkan skenario pemecahan masalah untuk autentikasi grup IAM.
Gagal menambahkan grup ke database
Saat mencoba menambahkan grup ke instance, Anda akan menerima error berikut:
(gcloud.sql.users.create) HTTPError 400: Invalid request: Provided CLOUD_IAM_GROUP: EMAIL, does not exist.
Pastikan alamat email yang Anda berikan adalah grup yang valid.
Jika grup belum ada, buat grup. Untuk informasi selengkapnya tentang cara membuat grup, lihat Membuat dan mengelola grup Google di konsol Google Cloud.
Jika Anda menerima error berikut:
(gcloud.sql.users.create) HTTPError 400: Invalid request: IAM Group Authentication is disabled.
Kemudian, sebelum Anda dapat menggunakan autentikasi grup IAM, instance Cloud SQL Anda memerlukan update pemeliharaan berikut:
R20240514.00_04
atau yang lebih baru
Anda dapat menerapkan update pemeliharaan ke instance menggunakan pemeliharaan mandiri. Untuk mengetahui informasi selengkapnya, lihat Pemeliharaan mandiri.
Akun pengguna atau layanan IAM yang ada tidak mewarisi hak istimewa database yang diberikan ke grup IAM-nya
Jika akun pengguna atau akun layanan IAM yang ada tidak mewarisi hak istimewa database yang benar dari grupnya, selesaikan langkah-langkah berikut:
Di konsol Google Cloud, buka halaman IAM.
Pastikan akun tersebut adalah anggota grup yang ditambahkan ke instance Cloud SQL.
Cantumkan pengguna dan akun layanan di instance.
gcloud sql users list --instance=INSTANCE_NAME
Dalam output, periksa apakah akun pengguna atau layanan tercantum sebagai
CLOUD_IAM_USER
atauCLOUD_IAM_SERVICE_ACCOUNT
.Jika akun pengguna atau akun layanan tercantum sebagai
CLOUD_IAM_USER
atauCLOUD_IAM_SERVICE_ACCOUNT
, hapus akun tersebut dari instance. Akun yang Anda hapus adalah akun IAM individual yang tidak mewarisi hak istimewa database grup.Login lagi ke instance dengan akun pengguna atau layanan.
Login lagi ke instance akan membuat ulang akun dengan jenis akun
CLOUD_IAM_GROUP_USER
atauCLOUD_IAM_GROUP_SERVICE_ACCOUNT
yang benar.
Langkah selanjutnya
- Pelajari autentikasi database IAM lebih lanjut.
- Pelajari cara login ke database Cloud SQL.
- Pelajari cara mengonfigurasi instance untuk autentikasi database IAM.