Mengonfigurasi instance baru dan yang sudah ada untuk autentikasi database IAM

Halaman ini berisi prosedur untuk membuat atau mengedit instance Cloud SQL guna mengizinkan pengguna atau akun layanan yang telah dikonfigurasi untuk menggunakan autentikasi database IAM Cloud SQL. Untuk mempelajari integrasi IAM Cloud SQL lebih lanjut, lihat autentikasi IAM.

Instance yang baru dibuat memiliki database postgres.

Sebelum memulai

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Menginstal Google Cloud CLI.
  5. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init
  6. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  7. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  8. Menginstal Google Cloud CLI.
  9. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init
  10. Pastikan Anda memiliki peran Admin Cloud SQL dan Compute Viewer di akun pengguna.

    Buka halaman IAM

    Pelajari lebih lanjut tentang peran dan perizinan

Mengonfigurasi instance baru untuk autentikasi database IAM

Cloud SQL menggunakan flag untuk mengaktifkan dan menonaktifkan koneksi pengguna IAM pada sebuah instance. Dalam prosedur ini, Anda akan mengaktifkan flag tersebut.

Cara mengonfigurasi instance baru yang menggunakan autentikasi database IAM Cloud SQL:

Konsol

  1. Di konsol Google Cloud, buka halaman Instance Cloud SQL.

    Buka Instance Cloud SQL

  2. Klik Create Instance.
  3. Klik Choose PostgreSQL.
  4. Masukkan nama untuk Instance ID. Jangan menyertakan informasi identitas pribadi atau yang sensitif dalam nama instance Anda karena dapat terlihat secara eksternal. Anda tidak perlu menyertakan ID project dalam nama instance. ID project akan otomatis disertakan jika sesuai (misalnya, dalam file log).
  5. Masukkan sandi untuk pengguna admin default.
  6. Dari menu drop-down Database version, pilih versi database.
  7. Pada bagian Pilih region dan ketersediaan zona pilih region dan zona untuk instance Anda. Tempatkan instance Anda di region yang sama dengan resource yang mengaksesnya. Region yang Anda pilih tidak dapat diubah lagi. Biasanya, Anda tidak perlu menentukan zona.
  8. Di bagian Customize your instance, klik Show Configuration Options, lalu luaskan Flags.
  9. Klik Add Flag.
  10. Dari menu drop-down Choose a flag, pilih flag cloudsql.iam_authentication. Pastikan On dipilih sebagai nilai untuk flag ini, lalu klik Done.
  11. Konfigurasikan setelan instance lainnya sesuai dengan kebutuhan. Untuk mengetahui informasi selengkapnya tentang setelan, lihat Setelan.
  12. Klik Create Instance.

gcloud

Jalankan gcloud sql instances create dengan parameter --database-flags ditetapkan ke cloudsql.iam_authentication=on.

Ganti kode berikut:

  • INSTANCE_NAME: Nama dari instance baru
  • POSTGRES_VERSION: Versi PostgreSQL (seperti POSTGRES_9_6, POSTGRES_10, POSTGRES_11, atau POSTGRES_12).
  • NUMBER_OF_CORES: Jumlah inti di dalam mesin.
  • AMOUNT_OF_MEMORY: Jumlah memori di dalam mesin. Unit ukuran harus tersedia (seperti, 3072MiB atau 9GiB).
  • ZONE: Zona Compute Engine yang diinginkan (seperti us-central1-a, atau us-central1-b).
  • PASSWORD: Membuat sandi untuk pengguna root.
gcloud sql instances create INSTANCE_NAME \
--database-version=POSTGRES_VERSION \
--cpu=NUMBER_OF_CORES \
--memory=AMOUNT_OF_MEMORY \
--zone=ZONE_NAME \
--root-password=PASSWORD \
--database-flags=cloudsql.iam_authentication=on

Terraform

Untuk membuat instance dengan autentikasi database IAM aktif, gunakan resource Terraform.

