Mengenkripsi data workload aktif dengan Confidential Google Kubernetes Engine Nodes


Halaman ini menunjukkan cara menerapkan enkripsi data aktif di node dan workload menggunakan Confidential Google Kubernetes Engine Nodes.

Ringkasan

Anda dapat mengenkripsi workload dengan Confidential GKE Node atau mode Rahasia untuk Hyperdisk Balanced.

Confidential GKE Nodes

Confidential GKE Node dibangun dengan memanfaatkan Confidential VM Compute Engine menggunakan AMD Secure Encryption Virtualization (SEV), yang mengenkripsi konten memori VM yang sedang digunakan. Enkripsi yang sedang digunakan adalah salah satu dari tiga status enkripsi end-to-end.

Saat Anda mengaktifkan Confidential GKE Node di cluster atau di node pool, data dalam workload yang berjalan di node rahasia akan dienkripsi saat digunakan. Untuk visibilitas atas panel kontrol, gunakan Transparansi Akses.

Anda dapat mengaktifkan Confidential GKE Node saat melakukan salah satu tindakan berikut:

  • Membuat cluster baru
  • Membuat node pool baru
  • Memperbarui node pool yang ada

Anda tidak dapat mengupdate cluster yang ada untuk mengubah setelan Confidential GKE Node pada level cluster.

Tabel berikut menunjukkan perilaku GKE yang berlaku saat Anda mengaktifkan Confidential GKE Node di level cluster atau di level node pool:

Setelan Confidential GKE Node Cara mengonfigurasi Perilaku
Level cluster Buat cluster baru Semua node di cluster pada node pool mana pun menggunakan Confidential GKE Node. Anda tidak dapat melakukan tindakan berikut:
  • Menonaktifkan Confidential GKE Node untuk node pool baru atau yang sudah ada di cluster
  • Menonaktifkan Confidential GKE Node di cluster
  • Mengaktifkan Confidential GKE Node di cluster yang ada
Level node pool
  • Membuat node pool baru
  • Memperbarui node pool yang ada
Anda hanya dapat mengonfigurasi Confidential GKE Node untuk node pool jika fitur ini dinonaktifkan di level cluster.

Mode rahasia untuk Hyperdisk Balanced

Anda juga dapat mengaktifkan Mode rahasia untuk Hyperdisk Balanced di penyimpanan disk booting yang mengenkripsi data Anda di enklave tambahan yang didukung hardware.

Anda dapat mengaktifkan Mode rahasia untuk Hyperdisk Balanced saat melakukan salah satu tindakan berikut:

  • Buat cluster baru
  • Membuat node pool baru

Anda tidak dapat mengupdate cluster atau node pool yang ada untuk mengubah setelan Mode rahasia untuk Hyperdisk Balanced.

Tabel berikut menunjukkan perilaku GKE yang berlaku saat Anda mengaktifkan mode Rahasia untuk setelan Hyperdisk Balanced di level cluster atau di level node pool:

Mode rahasia untuk setelan Hyperdisk Balanced Cara mengonfigurasi Perilaku
Level cluster Buat cluster baru Hanya node pool default di cluster yang akan menggunakan setelan Mode rahasia untuk Hyperdisk Balanced. Anda tidak dapat melakukan tindakan berikut:
  • Menonaktifkan setelan Mode rahasia untuk Hyperdisk Balanced untuk node pool yang sudah ada di cluster
  • Mengaktifkan setelan Mode rahasia untuk Hyperdisk Balanced di cluster yang ada
Level node pool Membuat node pool baru Anda dapat mengonfigurasi setelan Mode rahasia untuk Hyperdisk Balanced untuk setiap node pool baru pada waktu pembuatan. Anda tidak dapat mengupdate node pool yang ada untuk menggunakan setelan Mode rahasia untuk Hyperdisk Balanced.

Harga

Tidak ada biaya tambahan untuk men-deploy Confidential GKE Node, selain biaya Confidential VM Compute Engine. Namun, Confidential GKE Node mungkin menghasilkan data log yang sedikit lebih banyak saat startup dibandingkan node standar. Untuk mengetahui informasi tentang harga log, lihat Harga untuk Google Cloud Observability.

Ketersediaan

Confidential GKE Node tersedia dalam situasi berikut:

Sebelum memulai

Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:

  • Aktifkan Google Kubernetes Engine API.
  • Aktifkan Google Kubernetes Engine API
  • Jika ingin menggunakan Google Cloud CLI untuk tugas ini, instal lalu lakukan inisialisasi gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan gcloud components update.

Mengaktifkan Confidential GKE Node di cluster

Anda dapat membuat cluster baru dengan Confidential GKE Node yang diaktifkan menggunakan gcloud CLI atau Konsol Google Cloud. Jika Anda mengaktifkan Confidential GKE Node di level cluster, semua node dalam cluster adalah Confidential VMs.

gcloud

Saat membuat cluster baru, tentukan opsi --enable-confidential-nodes di gcloud CLI:

