Menjalankan kunci dan certificate authority Anda sendiri di GKE


Halaman ini menunjukkan cara mengonfigurasi bidang kontrol cluster Google Kubernetes Engine (GKE) dengan certificate authority (CA) dan kunci yang Anda kelola. Panduan ini ditujukan untuk administrator keamanan yang memiliki kepatuhan organisasi atau persyaratan kebijakan tertentu untuk mengontrol penerbitan dan penandatanganan kredensial.

Halaman ini menjelaskan salah satu bagian dari serangkaian fitur platform kontrol opsional di GKE yang memungkinkan Anda melakukan tugas seperti memverifikasi postur keamanan platform kontrol atau mengonfigurasi enkripsi dan penandatanganan kredensial di platform kontrol menggunakan kunci yang Anda kelola. Untuk mengetahui detailnya, lihat Tentang otoritas bidang kontrol GKE.

Secara default, Google Cloud menerapkan berbagai langkah keamanan ke bidang kontrol terkelola. Halaman ini menjelaskan kemampuan opsional yang memberi Anda visibilitas atau kontrol lebih besar atas panel kontrol GKE.

Anda seharusnya sudah memahami konsep berikut:

Komponen kredensial bidang kontrol

Cluster GKE menggunakan CA dan kunci tertentu untuk menerbitkan kredensial di cluster, seperti sertifikat X.509 atau token ServiceAccount. Anda dapat membuat kunci di Cloud Key Management Service (Cloud KMS) dan CA di Certificate Authority Service (CA Service) dan mengonfigurasi cluster untuk menggunakan resource ini, bukan CA dan kunci yang dikelola Google Cloud.

Untuk mempelajari lebih lanjut komponen tertentu yang Anda buat, lihat Kunci dan CA yang dikelola sendiri.

Penggunaan dengan fitur otoritas bidang kontrol GKE lainnya

Otoritas plane kontrol GKE menyediakan fitur berikut yang terkait dengan kunci yang dikelola sendiri:

Tujuan

  • Membuat kunci di Cloud KMS
  • Membuat CA di CA Service
  • Memberikan peran Identity and Access Management (IAM) ke agen layanan GKE
  • Membuat cluster GKE yang menggunakan CA dan kunci Anda
  • Memverifikasi bahwa cluster menggunakan CA dan kunci Anda

Biaya

Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga. Pengguna baru Google Cloud mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.

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. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Buat atau pilih project Google Cloud.

    • Membuat project Google Cloud:

      gcloud projects create PROJECT_ID

      Ganti PROJECT_ID dengan nama untuk project Google Cloud yang Anda buat.

    • Pilih project Google Cloud yang Anda buat:

      gcloud config set project PROJECT_ID

      Ganti PROJECT_ID dengan nama project Google Cloud Anda.

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

  6. Aktifkan API Kubernetes Engine, Certificate Authority Service, and Cloud Key Management Service:

    gcloud services enable container.googleapis.com privateca.googleapis.com cloudkms.googleapis.com
  7. Install the Google Cloud CLI.
  8. To initialize the gcloud CLI, run the following command:

    gcloud init
  9. Buat atau pilih project Google Cloud.

    • Membuat project Google Cloud:

      gcloud projects create PROJECT_ID

      Ganti PROJECT_ID dengan nama untuk project Google Cloud yang Anda buat.

    • Pilih project Google Cloud yang Anda buat:

      gcloud config set project PROJECT_ID

      Ganti PROJECT_ID dengan nama project Google Cloud Anda.

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

  11. Aktifkan API Kubernetes Engine, Certificate Authority Service, and Cloud Key Management Service:

    gcloud services enable container.googleapis.com privateca.googleapis.com cloudkms.googleapis.com
  12. Pastikan lingkungan Anda memenuhi syarat untuk menggunakan fitur otorisasi bidang kontrol GKE. Untuk ikut serta dalam fitur ini, hubungi tim penjualan Google Cloud Anda.
  13. Untuk melacak pemberian dan penggunaan kredensial secara andal, pastikan log audit Akses Data berikut diaktifkan:
    • Cloud KMS: DATA_READ
    • Layanan CA: ADMIN_READ dan ADMIN_WRITE

    Untuk mengaktifkan jenis log ini, lihat Mengaktifkan log audit Akses Data.