resource "google_sql_database_instance" "default" {
  name             = "postgres-db-auth-instance-name-test"
  region           = "us-west4"
  database_version = "POSTGRES_14"
  settings {
    tier = "db-custom-2-7680"
    database_flags {
      name  = "cloudsql.iam_authentication"
      value = "on"
    }
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally
  # delete this instance by use of Terraform whereas
  # `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

Menerapkan perubahan

Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan langkah-langkah di bagian berikut.

Menyiapkan Cloud Shell

  1. Luncurkan Cloud Shell.
  2. 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).

  1. Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki ekstensi .tf—misalnya main.tf. Dalam tutorial ini, file ini disebut sebagai main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 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.

  3. Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
  4. Simpan perubahan Anda.
  5. 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

  1. Tinjau konfigurasi dan pastikan resource yang akan dibuat atau diupdate oleh Terraform sesuai yang Anda inginkan:
    terraform plan

    Koreksi konfigurasi jika diperlukan.

  2. Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan yes pada prompt:
    terraform apply

    Tunggu hingga Terraform menampilkan pesan "Apply complete!".

  3. 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:

  1. Untuk menonaktifkan perlindungan penghapusan, di file konfigurasi Terraform Anda, tetapkan argumen deletion_protection ke false.
    deletion_protection =  "false"
  2. Terapkan konfigurasi Terraform terbaru dengan menjalankan perintah berikut dan memasukkan yes pada perintah:
    terraform apply
  1. Hapus resource yang sebelumnya diterapkan dengan konfigurasi Terraform Anda dengan menjalankan perintah berikut dan memasukkan yes pada prompt:

    terraform destroy

REST v1

Jangan menyertakan informasi sensitif atau identitas pribadi (PII) di nama instance Anda; informasi ini dapat dilihat secara eksternal.

Anda tidak perlu menyertakan ID project dalam nama instance. Project ID akan otomatis disertakan jika diperlukan (misalnya, dalam file log).

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • INSTANCE_ID: ID instance yang diinginkan
  • REGION: Region yang diinginkan, seperti us-east-1
  • PROJECT_ID: ID project Anda.
  • LOCATION_ID: ID lokasi
  • DATABASE_VERSION: String enum versi database. Contoh: POSTGRES_12
  • PASSWORD: Sandi untuk pengguna root
  • MACHINE_TYPE: String enum jenis (tingkat) mesin, seperti: db-custom-[CPUS]-[MEMORY_MBS]

Metode HTTP dan URL:

POST https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/locations/LOCATION_ID/instances

Meminta isi JSON:

{
  "name": "INSTANCE_ID",
  "region": "REGION",
  "databaseVersion": "DATABASE_VERSION",
  "rootPassword": "PASSWORD",
  "settings": {
    "tier": "MACHINE_TYPE",
    "backupConfiguration": {
      "enabled": true
    },
    "databaseFlags": [
      {
        "name": "cloudsql.iam_authentication",
        "value": "on"
      }
    ]
  }
}

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/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-01T19:13:21.834Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}
Untuk melihat cara permintaan REST API dasar dibuat untuk tugas ini, lihat APIs Explorer pada halaman instances:insert.

REST v1beta4

Jangan menyertakan informasi sensitif atau identitas pribadi (PII) di nama instance Anda; informasi ini dapat dilihat secara eksternal.

Anda tidak perlu menyertakan ID project dalam nama instance. Project ID akan otomatis disertakan jika diperlukan (misalnya, dalam file log).

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • INSTANCE_ID: ID instance yang diinginkan
  • REGION: Region yang diinginkan, seperti us-east-1
  • PROJECT_ID: ID project Anda.
  • LOCATION_ID: ID lokasi
  • DATABASE_VERSION: String enum versi database. Contoh: POSTGRES_12
  • PASSWORD: Sandi untuk pengguna root
  • MACHINE_TYPE: String enum jenis (tingkat) mesin, seperti: db-custom-[CPUS]-[MEMORY_MBS]

Metode HTTP dan URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/locations/LOCATION_ID/instances

Meminta isi JSON:

