Mengonfigurasi rotasi otomatis untuk secret Cloud SQL

Halaman ini menjelaskan cara mengonfigurasi rotasi otomatis untuk kredensial database Cloud SQL Anda di Secret Manager.

Sebelum memulai

  • Pastikan instance Cloud SQL Anda menggunakan jenis mesin database yang didukung, seperti PostgreSQL atau SQL Server.
  • Pastikan Anda menggunakan rahasia regional. Rotasi otomatis untuk kredensial Cloud SQL hanya tersedia untuk secret regional di Secret Manager. Secret global tidak mendukung fitur ini.
  • Pastikan Anda memiliki instance Cloud SQL dan pengguna database yang sudah ada. Untuk mengetahui informasi selengkapnya, lihat Membuat instance dan Membuat dan mengelola pengguna.
  • Pastikan Anda memiliki izin untuk mengelola kebijakan IAM pada instance Cloud SQL Anda. Untuk mengetahui informasi selengkapnya, lihat Peran dan izin.

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk mengaktifkan rotasi otomatis, minta administrator Anda untuk memberi Anda peran yang berisi izin berikut:

  • cloudsql.users.list
  • cloudsql.users.update

Anda bisa mendapatkan izin ini dengan peran standar atau peran khusus. Untuk mengetahui peran mana yang terkait dengan izin apa, lihat Peran IAM untuk Cloud SQL.

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

Membuat secret kredensial database Cloud SQL

Untuk mengaktifkan rotasi otomatis, Anda harus membuat secret jenis Cloud SQL DB credentials.

Konsol

  1. Di konsol Cloud de Confiance , buka halaman Secret Manager.

    Buka Secret Manager

  2. Di halaman Secret Manager, klik tab Regional secrets, lalu klik Create regional secret.

  3. Di halaman Buat secret regional, masukkan nama untuk secret di kolom Name.

  4. Centang kotak Set secret type dan pilih Cloud SQL DB credentials sebagai jenis rahasia.

  5. Pilih lokasi tempat Anda ingin secret regional disimpan dari daftar Region.

  6. (Opsional) Di bagian Rotation, konfigurasikan jadwal rotasi untuk secret Anda. Jika Anda tidak mengonfigurasi jadwal rotasi, Anda harus merotasi secret secara manual.

    1. Centang kotak Tetapkan periode rotasi.

    2. Dalam daftar Periode rotasi, pilih dari opsi default atau pilih Kustom untuk mengonfigurasi jadwal rotasi Anda sendiri.

    3. Di kolom Mulai pada, masukkan tanggal dan waktu mulai periode rotasi.

  7. Klik Create secret.

gcloud

Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

  • SECRET_ID: ID secret
  • LOCATION: Cloud de Confiance by S3NS lokasi secret

Jalankan perintah berikut:

Linux, macOS, atau Cloud Shell

gcloud secrets create SECRET_ID \
    --location=LOCATION \
    --secret-type=CLOUD_SQL_DB_CREDENTIALS

Windows (PowerShell)

gcloud secrets create SECRET_ID `
    --location=LOCATION `
    --secret-type=CLOUD_SQL_DB_CREDENTIALS

Windows (cmd.exe)

gcloud secrets create SECRET_ID ^
    --location=LOCATION ^
    --secret-type=CLOUD_SQL_DB_CREDENTIALS

Anda akan melihat respons seperti berikut:

Created secret [projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID].

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • LOCATION: Cloud de Confiance by S3NS lokasi secret
  • PROJECT_ID: Cloud de Confiance by S3NS project ID
  • SECRET_ID: ID secret

Metode HTTP dan URL:

POST https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID

Meminta isi JSON:

{
  "secretType": "CLOUD_SQL_DB_CREDENTIALS"
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID"

PowerShell

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID" | Select-Object -Expand Content

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2026-07-28T05:00:00Z",
  "secretType": "CLOUD_SQL_DB_CREDENTIALS",
  "etag": "\"1a2b3c4d\"",
  "policyMember": {
    "iamPolicyUidPrincipal": "principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID"
  }
}

Memberikan izin ke identitas secret bawaan

Setiap rahasia memiliki ID unik yang membedakannya dari semua resource lain di project Cloud de Confiance by S3NS Anda. Anda harus memberikan izin yang diperlukan kepada identitas bawaan yang diperlukan untuk memperbarui kredensial di instance Cloud SQL Anda. Untuk mengetahui informasi selengkapnya, lihat Memberikan peran ke resource dengan identitas bawaan.

