Menggunakan kunci enkripsi yang dikelola pelanggan (CMEK)

Halaman ini menjelaskan cara menyiapkan akun layanan dan kunci untuk kunci enkripsi yang dikelola pelanggan, dan cara membuat instance yang menggunakan kunci enkripsi yang dikelola pelanggan yang dibuat secara manual. Untuk mempelajari lebih lanjut cara menggunakan kunci enkripsi yang dikelola pelanggan dengan Cloud SQL, lihat Ringkasan kunci enkripsi yang dikelola pelanggan.

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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  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 di akun pengguna.

    Buka halaman IAM

  11. Enable the Cloud Key Management Service API.

    Enable the API

  12. Enable the Cloud SQL Admin API.

    Enable the API

Alur kerja untuk membuat instance Cloud SQL dengan CMEK

  1. Khusus pengguna gcloud dan API: Membuat akun layanan untuk setiap project yang memerlukan kunci enkripsi yang dikelola pelanggan.
  2. Buat keyring dan kunci, lalu tetapkan lokasi untuk setiap kunci. Lokasinya adalah region Google Cloud.
  3. Khusus pengguna gcloud dan API: Memberi akun layanan akses ke kunci.
  4. Catat ID kunci (KMS_KEY_ID), lokasi kunci (GCP_REGION), dan ID key ring (KMS_KEYRING_ID).
  5. Buka project dan buat instance Cloud SQL dengan opsi berikut:
    1. Lokasi yang sama dengan kunci enkripsi yang dikelola pelanggan
    2. Konfigurasi kunci yang dikelola pelanggan
    3. Kunci enkripsi ID yang dikelola pelanggan

Instance Cloud SQL Anda sekarang diaktifkan dengan CMEK.

Membuat akun layanan

Anda perlu membuat akun layanan untuk setiap project yang memerlukan kunci enkripsi yang dikelola pelanggan.

Untuk mengizinkan pengguna mengelola akun layanan, berikan salah satu peran berikut:

  • Pengguna Akun Layanan (roles/iam.serviceAccountUser): Mencakup izin untuk mencantumkan akun layanan, mendapatkan detail tentang akun layanan, dan meniru identitas akun layanan.
  • Admin Akun Layanan (roles/iam.serviceAccountAdmin): Mencakup izin untuk mencantumkan akun layanan dan mendapatkan detail tentang akun layanan. Juga mencakup izin untuk membuat, memperbarui, dan menghapus akun layanan serta melihat atau mengubah kebijakan Cloud SQL untuk PostgreSQL di akun layanan.

Saat ini, Anda hanya dapat menggunakan perintah gcloud CLI untuk membuat jenis akun layanan yang diperlukan untuk kunci enkripsi yang dikelola pelanggan. Jika Anda menggunakan Konsol, Cloud SQL akan otomatis membuat akun layanan ini untuk Anda.

gcloud

gcloud beta services identity create \
--service=sqladmin.googleapis.com \
--project=PROJECT_ID

Terraform

Untuk membuat akun layanan, gunakan resource Terraform.

resource "google_project_service_identity" "gcp_sa_cloud_sql" {
  provider = google-beta
  service  = "sqladmin.googleapis.com"
}

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.

Perintah sebelumnya menampilkan nama akun layanan. Anda dapat menggunakan nama akun layanan ini selama prosedur di bagian Memberi akun layanan akses ke kunci.

Buat kunci

Anda dapat membuat kunci di project Google Cloud yang sama dengan instance Cloud SQL atau di project pengguna yang terpisah. Lokasi key ring Cloud KMS harus cocok dengan region tempat Anda ingin membuat instance Cloud SQL. Kunci multi-region atau region global tidak akan berfungsi. Permintaan pembuatan instance Cloud SQL akan gagal jika region tidak cocok.

Untuk membuat kunci Cloud KMS:

Konsol

  1. Di konsol Google Cloud, buka halaman Key management.

    Buka Key management

  2. Klik Create key ring.
  3. Tambahkan Nama key ring. Catat nama ini karena Anda akan memerlukannya saat memberikan akses ke kunci tersebut kepada akun layanan.
  4. Tambahkan Lokasi key ring.
  5. Klik Buat. Halaman Buat kunci akan terbuka.
  6. Tambahkan Nama kunci.
  7. Untuk Tujuan, pilih Symmetric encrypt/decrypt.
  8. Pilih Periode rotasi dan Mulai pada tanggal.
  9. Klik Buat.
  10. Pada tabel Kunci , klik tiga titik di kolom terakhir, lalu pilih Salin ID resource atau tuliskan. Kunci ini adalah KMS_KEY_ID. Anda memerlukan KMS_KEY_ID saat memberikan akses kunci ke akun layanan.

