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, akun layanan, atau grup yang 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. 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.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Install the Google Cloud CLI.
  5. To initialize the gcloud CLI, run the following command:

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

    Buka pemilih project

  7. Make sure that billing is enabled for your Google Cloud project.

  8. Install the Google Cloud CLI.
  9. To initialize the gcloud CLI, run the following command:

    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

Untuk mengonfigurasi instance Cloud SQL baru untuk autentikasi database IAM, Anda harus mengaktifkan flag cloudsql.iam_authentication. Setelah mengaktifkan tanda ini, Anda dapat menambahkan pengguna, akun layanan, atau grup IAM ke instance Cloud SQL.

Untuk mengonfigurasi instance Cloud SQL baru agar menggunakan autentikasi database IAM:

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.
  5. 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).
  6. Masukkan sandi untuk administrator default.
  7. Dari menu Database version, pilih versi database.
  8. 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.
  9. Di bagian Customize your instance, klik Show Configuration Options, lalu luaskan Flags.
  10. Klik Add Flag.
  11. Dari menu Choose a flag, pilih flag cloudsql.iam_authentication. Pastikan On dipilih sebagai nilai untuk flag ini, lalu klik Done.
  12. Konfigurasikan setelan instance lainnya sesuai dengan kebutuhan. Untuk mengetahui informasi selengkapnya tentang setelan, lihat Setelan.
  13. 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 instance baru.
  • POSTGRES_VERSION: versi PostgreSQL (seperti POSTGRES_9_6, POSTGRES_10, POSTGRES_11, atau POSTGRES_12).
  • NUMBER_OF_CORES: jumlah core 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 yang diaktifkan, 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 dengan menjalankan perintah berikut dan memasukkan yes pada prompt:
    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 informasi identitas pribadi (PII) dalam nama instance Anda karena dapat terlihat secara eksternal.

Anda tidak perlu menyertakan ID project dalam nama instance. ID project 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: the project ID
  • 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/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/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/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}
Untuk melihat cara permintaan REST API yang mendasarinya dibuat untuk tugas ini, lihat APIs Explorer di halaman instances:insert.

REST v1beta4

Jangan menyertakan informasi sensitif atau informasi identitas pribadi (PII) dalam nama instance Anda karena dapat terlihat secara eksternal.

Anda tidak perlu menyertakan ID project dalam nama instance. ID project 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: the project ID
  • 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 yang mendasarinya dibuat untuk tugas ini, lihat APIs Explorer di halaman instances:insert.

Mengonfigurasi instance yang ada untuk autentikasi database IAM

Untuk mengonfigurasi instance Cloud SQL yang ada untuk autentikasi database IAM, Anda harus mengaktifkan flag cloudsql.iam_authentication. Setelah mengaktifkan tanda ini, Anda dapat menambahkan pengguna, akun layanan, atau grup IAM ke instance Cloud SQL.

Untuk mengonfigurasi instance Cloud SQL yang ada agar menggunakan autentikasi database IAM:

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

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 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 menyetel flag database, lihat Menetapkan flag database.


REST v1

Sebelum menggunakan salah satu data permintaan, buatlah pengganti berikut:

  • PROJECT_ID: the project ID
  • 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/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/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/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
  • 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 berikutnya