Konsol

  1. Di halaman detail secret, buka tab Ringkasan.

  2. Catat ID utama IAM rahasia.

    ID memiliki format berikut: principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID.

  3. Di konsol Cloud de Confiance , buka halaman IAM.

    Buka IAM

  4. Klik Grant access.

    Panel Berikan akses akan muncul.

  5. Di kolom New principals, masukkan ID akun utama IAM rahasia.

  6. Dari daftar Select a role, pilih peran yang memberikan izin yang diperlukan.

    Untuk mengetahui informasi selengkapnya, lihat Peran yang diperlukan.

  7. Klik Simpan.

gcloud

Mendapatkan identitas rahasia

Sebelum Anda memberikan izin IAM, deskripsikan rahasia untuk mendapatkan identitas bawaan iamPolicyUidPrincipal. Anda menentukan string identitas ini di flag --member saat menambahkan binding kebijakan IAM.

Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

  • SECRET_ID: ID secret
  • LOCATION: Cloud de Confiance by S3NS lokasi secret

Jalankan perintah berikut:

Linux, macOS, atau Cloud Shell

gcloud secrets describe SECRET_ID \
    --location=LOCATION \
    --format="value(policyMember.iamPolicyUidPrincipal)"

Windows (PowerShell)

gcloud secrets describe SECRET_ID `
    --location=LOCATION `
    --format="value(policyMember.iamPolicyUidPrincipal)"

Windows (cmd.exe)

gcloud secrets describe SECRET_ID ^
    --location=LOCATION ^
    --format="value(policyMember.iamPolicyUidPrincipal)"

Anda akan melihat respons seperti berikut:

principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID

Memberikan peran IAM ke identitas rahasia

Beri peran IAM yang berisi izin Cloud SQL yang diperlukan (seperti cloudsql.users.update dan cloudsql.users.list, atau peran roles/cloudsql.admin bawaan) kepada akun utama identitas rahasia yang diambil pada langkah sebelumnya:

Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

  • PROJECT_ID: Cloud de Confiance by S3NS project ID
  • PROJECT_NUMBER: nomor project Cloud de Confiance by S3NS numerik
  • LOCATION: Cloud de Confiance by S3NS lokasi secret
  • SECRET_UID: ID unik yang dibuat sistem untuk resource rahasia
  • ROLE: peran IAM yang diberikan ke identitas rahasia

Jalankan perintah berikut:

Linux, macOS, atau Cloud Shell

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID" \
    --role="ROLE"

Windows (PowerShell)

gcloud projects add-iam-policy-binding PROJECT_ID `
    --member="principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID" `
    --role="ROLE"

Windows (cmd.exe)

gcloud projects add-iam-policy-binding PROJECT_ID ^
    --member="principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID" ^
    --role="ROLE"

REST

Mendapatkan identitas rahasia

Sebelum Anda memberikan izin IAM, ambil detail rahasia untuk mendapatkan identitas bawaan iamPolicyUidPrincipal. Anda menentukan string identitas ini dalam JSON permintaan saat menetapkan kebijakan IAM.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • LOCATION: Cloud de Confiance by S3NS lokasi secret
  • PROJECT_ID: Cloud de Confiance by S3NS project ID
  • SECRET_ID: ID secret

Metode HTTP dan URL:

GET https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID

Meminta isi JSON:

{
  "policy": {
    "bindings": [
      {
        "role": "ROLE",
        "members": [
          "principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID"
        ]
      }
    ]
  }
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID"

PowerShell

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID" | Select-Object -Expand Content

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2026-07-28T05:00:00Z",
  "secretType": "CLOUD_SQL_DB_CREDENTIALS",
  "etag": "\"1a2b3c4d\"",
  "policyMember": {
    "iamPolicyUidPrincipal": "principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID"
  }
}

Memberikan peran IAM ke identitas rahasia

Beri peran IAM yang berisi izin Cloud SQL yang diperlukan (seperti cloudsql.users.update dan cloudsql.users.list, atau peran roles/cloudsql.admin bawaan) kepada akun utama identitas rahasia yang diambil pada langkah sebelumnya:

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Cloud de Confiance by S3NS project ID
  • ROLE: peran IAM yang diberikan ke identitas rahasia
  • PROJECT_NUMBER: nomor project numerik Cloud de Confiance by S3NS
  • LOCATION: Cloud de Confiance by S3NS lokasi secret
  • SECRET_UID: ID unik yang dibuat sistem untuk resource rahasia