gcloud

  1. Buat key ring baru.
    gcloud kms keyrings create KMS_KEYRING_ID \
    --location=GCP_REGION
      
    Tuliskan nama ini karena Anda akan memerlukannya saat memberikan akses kunci ke akun layanan.
  2. Buat kunci pada key ring.
    gcloud kms keys create KMS_KEY_ID \
    --location=GCP_REGION \
    --keyring=KMS_KEYRING_ID \
    --purpose=encryption
      
    Tuliskan nama ini karena Anda akan memerlukannya saat memberikan akses kunci ke akun layanan.

Terraform

Untuk membuat keyring, gunakan resource Terraform.

resource "google_kms_key_ring" "keyring" {
  provider = google-beta
  name     = "keyring-name"
  location = "us-central1"
}

Untuk membuat kunci, gunakan resource Terraform.

resource "google_kms_crypto_key" "key" {
  provider = google-beta
  name     = "crypto-key-name"
  key_ring = google_kms_key_ring.keyring.id
  purpose  = "ENCRYPT_DECRYPT"
}

Terapkan konfigurasi Terraform:

terraform apply

Beri akses akun layanan ke kunci

Saat membuat instance Cloud SQL dengan CMEK, Anda hanya perlu melakukan prosedur ini jika menggunakan gcloud atau API. Anda dapat melakukan prosedur ini jika mengalami masalah izin setelah instance dibuat.

Untuk memberikan akses akun layanan:

Konsol

  1. Di konsol Google Cloud, buka halaman Key management.

    Buka Key management

  2. Untuk memilih project yang menghosting kunci, gunakan pemilih project.
  3. Klik nama key ring.
  4. Klik nama kunci.
  5. Klik tab Izin.
  6. Untuk membuka panel, klik Berikan akses.
  7. Masukkan akun layanan sebagai akun utama dan pilih "Cloud KMS CryptoKey Encrypter/Decrypter" sebagai peran.
  8. Klik Simpan.

Atau, Anda juga dapat memberikannya di halaman IAM project.

BUKA HALAMAN IAM PROJECT

gcloud

gcloud kms keys add-iam-policy-binding KMS_KEY_ID \
--location=GCP_REGION \
--keyring=KMS_KEYRING_ID \
--member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloud-sql.iam.gserviceaccount.com \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter

Terraform

Untuk memberikan akses ke kunci, gunakan resource Terraform.

resource "google_kms_crypto_key_iam_binding" "crypto_key" {
  provider      = google-beta
  crypto_key_id = google_kms_crypto_key.key.id
  role          = "roles/cloudkms.cryptoKeyEncrypterDecrypter"

  members = [
    "serviceAccount:${google_project_service_identity.gcp_sa_cloud_sql.email}",
  ]
}

Terapkan konfigurasi Terraform:

terraform apply

Membuat instance Cloud SQL dengan CMEK

Untuk membuat instance dengan kunci enkripsi yang dikelola pelanggan:

Konsol

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

    Buka Instance Cloud SQL

  2. Klik Buat instance.
  3. Pilih mesin database.
  4. Masukkan nama untuk instance. Jangan menyertakan informasi sensitif atau informasi identitas pribadi dalam nama instance Anda; informasi ini terlihat secara eksternal. Anda tidak perlu menyertakan project ID dalam nama instance. ID ini dibuat secara otomatis jika diperlukan (misalnya, di file log).
  5. Masukkan sandi untuk 'root'@'%' pengguna.
  6. Tetapkan region untuk instance Anda. Tempatkan instance Anda di region yang sama dengan resource yang mengaksesnya. Pada sebagian besar kasus, Anda tidak perlu menentukan zona.
  7. Di bagian Opsi konfigurasi, pilih semua opsi konfigurasi hingga Anda mencapai Jenis mesin dan penyimpanan.
  8. Perluas Jenis mesin dan penyimpanan.
  9. Di bagian Enkripsi, pilih Kunci yang dikelola pelanggan.
  10. Pilih kunci KMS dari menu dropdown atau masukkan KMS_KEY_ID secara manual. Hanya kunci KMS dalam project dan region yang sama dengan instance yang ditampilkan. Versi kunci utama dari kunci digunakan, sehingga jika versi kunci diberikan dalam nama kunci, versi tersebut akan dipangkas. Untuk memilih kunci KMS milik project lain tetapi berada di region yang sama, pilih Tidak melihat kunci Anda? Masukkan kunci ID resource dan masukkan KMS_KEY_ID yang diambil sebelumnya.
  11. Jika akun layanan tidak memiliki izin untuk mengenkripsi/mendekripsi dengan kunci yang dipilih, pesan akan ditampilkan. Jika hal ini terjadi, klik Grant untuk untuk memberikan peran IAM pada akun layanan roles/cloudkms.cryptoKeyEncrypterDecrypter> dengan kunci KMS yang dipilih.
  12. Setelah opsi konfigurasi dipilih, klik Buat.
  13. Anda melihat pesan yang menjelaskan implikasi penggunaan kunci enkripsi yang dikelola pelanggan. Baca dan konfirmasi untuk melanjutkan pembuatan instance.

