Menggunakan kunci enkripsi yang dikelola pelanggan (CMEK)

Ringkasan

Halaman ini menjelaskan cara kerja kunci enkripsi yang dikelola pelanggan (CMEK) dengan Datastream.

Apakah CMEK tepat untuk Anda?

CMEK ditujukan bagi organisasi yang memiliki data sensitif atau data teregulasi yang mengharuskan mereka mengelola kunci enkripsi.

Enkripsi yang dikelola Google versus enkripsi yang dikelola pelanggan

Fitur CMEK memungkinkan Anda menggunakan kunci kriptografis sendiri untuk data dalam penyimpanan di Datastream. Setelah menambahkan CMEK, setiap kali panggilan API dilakukan, Datastream akan menggunakan kunci Anda untuk mengakses data.

Datastream menggunakan kunci enkripsi data (DEK) dan kunci enkripsi kunci (KEK) yang dikelola Google untuk mengenkripsi Datastream. Ada dua tingkat enkripsi:

  1. DEK mengenkripsi data.
  2. KEK mengenkripsi DEK.

Datastream menyimpan DEK terenkripsi bersama data terenkripsi, dan Google mengelola Google KEK. Dengan CMEK, Anda membuat kunci yang menggabungkan Google KEK. CMEK memungkinkan Anda membuat, mencabut, dan menghapus KEK.

CMEK, termasuk software, hardware, dan kunci eksternal, semuanya dikelola melalui Cloud Key Management Service (KMS) API.

Lokasi mana yang mendukung aliran Datastream yang mendukung CMEK?

CMEK tersedia di semua lokasi Datastream.

Memahami akun layanan

Jika streaming Datastream mengaktifkan CMEK, Anda harus menggunakan akun layanan untuk meminta akses kunci dari Cloud Key Management Service.

Untuk menggunakan CMEK pada project, Anda harus memiliki akun layanan dan memberikan akses kunci ke akun layanan. Akun layanan harus ada di dalam project. Akun layanan dapat dilihat di semua region.

Jika Anda menggunakan Konsol untuk membuat streaming, Datastream akan membuat akun layanan secara otomatis saat Anda pertama kali memilih opsi Kunci yang dikelola pelanggan (jika akun layanan belum ada). Anda tidak perlu memiliki izin khusus di akun pengguna saat Datastream membuat akun layanan secara otomatis.

Memahami kunci

Di Cloud Key Management Service, Anda perlu membuat keyring dengan kunci kriptografis, yang ditetapkan dengan lokasi. Saat membuat streaming baru di Datastream, Anda memilih kunci ini untuk mengenkripsi streaming tersebut.

Anda perlu mengetahui ID kunci dan wilayah kunci saat membuat streaming baru yang menggunakan CMEK. Anda harus menempatkan aliran data baru di wilayah yang sama dengan CMEK yang terkait dengan aliran data tersebut. Anda dapat membuat satu project untuk kunci dan stream, atau project yang berbeda untuk setiap kunci dan stream.

CMEK menggunakan format berikut:

projects/[CMEK_ENABLED_PROJECT]/locations/[REGION]/keyRings/[RING_NAME]/cryptoKeys/[KEYNAME]

Jika Datastream tidak dapat mengakses kunci (misalnya, Anda menonaktifkan versi kunci), Datastream akan mengubah status aliran data menjadi FAILED dan pesan error terkait akan muncul. Setelah memecahkan masalah apa pun yang terkait dengan pesan error sehingga kunci dapat diakses kembali, Datastream akan melanjutkan streaming secara otomatis.

Pengelola kunci eksternal

Anda dapat menggunakan kunci yang disimpan di pengelola kunci eksternal, seperti Fortanix, Ionic, atau Thales, sebagai CMEK Anda. Untuk mempelajari cara menggunakan kunci eksternal dengan Cloud Key Management Service, lihat Cloud External Key Manager.

Bagaimana cara membuat data terenkripsi CMEK tidak dapat diakses secara permanen?

Anda mungkin memiliki situasi di mana Anda ingin menghancurkan data yang dienkripsi dengan CMEK secara permanen. Untuk melakukannya, Anda menghancurkan versi CMEK. Anda tidak dapat menghancurkan keyring atau kunci, tetapi Anda dapat menghancurkan versi kunci dari kunci tersebut.

Pembatasan