Metode HTTP dan URL:

POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy

Meminta isi JSON:

{
  "policy": {
    "bindings": [
      {
        "role": "ROLE",
        "members": [
          "principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID"
        ]
      }
    ]
  }
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy"

PowerShell

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy" | Select-Object -Expand Content

Anda akan melihat respons JSON seperti berikut:

{
  "version": 1,
  "etag": "BwWWv0I7vBw=",
  "bindings": [
    {
      "role": "roles/cloudsql.admin",
      "members": [
        "principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID"
      ]
    }
  ]
}

Merotasi secret Anda

Status rotasi secret Cloud SQL yang baru dibuat adalah Disabled hingga rotasi pertama berhasil. Anda harus memutar rahasia Anda secara manual untuk memverifikasi izin dan memulai jadwal rotasi otomatis.

Konsol

  1. Di konsol Cloud de Confiance , buka halaman Secret Manager.

    Buka Secret Manager

  2. Di halaman Secret Manager, klik tab Regional secrets.

  3. Klik nama rahasia untuk membuka halaman detail rahasia.

  4. Klik Rotate.

    Panel Rotate secret akan muncul.

  5. Tentukan ID instance dan nama pengguna instance Cloud SQL yang ingin Anda perbarui.

  6. (Opsional) Luaskan bagian Setelan tambahan untuk memasukkan sandi tertentu. Jika dibiarkan kosong, Secret Manager akan otomatis membuat sandi acak yang kuat.

  7. Klik Rotate.

gcloud

Mengaktifkan rotasi terkelola

Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

Jalankan perintah berikut:

Linux, macOS, atau Cloud Shell

gcloud secrets enable-managed-rotation SECRET_ID \
    --location=LOCATION \
    --instance-id=INSTANCE_ID \
    --username=USERNAME

Windows (PowerShell)

gcloud secrets enable-managed-rotation SECRET_ID `
    --location=LOCATION `
    --instance-id=INSTANCE_ID `
    --username=USERNAME

Windows (cmd.exe)

gcloud secrets enable-managed-rotation SECRET_ID ^
    --location=LOCATION ^
    --instance-id=INSTANCE_ID ^
    --username=USERNAME

Merotasi secret Anda secara manual

Picu rotasi manual langsung untuk membuat versi rahasia awal dan memverifikasi konektivitas.

Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

  • SECRET_ID: ID secret
  • LOCATION: Cloud de Confiance by S3NS lokasi secret

Jalankan perintah berikut:

Linux, macOS, atau Cloud Shell

gcloud secrets rotate-secret SECRET_ID \
    --location=LOCATION

Windows (PowerShell)

gcloud secrets rotate-secret SECRET_ID `
    --location=LOCATION

Windows (cmd.exe)

gcloud secrets rotate-secret SECRET_ID ^
    --location=LOCATION

Anda akan melihat respons seperti berikut:

Name: projects/PROJECT_NUMBER/locations/LOCATION/secrets/SECRET_ID/versions/1
State: ENABLED

REST

Mengaktifkan rotasi terkelola

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

Metode HTTP dan URL:

POST https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID:enableManagedRotation

Meminta isi JSON:

{
  "cloudSqlSingleUserCredentials": {
    "instanceId": "INSTANCE_ID",
    "username": "USERNAME"
  }
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID:enableManagedRotation"

PowerShell

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID:enableManagedRotation" | Select-Object -Expand Content

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/secrets/SECRET_ID/versions/1",
  "createTime": "2026-07-28T05:00:00Z",
  "state": "ENABLED"
}

Merotasi secret Anda secara manual

Picu rotasi manual langsung untuk membuat versi rahasia awal dan memverifikasi konektivitas.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • LOCATION: Cloud de Confiance by S3NS lokasi secret
  • PROJECT_ID: Cloud de Confiance by S3NS project ID
  • SECRET_ID: ID secret

Metode HTTP dan URL:

POST https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID:rotateSecret

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Jalankan perintah berikut:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID:rotateSecret"

PowerShell

Jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID:rotateSecret" | Select-Object -Expand Content

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/secrets/SECRET_ID/versions/1",
  "createTime": "2026-07-28T05:00:00Z",
  "state": "ENABLED"
}

Secret Manager mencoba memperbarui kredensial di instance Cloud SQL Anda. Jika berhasil, Status rotasi akan berubah menjadi Enabled, dan timer rotasi otomatis terjadwal akan dimulai.

Langkah berikutnya