Peran dan izin yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk menjalankan CA dan kunci enkripsi Anda sendiri, minta administrator untuk memberi Anda peran IAM berikut:

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

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Persyaratan

Anda harus menggunakan GKE versi 1.31.1-gke.1846000 atau yang lebih baru.

Batasan

Batasan berikut berlaku:

  • Anda hanya dapat menggunakan kunci dari Cloud KMS. Anda tidak dapat menggunakan penyedia KMS atau penyedia enkripsi lainnya.
  • Kunci Cloud External Key Manager (Cloud EKM) tidak didukung.
  • Anda hanya dapat menggunakan CA dari CA Service.

Menyiapkan lingkungan

Di bagian ini, Anda akan mengidentifikasi project Google Cloud yang akan digunakan dalam tutorial ini, dan membuat key ring di Cloud KMS untuk menyimpan kunci Anda.

Mengidentifikasi project

Sebaiknya gunakan project Google Cloud terpisah sebagai berikut:

  • Project utama: berisi semua kunci dan CA.
  • Project cluster: berisi cluster GKE Anda.

Anda dapat menggunakan project yang sama untuk kunci, CA, dan cluster GKE secara opsional, tetapi sebaiknya gunakan project terpisah sehingga tim yang mengelola operasi kriptografis di organisasi Anda terpisah dari tim yang mengelola operasi cluster.

Membuat key ring

Buat key ring dalam project kunci untuk menyimpan semua kunci untuk cluster tertentu. Anda harus membuat key ring di lokasi yang sama dengan cluster GKE.

Jalankan perintah berikut:

gcloud kms keyrings create KEY_RING_NAME \
    --location=us-central1 \
    --project=KEY_PROJECT_ID

Ganti kode berikut:

  • KEY_RING_NAME: nama untuk key ring Anda.
  • KEY_PROJECT_ID: project ID project utama Anda.

Membuat kunci

Untuk setiap otoritas kredensial seperti kunci akun layanan dan CA, Anda membuat kunci menggunakan Cloud KMS. Bagian ini menunjukkan cara membuat kunci yang digunakan GKE untuk menandatangani dan memverifikasi kredensial di cluster. Anda dapat menentukan properti Anda sendiri untuk kunci ini, bergantung pada kebutuhan organisasi Anda. Untuk mengetahui detailnya, lihat halaman Membuat kunci dan referensi API projects.locations.keyRings.cryptoKeys.

Pertimbangkan hal-hal berikut saat Anda membuat resource ini di Cloud KMS:

  • Jika sudah memiliki key ring di project kunci, Anda dapat menggunakan key ring tersebut untuk menyimpan semua kunci yang Anda buat untuk digunakan dengan cluster.
  • Key ring Anda harus berada di lokasi Google Cloud yang sama dengan cluster Anda untuk meminimalkan latensi.
  • Kunci harus menentukan asymmetric-signing sebagai tujuan kunci.
  • Gunakan algoritma berikut berdasarkan jenis kunci:
    • Kunci penandatanganan ServiceAccount: algoritma PKCS1 penandatanganan RSA yang kuat, seperti rsa-sign-pkcs1-4096-sha256 atau rsa-sign-pkcs1-3072-sha256.
    • Kunci Certificate Authority: algoritma yang kuat seperti ec-sign-p256-sha256.
  • Kunci hardware Cloud HSM didukung, tetapi tingkat perlindungan software sudah memadai untuk sebagian besar kasus penggunaan. Untuk mengetahui detail tentang kunci hardware, lihat Cloud HSM.
  • Jangan ubah durasi default untuk penghancuran kunci.
  • GKE tidak mencegah Anda menghapus kunci Cloud KMS, termasuk kunci Layanan CA, yang digunakan oleh cluster. Sebelum Anda menghapus kunci atau CA, pastikan resource tersebut tidak digunakan.

