Mengamankan data dengan kunci enkripsi

Halaman ini menjelaskan cara membuat, mengonfigurasi, dan menerapkan kunci enkripsi yang dikelola pelanggan (CMEK) untuk AlloyDB for PostgreSQL.

Untuk mengetahui informasi selengkapnya tentang CMEK, lihat Tentang CMEK.

Membuat dan memberi otorisasi kunci CMEK untuk AlloyDB

  1. Buat kunci di Cloud Key Management Service (Cloud KMS). AlloyDB mendukung jenis kunci berikut:

    Kunci harus berada di lokasi yang sama dengan cluster AlloyDB Anda. Misalnya, cluster AlloyDB yang berada di us-west1 hanya dapat menggunakan kunci di us-west1.

    Jika sudah memiliki kunci Cloud KMS di lokasi yang benar, Anda dapat melewati langkah ini.

  2. Beri AlloyDB akses ke kunci.

    1. Dengan menggunakan Google Cloud CLI, buat dan tampilkan agen layanan, atau tampilkan jika akun sudah ada:
        gcloud beta services identity create --service=alloydb.googleapis.com \
            --project=PROJECT

    Perintah gcloud services identity membuat atau mendapatkan agen layanan yang dapat digunakan AlloyDB untuk mengakses kunci Cloud KMS atas nama Anda.

    ID akun layanan menyerupai alamat email:

        Service identity created: service-xxx@gcp-sa-alloydb.iam.gserviceaccount.com
    
    1. Berikan peran cloudkms.cryptoKeyEncrypterDecrypter ke akun layanan:
        gcloud kms keys add-iam-policy-binding KEY \
            --location REGION \
            --keyring KEYRING \
            --project=PROJECT \
            --member serviceAccount:service-xxx@gcp-sa-alloydb.iam.gserviceaccount.com \
            --role roles/cloudkms.cryptoKeyEncrypterDecrypter

    Ganti kode berikut:

    • KEY: ID Cloud KMS kunci
    • REGION: region kunci—misalnya, us-central1
    • PROJECT: ID project kunci
    • KEYRING: ID key ring Cloud KMS kunci

    Peran ini memberikan izin kepada akun layanan untuk mengenkripsi dan mendekripsi menggunakan kunci Cloud KMS. Untuk mengetahui informasi selengkapnya, lihat Izin dan Peran Cloud KMS.

Membuat cluster terenkripsi CMEK

Saat membuat cluster baru, Anda dapat memilih apakah akan mengenkripsi cluster dengan enkripsi yang dikelola Google default atau menggunakan kunci CMEK. Untuk mengetahui informasi selengkapnya, lihat Membuat cluster dan instance utamanya.

Melihat metode enkripsi dan kunci CMEK cluster

Konsol

Kolom Enkripsi di halaman Cluster menampilkan apakah setiap cluster dalam project Anda menggunakan enkripsi yang dikelola Google atau CMEK.

Buka halaman Cluster

Untuk melihat detail utama cluster yang menggunakan CMEK, klik namanya di kolom Nama resource. Kolom Kunci enkripsi di halaman detail yang dihasilkan berisi deskripsi kunci, termasuk link ke halaman detail Cloud KMS-nya sendiri.

gcloud

Panggil perintah gcloud alloydb clusters describe:

gcloud alloydb clusters describe CLUSTER \
--project=PROJECT \
--region=REGION

Ganti kode berikut:

  • CLUSTER: ID cluster yang akan dideskripsikan
  • PROJECT: ID project cluster
  • REGION: region cluster—misalnya, us-central1

Output-nya mencakup kolom encryptionInfo dengan ringkasan enkripsi cluster.

Menerapkan CMEK ke cadangan

Saat membuat cadangan baru, Anda dapat memilih apakah akan mengenkripsinya menggunakan enkripsi yang dikelola Google default atau kunci CMEK. Untuk mengetahui informasi selengkapnya, lihat Membuat cadangan sesuai permintaan atau Menjadwalkan pencadangan otomatis.

Anda juga memiliki opsi untuk menerapkan kunci CMEK ke cluster yang dibuat saat memulihkan dari cadangan, terlepas dari metode enkripsi cadangan tersebut. Untuk mengetahui informasi selengkapnya, lihat Memulihkan cluster.

Mengganti kunci menggunakan enkripsi CMEK

Penting untuk memahami implikasi merotasi kunci enkripsi yang dikelola pelanggan (CMEK) di Cloud Key Management Service (Cloud KMS) saat digunakan dengan cluster AlloyDB.

Saat Anda merotasi kunci CMEK, hal berikut akan terjadi pada data AlloyDB yang ada:

  • Akses langsung berlanjut: data tetap dienkripsi dengan versi Kunci Enkripsi Data (DEK) aslinya, selama versi kunci sebelumnya masih tersedia di KMS, tidak dinonaktifkan atau dihapus.

  • Enkripsi ulang data penuh dilakukan secara manual: untuk mendapatkan semua data AlloyDB Anda di versi kunci utama terbaru, Anda harus mengenkripsi ulang data tersebut.