gcloud container clusters create CLUSTER_NAME \
    --machine-type=MACHINE_TYPE \
    --enable-confidential-nodes

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster baru.
  • MACHINE_TYPE: jenis mesin untuk node pool default cluster Anda, yang harus berupa jenis mesin N2D atau jenis mesin C2D.

Konsol

  1. Buka halaman Google Kubernetes Engine di konsol Google Cloud.

    Buka Google Kubernetes Engine

  2. Klik Create.

  3. Di bagian Standard, klik Konfigurasi.

  4. Dari panel navigasi, pada Cluster, klik Keamanan.

  5. Centang kotak Aktifkan Confidential GKE Node.

  6. Konfigurasi cluster Anda sesuai kebutuhan.

  7. Klik Buat.

Lihat Membuat cluster regional untuk mengetahui detail selengkapnya tentang cara membuat cluster.

Setelah membuat cluster dengan Confidential GKE Node, semua node pool yang dibuat di cluster ini hanya dapat menggunakan node rahasia. Anda tidak dapat membuat node pool reguler di cluster yang mengaktifkan Confidential GKE Node. Anda juga tidak dapat menonaktifkan Confidential GKE Node di setiap node pool saat mengaktifkan Confidential GKE Node di level cluster.

Untuk setiap node pool yang dibuat dengan setelan Mode rahasia untuk Hyperdisk Balanced, hanya node dalam node pool yang dibatasi untuk konfigurasi penyiapan. Untuk setiap node pool baru yang dibuat di cluster, Anda harus menyiapkan mode rahasia saat pembuatan.

Mengaktifkan Confidential GKE Node di node pool

Anda dapat mengaktifkan Confidential GKE Node pada node pool tertentu jika Confidential GKE Node dinonaktifkan di tingkat cluster.

Mode rahasia untuk setelan Hyperdisk Balanced harus ditentukan selama permintaan pembuatan node pool.

Membuat node pool baru

Untuk membuat node pool baru dengan Confidential GKE Node yang diaktifkan, jalankan perintah berikut:

gcloud container node-pools create NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --machine-type=MACHINE_TYPE \
    --enable-confidential-nodes

Ganti kode berikut:

  • NODE_POOL_NAME: nama node pool baru.
  • CLUSTER_NAME: nama cluster Anda.
  • MACHINE_TYPE: jenis mesin untuk node pool Anda, yang harus berupa jenis mesin N2D atau jenis mesin C2D.

Memperbarui node pool yang ada

Anda dapat mengaktifkan Confidential GKE Node pada node pool yang ada yang menggunakan jenis mesin N2D atau jenis mesin C2D. Jalankan perintah berikut:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --enable-confidential-nodes

Ganti kode berikut:

  • NODE_POOL_NAME: nama node pool Anda.
  • CLUSTER_NAME: nama cluster Anda.

Perubahan ini memerlukan pembuatan ulang node, yang dapat menyebabkan gangguan pada workload yang sedang berjalan. Untuk mengetahui detail tentang perubahan spesifik ini, temukan baris yang sesuai dalam tabel perubahan manual yang membuat ulang node menggunakan strategi upgrade node tanpa mematuhi kebijakan pemeliharaan. Untuk mempelajari update node lebih lanjut, lihat Merencanakan gangguan update node.

Memastikan Confidential GKE Node diaktifkan

Di cluster

Anda dapat memverifikasi bahwa cluster Anda menggunakan Confidential GKE Node dengan gcloud CLI atau Konsol Google Cloud.

gcloud

Jelaskan cluster:

gcloud container clusters describe CLUSTER_NAME

Jika Confidential GKE Node diaktifkan, output perintah ini akan menyertakan baris berikut:

confidentialNodes:
  enabled: true

Konsol

  1. Buka halaman Google Kubernetes Engine di Konsol Google Cloud.

    Buka Google Kubernetes Engine

  2. Klik nama cluster yang ingin diperiksa.

  3. Di bagian Keamanan, di kolom Confidential GKE Node, pastikan Confidential GKE Node Diaktifkan.

Pada node pool

Untuk memastikan bahwa node pool Anda menggunakan Confidential GKE Node, jalankan perintah berikut:

gcloud container node-pools describe NODE_POOL_NAME \
    --cluster=CLUSTER_NAME

Jika Confidential GKE Node diaktifkan, output-nya akan mirip dengan berikut ini:

confidentialNodes:
  enabled: true

Jika setelan Mode rahasia untuk Hyperdisk Balanced diaktifkan, outputnya akan mirip dengan berikut:

enableConfidentialStorage: true

Pada node

Untuk memvalidasi kerahasiaan node tertentu, Anda dapat:

  1. Memvalidasi bahwa AMD SEV diaktifkan, atau
  2. Memvalidasi bahwa Confidential VMs menggunakan Cloud Monitoring.

Menjalankan aplikasi di Confidential GKE Node

Pendekatan Google terhadap Confidential Computing adalah untuk memungkinkan lift-and-shift yang mudah bagi aplikasi yang ada. Workload GKE yang Anda jalankan saat ini dapat berjalan di Confidential GKE Node tanpa perubahan kode.