Untuk membuat kunci, jalankan perintah berikut:

  1. Buat kunci penandatanganan ServiceAccount Kubernetes, yang juga Anda tentukan sebagai kunci verifikasi akun layanan selama pembuatan cluster:

    gcloud kms keys create sa-signing-key \
        --keyring=KEY_RING_NAME \
        --location=us-central1\
        --purpose="asymmetric-signing" \
        --protection-level=hsm \
        --default-algorithm=rsa-sign-pkcs1-4096-sha256 \
        --project=KEY_PROJECT_ID
    

    Ganti KEY_PROJECT_ID dengan project ID untuk project kunci enkripsi khusus Anda.

  2. Buat kunci CA root cluster:

    gcloud kms keys create cluster-ca-key \
        --keyring=KEY_RING_NAME \
        --location=us-central1\
        --purpose="asymmetric-signing" \
        --protection-level=hsm \
        --default-algorithm=ec-sign-p256-sha256 \
        --project=KEY_PROJECT_ID
    
  3. Buat kunci CA root peer etcd:

    gcloud kms keys create etcd-peer-ca-key \
        --keyring=KEY_RING_NAME \
        --location=us-central1\
        --purpose="asymmetric-signing" \
        --protection-level=hsm \
        --default-algorithm=ec-sign-p256-sha256 \
        --project=KEY_PROJECT_ID
    
  4. Buat kunci CA root etcd API:

    gcloud kms keys create etcd-api-ca-key \
        --keyring=KEY_RING_NAME \
        --location=us-central1\
        --purpose="asymmetric-signing" \
        --protection-level=hsm \
        --default-algorithm=ec-sign-p256-sha256 \
        --project=KEY_PROJECT_ID
    
  5. Buat kunci CA root agregasi:

    gcloud kms keys create aggregation-ca-key \
        --keyring=KEY_RING_NAME \
        --location=us-central1\
        --purpose="asymmetric-signing" \
        --protection-level=hsm \
        --default-algorithm=ec-sign-p256-sha256 \
        --project=KEY_PROJECT_ID
    

Membuat CA

Setelah membuat kunci untuk setiap fungsi bidang kontrol, gunakan setiap kunci untuk membuat kumpulan CA dan CA root yang sesuai menggunakan Layanan CA:

  1. Buat kumpulan CA cluster:

    gcloud privateca pools create cluster-ca-pool \
        --location=us-central1 \
        --tier=enterprise \
        --project=KEY_PROJECT_ID \
        --no-publish-crl --no-publish-ca-cert
    

    Flag --no-publish-crl dan flag --no-publish-ca-cert bersifat opsional. Menghapus tanda ini akan memublikasikan sertifikat ke bucket Cloud Storage. Untuk mengetahui detailnya, lihat Mengaktifkan publikasi sertifikat CA dan CRL untuk CA dalam kumpulan CA.

  2. Buat root CA cluster:

    gcloud privateca roots create cluster-root-ca \
        --pool=cluster-ca-pool \
        --location=us-central1 \
        --kms-key-version=projects/KEY_PROJECT_ID/locations/us-central1/keyRings/KEY_RING_NAME/cryptoKeys/cluster-ca-key/cryptoKeyVersions/1 \
        --subject="CN=cluster-ca, O=ORGANIZATION" \
        --project=KEY_PROJECT_ID \
        --auto-enable
    

    Ganti ORGANIZATION dengan nama organisasi Anda.

  3. Buat kumpulan CA peer etcd:

    gcloud privateca pools create etcd-peer-ca-pool \
        --location=us-central1 \
        --tier=enterprise \
        --project=KEY_PROJECT_ID \
        --no-publish-crl --no-publish-ca-cert
    
  4. Buat root CA peer etcd:

    gcloud privateca roots create etcd-peer-root-ca \
        --pool=etcd-peer-ca-pool \
        --location=us-central1 \
        --kms-key-version=projects/KEY_PROJECT_ID/locations/us-central1/keyRings/KEY_RING_NAME/cryptoKeys/etcd-peer-ca-key/cryptoKeyVersions/1 \
        --subject="CN=etcd-peer-ca, O=ORGANIZATION" \
        --project=KEY_PROJECT_ID \
        --auto-enable
    
  5. Buat kumpulan CA API etcd:

    gcloud privateca pools create etcd-api-ca-pool \
        --location=us-central1 \
        --tier=enterprise \
        --project=KEY_PROJECT_ID \
        --no-publish-crl --no-publish-ca-cert
    
  6. Buat CA root etcd API:

    gcloud privateca roots create etcd-api-root-ca \
        --pool=etcd-api-ca-pool \
        --location=us-central1 \
        --kms-key-version=projects/KEY_PROJECT_ID/locations/us-central1/keyRings/KEY_RING_NAME/cryptoKeys/etcd-api-ca-key/cryptoKeyVersions/1 \
        --subject="CN=etcd-api-ca, O=ORGANIZATION" \
        --project=KEY_PROJECT_ID \
        --auto-enable
    
  7. Buat kumpulan CA agregasi:

    gcloud privateca pools create aggregation-ca-pool \
        --location=us-central1 \
        --tier=enterprise \
        --project=KEY_PROJECT_ID \
        --no-publish-crl --no-publish-ca-cert
    
  8. Buat root CA agregasi:

    gcloud privateca roots create aggregation-root-ca \
        --pool=aggregation-ca-pool \
        --location=us-central1 \
        --kms-key-version=projects/KEY_PROJECT_ID/locations/us-central1/keyRings/KEY_RING_NAME/cryptoKeys/aggregation-ca-key/cryptoKeyVersions/1 \
        --subject="CN=aggregation-ca, O=ORGANIZATION" \
        --project=KEY_PROJECT_ID \
        --auto-enable
    