gcloud

gcloud sql instances create INSTANCE_NAME \
--project=PROJECT_ID \
--disk-encryption-key=KMS_KEY_ID \
--database-version=VERSION \
--cpu=NUMBER_CPUS \
--memory=MEMORY_SIZE \
--region=REGION \
--root-password=INSERT-PASSWORD-HERE

Terraform

Untuk membuat instance dengan CMEK, gunakan resource Terraform.

resource "google_sql_database_instance" "postgres_instance_with_cmek" {
  name                = "postgres-instance-cmek"
  provider            = google-beta
  region              = "us-central1"
  database_version    = "POSTGRES_14"
  encryption_key_name = google_kms_crypto_key.key.id
  settings {
    tier = "db-custom-2-7680"
  }
  # 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
}

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

Untuk membuat instance dengan kunci enkripsi yang dikelola pelanggan, teruskan diskEncryptionConfiguration ke perintah.

Sebelum menggunakan salah satu data permintaan, buat pengganti berikut:

  • project-id: ID project
  • instance-id: ID instance
  • region: Region
  • database-version: String versi Emum (misalnya, POSTGRES_12)
  • kms-resource-id: ID yang Anda terima setelah membuat kunci.

Metode HTTP dan URL:

POST https://sqladmin.googleapis.com/v1/projects/project-id/instances

Meminta isi JSON:

{
  "name":"instance-id",
  "region":"region",
  "databaseVersion": "database-version",
  "diskEncryptionConfiguration" :
  {
      "kmsKeyName" : "kms-resource-id"
  },
  "settings":
  {
     "backupConfiguration":
      {
         "pointInTimeRecoveryEnabled": true,
         "enabled":true
      }
   }
}

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",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "UPDATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}
Contoh ini menggunakan instances:insert.

REST v1beta4

Untuk membuat instance dengan kunci enkripsi yang dikelola pelanggan, teruskan diskEncryptionConfiguration ke perintah.

Sebelum menggunakan salah satu data permintaan, buat pengganti berikut:

  • project-id: ID project
  • instance-id: ID instance
  • region: Region
  • database-version: String versi Emum (misalnya, POSTGRES_12)
  • kms-resource-id: ID yang Anda terima setelah membuat kunci.

Metode HTTP dan URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances

Meminta isi JSON:

{
  "name":"instance-id",
  "region":"region",
  "databaseVersion": "database-version",
  "diskEncryptionConfiguration" :
  {
      "kmsKeyName" : "kms-resource-id"
  },
  "settings":
  {
     "backupConfiguration":
      {
         "pointInTimeRecoveryEnabled": true,
         "enabled":true
      }
   }
}

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",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "UPDATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}
Contoh ini menggunakan instances:insert.

Membuat cadangan untuk instance yang mendukung CMEK

Saat Anda membuat cadangan instance Cloud SQL, cadangan akan dienkripsi dengan versi kunci utama yang sama dengan kunci yang dikelola pelanggan dari instance utama. Jika instance Anda menggunakan CMEK yang dibuat oleh Autokey Cloud KMS, cadangan masih menggunakan kunci yang sama dengan instance utama; Autokey tidak membuat kunci untuk cadangan.

Lihat Membuat dan mengelola pencadangan sesuai permintaan dan pencadangan otomatis.

Anda akan melihat pesan pada formulir Buat cadangan yang bertuliskan: "Cadangan Anda akan dienkripsi dengan versi utama kunci enkripsi yang dikelola pelanggan dari instance ini. Jika versi kunci ini dimusnahkan atau dinonaktifkan, semua data cadangan yang dienkripsi dengan versi kunci tersebut akan dihapus secara permanen. Anda dapat memeriksa versi utama untuk kunci tersebut di Cloud KMS."

Di halaman cadangan, daftar cadangan yang diaktifkan dengan kunci enkripsi yang dikelola pelanggan memiliki dua kolom tambahan. Satu kolom yang menunjukkan bahwa cadangan adalah untuk instance yang mendukung CMEK, dan kolom yang menampilkan versi kunci yang digunakan untuk mengenkripsi cadangan.

Membuat replika untuk instance yang mendukung CMEK

Saat Anda membuat instance replika baca Cloud SQL di region yang sama, replika tersebut akan mewarisi kunci enkripsi yang dikelola pelanggan yang sama dengan instance induk. Jika Anda membuat replika baca di region yang berbeda, Anda akan diberi daftar baru kunci enkripsi yang dikelola pelanggan untuk dipilih. Setiap region menggunakan kumpulan kuncinya sendiri.

Lihat Membuat replika baca.

Di halaman Buat replika baca, Anda melihat informasi berikut:

  1. Enkripsi menampilkan dikelola pelanggan.
  2. Kunci enkripsi untuk replika ditampilkan.
  3. Ada pesan yang menyatakan "Replika Anda akan dienkripsi dengan kunciinstance utama yang dikelola pelanggan. Jika kunci ini dihancurkan, semua data yang dienkripsi dengan kunci tersebut akan dihapus secara permanen."

Untuk replika lintas-region, Anda akan melihat pesan berikut:

"Replika lintas region Anda akan dienkripsi dengan kunci yang dikelola pelanggan yang dipilih. Jika kunci ini dihancurkan, semua data yang dienkripsi dengan kunci tersebut akan dihapus secara permanen."

Membuat clone instance yang mendukung CMEK

Saat Anda membuat clone instance Cloud SQL, clone tersebut akan mewarisi kunci enkripsi yang dikelola pelanggan yang sama dengan yang digunakan untuk mengenkripsi instance sumber.

Lihat Instance meng-clone.

Di halaman Buat clone, Anda akan melihat informasi berikut:

  1. Enkripsi menampilkan dikelola pelanggan.
  2. Kunci enkripsi untuk clone ditampilkan.
  3. Muncul pesan yang menyatakan "clone Anda akan dienkripsi dengan kunci yang dikelola pelanggan pada instance sumber. Jika kunci ini dihancurkan, semua data yang dienkripsi dengan kunci tersebut akan dihapus secara permanen."

Melihat informasi penting untuk instance yang mendukung CMEK

Setelah berhasil membuat instance Cloud SQL, Anda dapat melihat daftar instance atau halaman ringkasan instance untuk melihat bahwa instance tersebut dibuat menggunakan kunci enkripsi yang dikelola pelanggan. Detail tersebut juga menunjukkan kunci yang digunakan untuk membuat instance.

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

    Buka Instance Cloud SQL

  2. Dalam daftar Instance, scroll ke kanan sampai Anda melihat kolom Enkripsi . Dalam kolom ini, Anda akan melihat Dikelola Google dan Dikelola pelanggan.
  3. Klik nama instance untuk membuka halaman Ringkasan. Kunci enkripsi yang dikelola pelanggan tercantum di panel Konfigurasi .

Enkripsi ulang instance atau replika berkemampuan CMEK yang ada

Anda dapat mengenkripsi ulang instance dan replika Cloud SQL yang ada dengan versi kunci utama terbaru. Untuk mengetahui informasi selengkapnya tentang mengenkripsi ulang instance atau replika aktif CMEK yang ada, lihat Tentang kunci.

Memperoleh versi kunci utama yang baru

  • Untuk mengenkripsi ulang instance atau replika dengan versi baru, Anda memerlukan versi kunci utama baru. Jika memerlukan versi kunci baru untuk instance, Anda harus merotasi kunci menggunakan Cloud Key Management Service. Untuk merotasi kunci utama, lihat Merotasi kunci.

  • Setelah rotasi kunci Anda selesai, tunggu hingga perubahan kunci utama diterapkan sebelum Anda mengenkripsi ulang instance. Jika perubahan versi kunci Anda tidak konsisten, instance Anda akan terus menggunakan versi kunci lama setelah enkripsi ulang. Untuk informasi selengkapnya, lihat Konsistensi versi kunci.

Enkripsi ulang instance berkemampuan CMEK

Setelah rotasi kunci selesai, enkripsi ulang instance atau replika yang mendukung CMEK Anda.

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. Di bagian Konfigurasi, klik Enkripsi ulang instance.
  4. Pada dialog yang muncul, konfirmasi pilihan Anda dengan mengklik Enkripsi ulang.

gcloud

Untuk mengenkripsi ulang instance atau replika, jalankan perintah berikut:

gcloud sql instances reencrypt INSTANCE_NAME
Ganti INSTANCE_NAME dengan nama instance atau replika yang Anda enkripsi ulang.

REST v1

Untuk mengenkripsi ulang instance atau replika dengan kunci baru Anda, jalankan perintah berikut:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/reencrypt

Sebelum menggunakan salah satu data permintaan, buat pengganti berikut:

  • PROJECT_ID: ID project
  • INSTANCE_ID: ID instance

Metode HTTP dan URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/reencrypt

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": "PENDING",
  "user": "user@example.com",
  "insertTime": "2023-06-28T21:19:09.503Z",
  "operationType": "REENCRYPT",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

REST v1beta4

Untuk mengenkripsi ulang instance atau replika dengan kunci baru Anda, jalankan perintah berikut:
    POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/reencrypt

Sebelum menggunakan salah satu data permintaan, buat penggantian berikut:

  • PROJECT_ID: ID project
  • INSTANCE_ID: ID instance

Metode HTTP dan URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/reencrypt

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": "PENDING",
  "user": "user@example.com",
  "insertTime": "2023-06-28T21:22:13.663Z",
  "operationType": "REENCRYPT",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Cadangan enkripsi ulang otomatis

Saat Anda mengenkripsi ulang instance utama dengan versi kunci utama baru, Cloud SQL secara otomatis membuat cadangan sesuai permintaan yang disebut cadangan enkripsi ulang.

Dalam daftar cadangan untuk instance Cloud SQL, cadangan enkripsi ulang dicantumkan sebagai jenis on-demand dan diberi label dengan backup created automatically for data before CMEK re-encryption.

Seperti cadangan sesuai permintaan lainnya, cadangan enkripsi ulang akan tetap ada hingga Anda menghapusnya atau menghapus instance.

Batasan enkripsi ulang

Saat Anda mengenkripsi ulang instance, perhatikan batasan berikut:

  • Anda tidak dapat melakukan operasi admin lain pada instance saat operasi enkripsi ulang sedang berlangsung.
  • Operasi enkripsi ulang memicu periode nonaktif yang bergantung pada ukuran replika atau instance.
  • Replika instance tidak dienkripsi ulang jika suatu instance terenkripsi. Anda perlu mengenkripsi ulang setiap replika secara terpisah.
  • Cadangan tidak secara otomatis dienkripsi ulang dengan versi kunci baru saat Anda mengenkripsi ulang instance. Untuk memulihkan cadangan atau pemulihan point-in-time ke waktu setelah cadangan diambil, Anda harus menyimpan versi kunci Cloud KMS yang digunakan untuk mengenkripsi cadangan.

Untuk pemecahan masalah, lihat tabel pemecahan masalah enkripsi ulang.

Gunakan Cloud External Key Manager (Cloud EKM)

Untuk melindungi data dalam instance Cloud SQL, Anda dapat menggunakan kunci yang Anda kelola dalam partner pengelolaan kunci eksternal yang didukung. Untuk informasi selengkapnya, lihat Cloud External Key Manager, termasuk bagian Pertimbangan .

Jika Anda sudah siap untuk membuat kunci Cloud EKM, lihat Mengelola kunci Cloud EKM. Setelah kunci dibuat, masukkan nama kunci tersebut saat Anda membuat instance Cloud SQL.

Anda dapat menggunakan Key Access Justifications (KAJ) sebagai bagian dari Cloud EKM. KAJ memungkinkan Anda melihat alasan setiap permintaan Cloud EKM. Selain itu, berdasarkan justifikasi yang diberikan, Anda dapat otomatis menyetujui atau menolak permintaan. Untuk mempelajari lebih lanjut, lihat Ringkasan.

Dengan demikian, KAJ memberikan kontrol tambahan atas data Anda dengan memberikan justifikasi untuk setiap upaya untuk mendekripsi data.

Google tidak memiliki kontrol atas ketersediaan kunci dalam sistem partner pengelolaan kunci eksternal.

Menonaktifkan dan mengaktifkan kembali versi kunci

Lihat topik berikut:

Memecahkan masalah

Bagian ini menjelaskan hal-hal yang perlu dicoba saat Anda menerima pesan error saat menyiapkan atau menggunakan instance yang mendukung CMEK.