{
  "name": "INSTANCE_ID",
  "region": "REGION",
  "databaseVersion": "DATABASE_VERSION",
  "rootPassword": "PASSWORD",
  "settings": {
    "tier": "MACHINE_TYPE",
    "backupConfiguration": {
      "enabled": true
    },
    "databaseFlags": [
      {
        "name": "cloudsql.iam_authentication",
        "value": "on"
      }
    ]
  }
}

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": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-01T19:13:21.834Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}
Untuk melihat cara permintaan REST API dasar dibuat untuk tugas ini, lihat APIs Explorer pada halaman instances:insert.

Mengonfigurasi instance yang ada untuk autentikasi database IAM Cloud SQL

Untuk mengonfigurasi autentikasi database IAM pada instance yang ada:

Konsol

  1. Di konsol Google Cloud, buka halaman Instance Cloud SQL.

    Buka Instance Cloud SQL

  2. Untuk membuka halaman Ringkasan instance, klik nama instance.
  3. Klik Edit.
  4. Di bagian Customize your instance, luaskan Flag.
  5. Klik Add Flag.
  6. Dari menu drop-down Choose a flag, pilih flag cloudsql.iam_authentication. Pastikan On dipilih sebagai nilai untuk flag ini, lalu klik Done.
  7. Konfigurasikan setelan instance lainnya sesuai dengan kebutuhan. Untuk mengetahui informasi selengkapnya tentang setelan, lihat Setelan.
  8. Klik Save.

gcloud

Untuk mengetahui informasi tentang menginstal dan memulai gcloud CLI, lihat Menginstal gcloud CLI. Untuk mengetahui informasi tentang cara memulai Cloud Shell, lihat Menggunakan Cloud Shell.

Untuk prosedur ini, gunakan gcloud sql instances patch.

Ganti kode berikut:

  • INSTANCE_NAME: Nama dari instance baru
gcloud sql instances patch INSTANCE_NAME \
--database-flags=cloudsql.iam_authentication=on

Tindakan ini akan mereset semua setelan flag database yang sudah ada. Untuk panduan lebih lanjut tentang cara menetapkan tanda database, lihat Menetapkan tanda database.


REST v1

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID project Anda.
  • LOCATION_ID: ID lokasi
  • INSTANCE_ID: ID instance yang diinginkan
  • REGION: Region yang diinginkan
  • DATABASE_VERSION: String enum versi database. Contoh: POSTGRES_12
  • PASSWORD: Sandi untuk pengguna root
  • MACHINE_TYPE: String enum jenis (tingkat) mesin, seperti: db-custom-[CPUS]-[MEMORY_MBS]

Metode HTTP dan URL:

POST https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/locations/LOCATION_ID/instances

Meminta isi JSON:

{
  "name": "INSTANCE_ID",
  "region": "REGION",
  "databaseVersion": "DATABASE_VERSION",
  "rootPassword": "PASSWORD",
  "settings": {
    "tier": "MACHINE_TYPE",
    "backupConfiguration": {
      "enabled": true
    }
    "databaseFlags":
    [
      {
        "name": "cloudsql.iam_authentication",
        "value": "on"
      }
    ]
  }
}

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/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-01T19:13:21.834Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

Sebelum menggunakan data permintaan mana pun, lakukan penggantian berikut:

  • PROJECT_ID: ID project Anda.
  • LOCATION_ID: ID lokasi
  • INSTANCE_ID: ID instance yang diinginkan
  • REGION: Region yang diinginkan
  • DATABASE_VERSION: String enum versi database. Contoh: POSTGRES_12
  • PASSWORD: Sandi untuk pengguna root
  • MACHINE_TYPE: String enum jenis (tingkat) mesin, seperti: db-custom-[CPUS]-[MEMORY_MBS]

Metode HTTP dan URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/locations/LOCATION_ID/instances

Meminta isi JSON:

{
  "name": "INSTANCE_ID",
  "region": "REGION",
  "databaseVersion": "DATABASE_VERSION",
  "rootPassword": "PASSWORD",
  "settings": {
    "tier": "MACHINE_TYPE",
    "backupConfiguration": {
      "enabled": true
    }
    "databaseFlags":
    [
      {
        "name": "cloudsql.iam_authentication",
        "value": "on"
      }
    ]
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON yang mirip dengan berikut ini:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-01T19:13:21.834Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Langkah selanjutnya