Memberikan peran IAM ke agen layanan GKE

Agen layanan GKE memerlukan akses ke resource yang Anda buat di Cloud KMS dan di Layanan CA. Agen layanan menggunakan resource ini untuk menandatangani, memverifikasi, dan menerbitkan kredensial di cluster. Anda dapat menggunakan peran IAM yang telah ditetapkan berikut:

Untuk memberikan peran ini ke agen layanan GKE, lakukan tindakan berikut:

  1. Temukan nomor project project cluster Anda:

    gcloud projects describe CLUSTER_PROJECT_ID \
        --format='value(projectNumber)'
    

    Ganti CLUSTER_PROJECT_ID dengan project ID project cluster Anda.

  2. Berikan peran Pengguna Kunci Crypto KMS Kubernetes Engine pada kunci penandatanganan akun layanan yang Anda buat di Membuat kunci:

    gcloud kms keys add-iam-policy-binding sa-signing-key \
      --location=us-central1 \
      --keyring=KEY_RING_NAME \
      --member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot." \
      --role=roles/container.cloudKmsKeyUser \
      --project=KEY_PROJECT_ID
    

    Ganti CLUSTER_PROJECT_NUMBER dengan nomor project untuk project cluster.

  3. Berikan peran CA Service Certificate Manager di kumpulan CA yang Anda buat di Membuat CA:

    gcloud privateca pools add-iam-policy-binding cluster-ca-pool \
        --location=us-central1 \
        --member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot." \
        --role=roles/privateca.certificateManager \
        --project=KEY_PROJECT_ID
    
    gcloud privateca pools add-iam-policy-binding etcd-peer-ca-pool \
        --location=us-central1 \
        --member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot." \
        --role=roles/privateca.certificateManager \
        --project=KEY_PROJECT_ID
    
    gcloud privateca pools add-iam-policy-binding etcd-api-ca-pool \
        --location=us-central1 \
        --member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot." \
        --role=roles/privateca.certificateManager \
        --project=KEY_PROJECT_ID
    
    gcloud privateca pools add-iam-policy-binding aggregation-ca-pool \
        --location=us-central1 \
        --member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot." \
        --role=roles/privateca.certificateManager \
        --project=KEY_PROJECT_ID
    

Menyiapkan CA dan kunci di cluster baru

Setelah Anda membuat kunci, kumpulan CA, CA root, dan memberikan peran IAM ke agen layanan GKE, buat cluster baru yang menggunakan resource ini.

Flag yang Anda tentukan dalam perintah pembuatan cluster memerlukan jalur resource berikut sebagai nilai:

  • Jalur ke versi kunci di Cloud KMS untuk kunci penandatanganan akun layanan yang Anda buat di Membuat kunci. Anda menentukan jalur ini untuk flag service-account-signing-keys dan untuk flag service-account-verification-keys.
  • Jalur ke setiap kumpulan CA yang Anda buat di Membuat CA.