Secara opsional, jika ingin menyatakan secara deklaratif bahwa workload Anda hanya boleh berjalan di cluster dengan Confidential GKE Node, Anda dapat menggunakan pemilih node cloud.google.com/gke-confidential-nodes. Berikut adalah contoh spesifikasi Pod yang menggunakan pemilih ini:

apiVersion: v1
kind: Pod
spec:
  containers:
  - name: my-confidential-app
    image: us-docker.pkg.dev/myproject/myrepo/my-confidential-app
  nodeSelector:
    cloud.google.com/gke-confidential-nodes: "true"

Menetapkan batasan kebijakan organisasi

Anda dapat menentukan batasan kebijakan organisasi untuk memastikan bahwa semua resource VM yang dibuat di seluruh organisasi adalah instance Confidential VMs. Untuk GKE, Anda dapat menyesuaikan batasan Batasi Non-Confidential Computing agar mewajibkan semua cluster baru dibuat dengan mengaktifkan Confidential GKE Node. Tambahkan nama Layanan API container.googleapis.com ke daftar tolak saat menegakkan batasan kebijakan organisasi, misalnya:

gcloud resource-manager org-policies deny \
    constraints/compute.restrictNonConfidentialComputing compute.googleapis.com container.googleapis.com \
    --project=PROJECT_ID

Ganti PROJECT_ID dengan project ID Anda.

Membuat PersistentVolume untuk Mode rahasia untuk Hyperdisk Balanced

Untuk panduan tentang nilai yang diizinkan untuk throughput atau IOPS, lihat Merencanakan level performa untuk volume Hyperdisk.

Contoh berikut menunjukkan cara membuat Mode rahasia untuk StorageClass Hyperdisk Balanced untuk setiap jenis Hyperdisk:

Hyperdisk Balanced

  1. Simpan manifes berikut dalam file bernama confidential-hdb-example-class.yaml:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: balanced-storage
    provisioner: pd.csi.storage.gke.io
    volumeBindingMode: WaitForFirstConsumer
    allowVolumeExpansion: true
    parameters:
      type: hyperdisk-balanced
      provisioned-throughput-on-create: "250Mi"
      provisioned-iops-on-create: "7000"
      enable-confidential-storage: true
      disk-encryption-kms-key: "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/HSM_KEY_NAME"
    

    Ganti kode berikut:

    • KMS_PROJECT_ID: project yang memiliki kunci Cloud KMS
    • REGION: region tempat disk berada
    • KEY_RING: nama key ring yang menyertakan kunci
    • HSM_KEY_NAME: nama kunci HSM yang digunakan untuk mengenkripsi disk
  2. Buat StorageClass:

    kubectl create -f hdb-example-class.yaml
    
  3. Buat Klaim Volume Persisten Hyperdisk untuk GKE yang menggunakan mode Rahasia untuk volume Hyperdisk Balanced.

Untuk menemukan nama StorageClass yang tersedia di cluster Anda, jalankan perintah berikut:

kubectl get sc

Batasan

Confidential GKE Node memiliki batasan berikut:

Batasan migrasi langsung

Jenis mesin VM Rahasia Compute Engine tertentu mendukung migrasi langsung, yang meminimalkan potensi gangguan workload dari peristiwa pemeliharaan host. Migrasi langsung terjadi di versi GKE berikut:

  • 1.27.10-gke.1218000 dan yang lebih baru
  • 1.28.6-gke.1393000 dan yang lebih baru
  • 1.29.1-gke.1621000 dan yang lebih baru

Jika kumpulan node Anda sudah menjalankan versi yang didukung saat migrasi langsung ditambahkan, upgrade kumpulan node secara manual ke versi yang sama atau versi yang didukung yang berbeda. Mengupgrade node akan memicu pembuatan ulang node, dan node baru telah mengaktifkan migrasi langsung.

Untuk mengetahui detail tentang jenis mesin Compute Engine yang mendukung migrasi langsung, lihat Konfigurasi yang didukung.

Jika peristiwa pemeliharaan host terjadi di node yang tidak mendukung migrasi langsung, node akan memasuki status NotReady. Pod yang sedang berjalan akan mengalami gangguan hingga node siap lagi. Jika pemeliharaan memerlukan waktu lebih dari lima menit, GKE mungkin mencoba membuat ulang Pod di node lain.

Menonaktifkan Confidential GKE Node

Penonaktifan Confidential GKE Node hanya dapat dilakukan untuk node pool yang telah mengaktifkan Confidential GKE Node. Jika cluster dibuat dengan Confidential GKE Node, Anda tidak dapat menonaktifkan fitur tersebut. Jalankan perintah berikut untuk menonaktifkan Confidential GKE Node di node pool:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --no-enable-confidential-nodes

Perubahan ini memerlukan pembuatan ulang node, yang dapat menyebabkan gangguan pada workload yang sedang berjalan. Untuk mengetahui detail tentang perubahan spesifik ini, temukan baris yang sesuai dalam tabel perubahan manual yang membuat ulang node menggunakan strategi upgrade node tanpa mematuhi kebijakan pemeliharaan. Untuk mempelajari update node lebih lanjut, lihat Merencanakan gangguan update node.

Langkah selanjutnya