Operasi administrator Cloud SQL, seperti pembuatan, clone, atau update, mungkin gagal karena error Cloud KMS, dan tidak ada peran atau izin. Penyebab kegagalan umum meliputi hilangnya versi kunci Cloud KMS, versi kunci Cloud KMS dinonaktifkan atau dihancurkan, izin IAM tidak memadai untuk mengakses versi kunci Cloud KMS, atau versi kunci Cloud KMS berada dalam region yang berbeda dengan instance Cloud SQL. Gunakan tabel pemecahan masalah berikut untuk mendiagnosis dan menyelesaikan masalah umum.

Tabel pemecahan masalah kunci enkripsi yang dikelola pelanggan

Untuk error ini... Masalahnya mungkin adalah... Coba langkah ini...
Akun layanan per-project, per-produk tidak ditemukan Nama akun layanan tersebut tidak tepat. Pastikan Anda membuat akun layanan untuk project pengguna yang tepat.

BUKA HALAMAN AKUN LAYANAN.

Tidak dapat memberikan akses ke akun layanan. Akun pengguna tidak memiliki izin untuk memberikan akses ke akun layanan ini. Tambahkan peran Organization Administrator ke akun pengguna atau layanan Anda.

BUKA HALAMAN AKUN IAM

Versi kunci Cloud KMS dihancurkan Versi kunci tersebut sudah dihancurkan. Jika versi kunci tersebut dihancurkan, Anda tidak dapat menggunakannya untuk mengenkripsi atau mendekripsi data.
Versi kunci Cloud KMS dinonaktifkan Versi kunci tersebut dinonaktifkan. Aktifkan kembali versi kunci Cloud KMS.

BUKA HALAMAN KUNCI KRIPTO

Izin tidak memadai untuk menggunakan kunci Cloud KMS Peran cloudkms.cryptoKeyEncrypterDecrypter hilang pada akun pengguna atau layanan yang Anda gunakan untuk menjalankan operasi pada instance Cloud SQL, atau versi kunci Cloud KMS tidak ada. Di project Google Cloud yang menghosting kunci, tambahkan peran cloudkms.cryptoKeyEncrypterDecrypter ke akun pengguna atau layanan Anda.

BUKA HALAMAN AKUN IAM


Jika peran tersebut sudah diberikan ke akun Anda, lihat Membuat kunci untuk mempelajari cara membuat versi kunci baru. Lihat catatan.
Kunci Cloud KMS tidak ditemukan. Versi kunci tersebut tidak ada. Buat versi kunci baru. Lihat Membuat kunci. Lihat catatan.
Instance Cloud SQL dan versi kunci Cloud KMS berada di region yang berbeda. Instance Cloud SQL dan versi kunci Cloud KMS harus berada dalam region yang sama. Tindakan ini tidak dapat dilakukan jika versi kunci Cloud KMS berada di region global atau multi-region. Buat versi kunci pada region yang sama di mana Anda membuat instance. Lihat Membuat kunci. Lihat catatan.
Versi kunci Cloud KMS dipulihkan, tetapi instance masih ditangguhkan Versi kunci dinonaktifkan atau tidak memberikan izin yang memadai. Aktifkan kembali versi kunci, dan berikan peran cloudkms.cryptoKeyEncrypterDecrypter kepada pengguna atau akun layanan Anda di project Google Cloud yang menghosting kunci.

Tabel pemecahan masalah enkripsi ulang

Untuk error ini... Masalahnya mungkin adalah... Coba langkah ini...
Enkripsi ulang resource CMEK gagal karena kunci Cloud KMS tidak dapat diakses. Pastikan versi kunci utama diaktifkan dan izin tersebut diberikan dengan tepat. Versi kunci dinonaktifkan atau tidak memberikan izin yang memadai.

Mengaktifkan kembali versi kunci Cloud KMS:

BUKA HALAMAN KUNCI KRIPTO

Di project Google Cloud yang menghosting kunci, pastikan peran cloudkms.cryptoKeyEncrypterDecrypter diberikan ke akun pengguna atau layanan Anda:

BUKA HALAMAN AKUN IAM

Enkripsi resource CMEK gagal karena terjadi error pada server internal Silakan coba kembali nanti Terjadi error server internal. Coba enkripsi ulang kembali. Untuk mengetahui informasi selengkapnya, lihat Mengenkripsi ulang instance atau replika berkemampuan CMEK yang ada

Langkah berikutnya