Untuk mengonfigurasi cluster baru agar menggunakan kunci dan CA Anda, lakukan langkah-langkah berikut:

  1. Temukan jalur ke versi kunci penandatanganan akun layanan terbaru yang diaktifkan:

    gcloud kms keys versions list \
        --key=sa-signing-key \
        --keyring=KEY_RING_NAME \
        --location=us-central1 \
        --project=KEY_PROJECT_ID \
        --filter="STATE=ENABLED" --sort-by=~ --format="value(name)" | sed 1q
    

    Ganti KEY_PROJECT_ID dengan project ID project kunci.

    Outputnya mirip dengan hal berikut ini:

    projects/KEY_PROJECT_ID/locations/us-central1/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1
    
  2. Temukan jalur ke setiap kumpulan CA yang Anda buat:

    gcloud privateca pools list --format="get(name)" \
        --project=KEY_PROJECT_ID
    

    Outputnya mirip dengan hal berikut ini:

    projects/KEY_PROJECT_ID/locations/us-central1/caPools/cluster-ca-pool
    projects/KEY_PROJECT_ID/locations/us-central1/caPools/etcd-peer-ca-pool
    projects/KEY_PROJECT_ID/locations/us-central1/caPools/etcd-api-ca-pool
    projects/KEY_PROJECT_ID/locations/us-central1/caPools/aggregation-ca-pool
    

    Pastikan output berisi semua kumpulan CA yang Anda buat untuk GKE.

Membuat cluster

Di bagian ini, Anda akan membuat cluster dengan opsi yang berbeda-beda, bergantung pada fitur otoritas bidang kontrol GKE yang ingin Anda konfigurasikan. Anda hanya dapat mengonfigurasi fitur ini di cluster selama pembuatan cluster. Perintah berikut akan membuat cluster mode Autopilot. Untuk membuat cluster mode Standar, gunakan flag yang sama dengan perintah gcloud container clusters create.

  • Untuk hanya mengonfigurasi CA dan kunci yang Anda buat dalam tutorial ini, jalankan perintah berikut:

    gcloud container clusters create-auto example-cluster \
        --location=us-central1 \
        --project=CLUSTER_PROJECT_ID \
        --cluster-version=VERSION \
        --service-account-signing-keys=projects/KEY_PROJECT_ID/locations/us-central1/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1 \
        --service-account-verification-keys=projects/KEY_PROJECT_ID/locations/us-central1/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1 \
        --cluster-ca=projects/KEY_PROJECT_ID/locations/us-central1/caPools/cluster-ca-pool \
        --etcd-peer-ca=projects/KEY_PROJECT_ID/locations/us-central1/caPools/etcd-peer-ca-pool \
        --etcd-api-ca=projects/KEY_PROJECT_ID/locations/us-central1/caPools/etcd-api-ca-pool \
        --aggregation-ca=projects/KEY_PROJECT_ID/locations/us-central1/caPools/aggregation-ca-pool
    

    Ganti kode berikut:

    • CLUSTER_PROJECT_ID: project ID project cluster.
    • VERSION: versi GKE cluster. Harus 1.31.1-gke.1846000 atau yang lebih baru.
  • Untuk mengonfigurasi CA dan kunci serta enkripsi disk booting kontrol dan enkripsi etcd, lakukan hal berikut:

    1. Lakukan semua langkah konfigurasi kunci di Menyetel enkripsi pada disk booting control plane dan etcd.
    2. Temukan jalur ke setiap kunci menggunakan petunjuk di Menggunakan kunci enkripsi di cluster.
    3. Membuat cluster:

      gcloud container clusters create-auto example-cluster \
          --location=us-central1 \
          --project=CLUSTER_PROJECT_ID \
          --cluster-version=VERSION \
          --service-account-signing-keys=projects/KEY_PROJECT_ID/locations/us-central1/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1 \
          --service-account-verification-keys=projects/KEY_PROJECT_ID/locations/us-central1/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1 \
          --cluster-ca=projects/KEY_PROJECT_ID/locations/us-central1/caPools/cluster-ca-pool \
          --etcd-peer-ca=projects/KEY_PROJECT_ID/locations/us-central1/caPools/etcd-peer-ca-pool \
          --etcd-api-ca=projects/KEY_PROJECT_ID/locations/us-central1/caPools/etcd-api-ca-pool \
          --aggregation-ca=projects/KEY_PROJECT_ID/locations/us-central1/caPools/aggregation-ca-pool \
          --control-plane-disk-encryption-key=PATH_TO_DISK_KEY \
          --gkeops-etcd-backup-encryption-key=PATH_TO_ETCD_BACKUP_KEY
      

      Ganti kode berikut:

      • CLUSTER_PROJECT_ID: project ID dari project cluster.
      • VERSION: versi GKE cluster. Harus 1.31.1-gke.1846000 atau yang lebih baru.
      • PATH_TO_DISK_KEY: jalur ke kunci enkripsi disk Anda.
      • PATH_TO_ETCD_BACKUP_KEY: jalur ke kunci enkripsi cadangan internal etcd Anda.

    Anda juga dapat menggunakan flag ini saat membuat cluster mode Standar baru.

Memverifikasi bahwa cluster menggunakan kunci dan CA yang Anda tentukan

Bagian ini menunjukkan cara memverifikasi kunci dan CA yang digunakan selama pembuatan cluster. Anda dapat melakukan verifikasi ini menggunakan Cloud Logging atau menggunakan Google Cloud CLI.

Menggunakan Logging untuk memverifikasi kunci dan CA

Untuk memverifikasi kunci dan CA menggunakan Logging, lakukan hal berikut:

  1. Di konsol Google Cloud, buka halaman Logs Explorer:

    Buka Logs Explorer

  2. Tentukan kueri berikut:

    resource.type="gke_cluster"
    resource.labels.cluster_name="CLUSTER_NAME"
    resource.labels.location="CLUSTER_LOCATION"
    protoPayload.serviceName="container.googleapis.com"
    protoPayload.methodName=~"google.container.v(1|1alpha1|1beta1).ClusterManager.CreateCluster"
    protoPayload.request.cluster.userManagedKeysConfig:*
    

    protoPayload.request.cluster.userManagedKeysConfig:* memfilter hasil untuk log pembuatan cluster yang menyertakan kunci dan CA yang Anda kelola.

  3. Klik Run query.

Pada hasil, luaskan log pembuatan cluster Anda. Pastikan jalur ke kunci dan CA sama dengan yang Anda buat untuk cluster tersebut, seperti dalam contoh berikut:

# lines omitted for clarity
userManagedKeysConfig: {
  aggregationCa: "projects/KEY_PROJECT_ID/locations/us-central1/caPools/aggregation-ca-pool"
  clusterCa: "projects/KEY_PROJECT_ID/locations/us-central1/caPools/cluster-ca-pool"
  etcdApiCa: "projects/KEY_PROJECT_ID/locations/us-central1/caPools/etcd-api-ca-pool"
  etcdPeerCa: "projects/KEY_PROJECT_ID/locations/us-central1/caPools/etcd-peer-ca-pool"
  serviceAccountSigningKeys: [
    0: "projects/KEY_PROJECT_ID/locations/us-central1/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1"
  ]
  serviceAccountVerificationKeys: [
    0: "projects/KEY_PROJECT_ID/locations/us-central1/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1"
  ]
}

Menggunakan gcloud CLI untuk memverifikasi kunci dan CA

Untuk memverifikasi bahwa cluster menggunakan CA dan kunci yang Anda buat, jalankan perintah berikut:

gcloud container clusters describe example-cluster \
    --location=us-central1 \
    --project=CLUSTER_PROJECT_ID

Output harus menyertakan kolom userManagedKeysConfig seperti dalam contoh berikut:

# lines omitted for clarity
userManagedKeysConfig:
  sa-signing-key: projects/KEY_PROJECT_ID/locations/us-central1/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1
  sa-verification-key: projects/KEY_PROJECT_ID/locations/us-central1/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1
  cluster-ca: projects/KEY_PROJECT_ID/locations/us-central1/caPools/cluster-ca-pool
  etcd-peer-ca: projects/KEY_PROJECT_ID/locations/us-central1/caPools/etcd-peer-ca-pool
  etcd-api-ca: projects/KEY_PROJECT_ID/locations/us-central1/caPools/etcd-api-ca-pool
  aggregation-ca: projects/KEY_PROJECT_ID/locations/us-central1/caPools/aggregation-ca-pool

Pembersihan

Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.

Menghapus project

    Menghapus project Google Cloud:

    gcloud projects delete PROJECT_ID

Menghapus resource satu per satu

  1. Hapus cluster:

    gcloud container clusters delete example-cluster \
        --location=us-central1 \
        --project=CLUSTER_PROJECT_ID
    
  2. Nonaktifkan root CA:

    gcloud privateca roots disable cluster-root-ca \
        --location=us-central1 \
        --pool=projects/KEY_PROJECT_ID/locations/us-central1/caPools/cluster-ca-pool \
        --project=KEY_PROJECT_ID
    
    gcloud privateca roots disable etcd-peer-root-ca \
        --location=us-central1 \
        --pool=projects/KEY_PROJECT_ID/locations/us-central1/caPools/etcd-peer-ca-pool \
        --project=KEY_PROJECT_ID
    
    gcloud privateca roots disable etcd-api-root-ca \
        --location=us-central1 \
        --pool=projects/KEY_PROJECT_ID/locations/us-central1/caPools/etcd-api-ca-pool \
        --project=KEY_PROJECT_ID
    
    gcloud privateca roots disable aggregation-root-ca \
        --location=us-central1 \
        --pool=projects/KEY_PROJECT_ID/locations/us-central1/caPools/aggregation-ca-pool \
        --project=KEY_PROJECT_ID
    
  3. Hapus root CA:

    gcloud privateca roots delete cluster-root-ca \
        --location=us-central1 \
        --pool=projects/KEY_PROJECT_ID/locations/us-central1/caPools/cluster-ca-pool \
        --project=KEY_PROJECT_ID
    
    gcloud privateca roots delete etcd-peer-root-ca \
        --location=us-central1 \
        --pool=projects/KEY_PROJECT_ID/locations/us-central1/caPools/etcd-peer-ca-pool \
        --project=KEY_PROJECT_ID
    
    gcloud privateca roots delete etcd-api-root-ca \
        --location=us-central1 \
        --pool=projects/KEY_PROJECT_ID/locations/us-central1/caPools/etcd-api-ca-pool \
        --project=KEY_PROJECT_ID
    
    gcloud privateca roots delete aggregation-root-ca \
        --location=us-central1 \
        --pool=projects/KEY_PROJECT_ID/locations/us-central1/caPools/aggregation-ca-pool \
        --project=KEY_PROJECT_ID
    
  4. Hapus kumpulan CA:

    gcloud privateca pools delete cluster-ca-pool --location=us-central1 \
        --project=KEY_PROJECT_ID
    
    gcloud privateca pools delete etcd-peer-ca-pool --location=us-central1 \
        --project=KEY_PROJECT_ID
    
    gcloud privateca pools delete etcd-api-ca-pool --location=us-central1 \
        --project=KEY_PROJECT_ID
    
    gcloud privateca pools delete aggregation-ca-pool --location=us-central1 \
        --project=KEY_PROJECT_ID
    
  5. Hapus kunci:

    gcloud kms keys versions destroy 1 \
        --location=us-central1 \
        --keyring=KEY_RING_NAME \
        --key=sa-signing-key \
        --project=KEY_PROJECT_ID
    
    gcloud kms keys versions destroy 1 \
        --location=us-central1 \
        --keyring=KEY_RING_NAME \
        --key=cluster-ca-key \
        --project=KEY_PROJECT_ID
    
    gcloud kms keys versions destroy 1 \
        --location=us-central1 \
        --keyring=KEY_RING_NAME \
        --key=etcd-peer-ca-key \
        --project=KEY_PROJECT_ID
    
    gcloud kms keys versions destroy 1 \
        --location=us-central1 \
        --keyring=KEY_RING_NAME \
        --key=etcd-api-ca-key \
        --project=KEY_PROJECT_ID
    
    gcloud kms keys versions destroy 1 \
        --location=us-central1 \
        --keyring=KEY_RING_NAME \
        --key=aggregation-ca-key \
        --project=KEY_PROJECT_ID
    

Anda tidak dapat menghapus ring kunci dari Cloud KMS. Namun, gantungan kunci tidak dikenai biaya tambahan.

Langkah selanjutnya