Untuk mengenkripsi ulang cluster yang ada dengan versi kunci CMEK baru, Anda harus melakukan operasi pencadangan dan pemulihan:

  1. Buat cadangan cluster yang ada.

  2. Pulihkan cadangan ke cluster baru, dengan menentukan versi kunci utama CMEK baru selama proses pemulihan.

Untuk mengetahui informasi selengkapnya, lihat Pemulihan cluster.

Rotasi kunci CMEK yang sering dengan AlloyDB memerlukan overhead operasional yang signifikan. Karena data yang ada tidak dienkripsi ulang secara otomatis, dan karena enkripsi ulang manual melibatkan pencadangan dan pemulihan penuh ke cluster baru, rotasi yang sering dapat merepotkan dan dapat memengaruhi ketersediaan atau kompleksitas pengelolaan.

Anda dapat menghapus versi kunci CMEK lama dengan aman di Cloud KMS hanya setelah Anda mengonfirmasi bahwa semua data AlloyDB yang relevan telah dienkripsi ulang secara manual dan data tersebut menggunakan versi kunci yang lebih baru.

Melihat metode enkripsi dan kunci CMEK cadangan

Konsol

Kolom Encryption di halaman Backups menampilkan apakah setiap cluster dalam project Anda menggunakan enkripsi yang dikelola Google atau CMEK.

Buka halaman Cadangan

Untuk melihat detail utama cadangan menggunakan CMEK, klik Pulihkan. Kolom Kunci enkripsi di panel detail berikutnya berisi deskripsi kunci, termasuk link ke halaman detail Cloud KMS-nya sendiri.

gcloud

Panggil perintah gcloud alloydb backups describe:

gcloud alloydb backups describe CLUSTER \
--project=PROJECT \
--region=REGION

Ganti kode berikut:

  • CLUSTER: ID cadangan yang akan dideskripsikan
  • PROJECT: ID project cadangan
  • REGION: region cadangan—misalnya, us-central1

Output-nya mencakup kolom encryptionInfo dengan ringkasan enkripsi cadangan.

Menonaktifkan kunci

Menonaktifkan kunci CMEK cluster akan membuat data cluster tersebut tidak dapat diakses hingga Anda mengaktifkan kembali kunci tersebut.

Namun, penonaktifan kunci dapat memerlukan waktu hingga tiga jam untuk berlaku di cluster AlloyDB Anda. Untuk menonaktifkan kunci sekaligus mencegah akses ke data Anda secara langsung, ikuti langkah-langkah berikut:

  1. Hapus instance utama cluster Anda. Tindakan ini tidak memengaruhi data cluster Anda. Anda dapat membuat instance utama baru setelah mengaktifkan kembali kunci, seperti yang dijelaskan di bagian berikut.

  2. Gunakan Cloud KMS untuk menonaktifkan kunci.

Mengaktifkan kunci

Untuk mengaktifkan kunci, ikuti langkah-langkah berikut:

  1. Gunakan Cloud KMS untuk mengaktifkan kunci.

  2. Jika Anda menghapus instance utama cluster sebelum menonaktifkan kunci, buat instance utama baru.

Mengaktifkan kunci dapat memerlukan waktu hingga tiga jam untuk diterapkan ke cluster Anda. Data cluster dapat diakses segera setelah propagasi ini terjadi.

Melihat log audit untuk kunci Cloud KMS

Untuk melihat log audit yang terkait dengan kunci CMEK tertentu, ikuti langkah-langkah berikut:

  1. Pastikan logging diaktifkan untuk Cloud KMS API di project Anda.

  2. Buka Logs Explorer di konsol Google Cloud .

    Buka Logs Explorer

  3. Batasi entri log ke kunci Cloud KMS Anda dengan menambahkan baris berikut ke pembuat kueri:

    resource.type="cloudkms_cryptokey"
    resource.labels.location="REGION"
    resource.labels.key_ring_id="KEYRING"
    resource.labels.crypto_key_id="KEY"
    

    Ganti kode berikut:

    • REGION: region kunci—misalnya, us-central1
    • KEYRING: ID key ring Cloud KMS kunci
    • KEY: ID Cloud KMS kunci
  4. Dalam operasi normal, operasi enkripsi dan dekripsi dicatat dengan tingkat keparahan INFO. Entri ini dicatat saat instance di cluster AlloyDB Anda memvalidasi kunci Cloud KMS, yang terjadi setiap lima menit.

  5. Jika AlloyDB gagal mengakses kunci, operasi akan dicatat ke dalam log sebagai ERROR.

Melihat justifikasi akses untuk kunci Cloud EKM

Jika menggunakan kunci Cloud EKM, Anda dapat menggunakan Key Access Justifications untuk melihat alasan setiap permintaan Cloud EKM. Selain itu, berdasarkan justifikasi yang diberikan, Anda dapat otomatis menyetujui atau menolak permintaan. Untuk mengetahui informasi selengkapnya, lihat Melihat dan menindaklanjuti justifikasi.