Batasan berikut berlaku saat menggunakan CMEK:

  • Anda tidak dapat memperbarui CMEK pada streaming yang sedang berjalan.

  • Meskipun dapat menggunakan CMEK untuk mengenkripsi baris dari database sumber, Anda tidak dapat menggunakan kunci ini untuk mengenkripsi metadata streaming, seperti ID aliran data, alamat IP database sumber, nama tabel database sumber, dan sebagainya.

Menggunakan CMEK

Setelah memahami CMEK, Anda dapat menyiapkan akun layanan dan kunci untuk CMEK. Selain itu, Anda akan mempelajari cara menyiapkan Datastream untuk menggunakan CMEK. Untuk mempelajari CMEK lebih lanjut, lihat Ringkasan.

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

    Go to project selector

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

  6. Instal dan lakukan inisialisasi Cloud SDK.
  7. Pastikan Anda memiliki peran Admin Datastream yang ditetapkan ke akun pengguna.

    Buka halaman IAM

  8. Enable the Cloud Key Management Service API.

    Enable the API

  9. Aktifkan Datastream API.

    Mengaktifkan API

Alur kerja untuk membuat streaming di Datastream dengan CMEK

  1. Khusus pengguna gcloud dan API: Pastikan Anda memiliki akun layanan untuk setiap project yang memerlukan CMEK. Jika belum memilikinya, berikut cara membuat akun layanan.
  2. Buat keyring dan kunci, lalu tetapkan lokasi untuk setiap kunci. Lokasinya adalah region Google Cloud.
  3. Khusus pengguna gcloud dan API: Memberikan kunci akses ke akun layanan.
  4. Salin atau tulis ID kunci (KMS_KEY_ID) dan lokasi untuk kunci tersebut, serta ID (KMS_KEYRING_ID) untuk keyring. Anda memerlukan informasi ini saat memberikan akses kunci ke akun layanan.
  5. Buka project dan buat aliran data di Datastream dengan opsi berikut:
    1. Lokasi yang sama dengan CMEK
    2. Konfigurasi CMEK
    3. ID CMEK

Streaming Anda di Datastream kini diaktifkan dengan CMEK.

Membuat akun layanan

Anda harus membuat akun layanan untuk setiap project yang memerlukan CMEK.

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. Bagian ini juga mencakup izin untuk membuat, memperbarui, dan menghapus akun layanan, serta melihat atau mengubah kebijakan Datastream pada akun layanan.

Saat ini, Anda hanya dapat menggunakan perintah gcloud untuk membuat jenis akun layanan yang diperlukan untuk CMEK. Jika Anda menggunakan Konsol, Datastream akan membuat akun layanan ini secara otomatis.

Untuk membuat akun layanan dengan gcloud, jalankan perintah berikut:

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

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

Buat kunci

Anda dapat membuat kunci di project Google Cloud yang sama dengan aliran data di Datastream, atau dalam project pengguna terpisah. Lokasi key ring Cloud KMS harus cocok dengan region tempat Anda ingin membuat aliran data. Kunci multi-region atau region global tidak akan berfungsi. Jika wilayah tidak cocok, Anda tidak dapat membuat aliran data.

Untuk membuat kunci Cloud KMS:

Konsol

  1. Di konsol Google Cloud, buka halaman Kunci kriptografis.
  2. Klik Create key ring.
  3. Tambahkan Nama key ring. Catat nama ini karena Anda akan memerlukannya saat memberikan akses kunci ke akun layanan.
  4. Tambahkan Lokasi key ring.
  5. Klik Buat. Halaman Buat kunci akan terbuka.
  6. Tambahkan Nama kunci.
  7. Pilih Tujuan (simetris atau asimetris).
  8. Pilih Periode rotasi dan Mulai pada tanggal.
  9. Klik Create.
  10. Pada tabel Kunci , klik tiga titik di kolom terakhir, lalu pilih Salin ID resource atau tuliskan. Argumen 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.

Memberikan akses kunci ke akun layanan

Anda hanya perlu melakukan prosedur ini jika menggunakan gcloud atau API.

Untuk memberikan akses ke akun layanan, gunakan kode berikut:

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

Membuat streaming di Datastream dengan CMEK

Sebagai bagian dari pembuatan aliran data di Datastream, Anda dapat menggunakan CMEK untuk mengelola enkripsi data.

Menonaktifkan dan mengaktifkan kembali versi kunci

Lihat topik berikut: