Halaman ini menunjukkan cara mengonfigurasi bidang kontrol cluster Google Kubernetes Engine (GKE) dengan otoritas sertifikat (CA) dan kunci yang Anda kelola. Panduan ini ditujukan untuk administrator keamanan yang memiliki persyaratan kepatuhan atau kebijakan organisasi tertentu untuk kontrol atas penerbitan dan penandatanganan kredensial.
Halaman ini menjelaskan salah satu bagian dari serangkaian fitur bidang kontrol opsional di GKE yang memungkinkan Anda melakukan tugas seperti memverifikasi postur keamanan bidang kontrol atau mengonfigurasi enkripsi dan penandatanganan kredensial di bidang 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 lebih banyak visibilitas atau kontrol atas bidang 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) serta mengonfigurasi cluster untuk menggunakan resource ini alih-alih CA dan kunci yang dikelola Google Cloud.
Untuk mempelajari lebih lanjut komponen spesifik yang Anda buat, lihat CA dan kunci yang dikelola sendiri.
Penggunaan dengan fitur otoritas bidang kontrol GKE lainnya
Otoritas bidang kontrol GKE menyediakan fitur berikut yang terkait dengan kunci yang dikelola sendiri:
- Menjalankan kunci dan certificate authority (CA) Anda sendiri (halaman ini)
- Mengenkripsi komponen bidang kontrol
Tujuan
- Membuat kunci di Cloud KMS
- Membuat CA di CA Service
- Memberikan peran Identity and Access Management (IAM) ke agen layanan GKE
- Buat cluster GKE yang menggunakan CA dan kunci Anda
- Verifikasi bahwa cluster menggunakan CA dan kunci Anda
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
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
- 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.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Kubernetes Engine, Certificate Authority Service, and Cloud Key Management Service APIs:
gcloud services enable container.googleapis.com
privateca.googleapis.com cloudkms.googleapis.com -
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Kubernetes Engine, Certificate Authority Service, and Cloud Key Management Service APIs:
gcloud services enable container.googleapis.com
privateca.googleapis.com cloudkms.googleapis.com - Pastikan lingkungan Anda memenuhi syarat untuk menggunakan fitur otoritas bidang kontrol GKE. Untuk mengaktifkan fitur ini, hubungi tim penjualan Anda. Google Cloud
- Untuk melacak penerbitan dan penggunaan kredensial secara andal, pastikan log audit Akses Data berikut diaktifkan:
- Cloud Key Management Service (KMS) API:
DATA_READ
- Certificate Authority Service:
ADMIN_READ
Untuk mengaktifkan jenis log ini, lihat Mengaktifkan log audit Akses Data.
- Cloud Key Management Service (KMS) API:
-
Buat kunci Cloud KMS:
Cloud KMS Admin (
roles/cloudkms.admin
) di project kunci Anda -
Buat kumpulan CA dan CA root:
CA Service Admin (
roles/privateca.admin
) di project utama Anda -
Buat cluster GKE:
Admin Cluster Kubernetes Engine (
roles/container.clusterAdmin
) di project cluster Anda - Anda hanya dapat menggunakan kunci dari Cloud KMS. Anda tidak dapat menggunakan penyedia KMS lain atau penyedia enkripsi lain.
- Kunci Cloud External Key Manager (Cloud EKM) tidak didukung.
- Anda hanya dapat menggunakan CA dari CA Service.
Region dan zona tempat Anda dapat menggunakan otoritas bidang kontrol GKE bergantung pada apakah Anda juga ingin menggunakan fitur tertentu, sebagai berikut:
- Untuk mengenkripsi boot disk bidang kontrol dengan kunci enkripsi yang dikelola pelanggan, cluster Anda
harus berada di salah satu region berikut:
asia-east1
asia-northeast1
asia-southeast1
europe-west1
europe-west4
us-central1
us-east1
us-east4
us-east5
us-south1
us-west1
us-west3
us-west4
- Untuk menggunakan Confidential GKE Node dengan otoritas bidang kontrol GKE, cluster Anda harus berada di region yang mendukung mode Confidential untuk Hyperdisk Balanced.
Jika Anda tidak menggunakan fitur ini, Anda dapat menggunakan otoritas bidang kontrol GKE di lokasi Google Cloud mana pun.
- Untuk mengenkripsi boot disk bidang kontrol dengan kunci enkripsi yang dikelola pelanggan, cluster Anda
harus berada di salah satu region berikut:
Peran dan izin yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk menjalankan CA dan kunci 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:
Menyiapkan lingkungan
Di bagian ini, Anda mengidentifikasi Google Cloud project yang akan digunakan dalam tutorial ini, dan Anda membuat key ring di Cloud KMS untuk menyimpan kunci Anda.
Mengidentifikasi project
Sebaiknya gunakan project Google Cloud terpisah sebagai berikut:
- Project kunci: berisi semua kunci dan CA.
- Project cluster: berisi cluster GKE Anda.
Anda dapat secara opsional menggunakan project yang sama untuk kunci, CA, dan cluster GKE, tetapi sebaiknya Anda menggunakan project terpisah agar tim yang mengelola operasi kriptografi di organisasi Anda terpisah dari tim yang mengelola operasi cluster.
Membuat key ring
Buat key ring di project kunci untuk menyimpan semua kunci untuk cluster tertentu. Anda harus membuat key ring di lokasi yang sama dengan cluster GKE Anda.
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 berikut saat Anda membuat resource ini di Cloud KMS:
- Jika memiliki key ring yang sudah ada 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 Google Cloud lokasi 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
ataursa-sign-pkcs1-3072-sha256
. - Kunci otoritas sertifikat: algoritma yang kuat seperti
ec-sign-p256-sha256
.
- Kunci penandatanganan ServiceAccount: algoritma PKCS1 penandatanganan RSA yang kuat, seperti
- Kunci hardware Cloud HSM didukung, tetapi
software
tingkat perlindungan sudah cukup 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 sedang digunakan oleh cluster. Sebelum Anda menghapus kunci atau CA, pastikan resource tersebut tidak digunakan.
Untuk membuat kunci, jalankan perintah berikut:
Buat kunci penandatanganan Akun Layanan Kubernetes, yang juga Anda tetapkan 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 khusus Anda.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
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
Buat kunci CA root API etcd:
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
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
Buat CA
Setelah membuat kunci untuk setiap fungsi bidang kontrol, gunakan setiap kunci untuk membuat kumpulan CA dan CA root yang sesuai menggunakan CA Service:
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. Menghilangkan tanda ini akan memublikasikan sertifikat ke bucket Cloud Storage. Untuk mengetahui detailnya, lihat Mengaktifkan publikasi CRL dan sertifikat CA untuk CA di kumpulan CA.Buat CA root 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.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
Buat CA root 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
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
Buat CA root API etcd:
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
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
Buat CA root 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 CA Service. Agen layanan menggunakan resource ini untuk menandatangani, memverifikasi, dan menerbitkan kredensial di cluster. Anda dapat menggunakan peran IAM bawaan berikut:
- Pengguna Kunci Kripto KMS Kubernetes Engine
(
roles/container.cloudKmsKeyUser
) - CA Service Certificate Manager
(
roles/privateca.certificateManager
)
Untuk memberikan peran ini ke agen layanan GKE, lakukan hal berikut:
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.Berikan peran Pengguna Kunci Kripto KMS Kubernetes Engine pada kunci penandatanganan akun layanan yang Anda buat di Buat 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.iam.gserviceaccount.com" \ --role=roles/container.cloudKmsKeyUser \ --project=KEY_PROJECT_ID
Ganti
CLUSTER_PROJECT_NUMBER
dengan nomor project untuk project cluster.Berikan peran CA Service Certificate Manager pada kumpulan CA yang Anda buat di Buat CA:
gcloud privateca pools add-iam-policy-binding cluster-ca-pool \ --location=us-central1 \ --member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \ --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.iam.gserviceaccount.com" \ --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.iam.gserviceaccount.com" \ --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.iam.gserviceaccount.com" \ --role=roles/privateca.certificateManager \ --project=KEY_PROJECT_ID
Memberikan peran tambahan saat tidak menggunakan gcloud CLI
Bagian ini menjelaskan langkah-langkah konfigurasi tambahan yang harus Anda lakukan jika Anda berencana mengonfigurasi CA dan kunci menggunakan klien seperti Terraform atau konsol Google Cloud , bukan menggunakan gcloud CLI. Jika Anda menggunakan gcloud CLI, lewati bagian ini dan buka bagian Siapkan CA dan kunci di cluster baru.
Saat Anda menggunakan gcloud CLI untuk menyiapkan CA dan kunci, seperti yang dijelaskan di halaman ini, gcloud CLI akan otomatis membuat dan mengonfigurasi agen layanan untuk Layanan CA serta memberikan peran IAM kepada agen layanan tersebut. Namun, jika Anda menggunakan klien seperti Terraform atau konsol Google Cloud untuk mengonfigurasi lingkungan Google Cloud, Anda harus melakukan langkah-langkah konfigurasi ini secara manual sebagai berikut untuk project utama Anda:
Memicu pembuatan agen layanan CA Service.
gcloud beta services identity create --service=privateca.googleapis.com \ --project=KEY_PROJECT_ID
Temukan nomor project project utama Anda:
gcloud projects describe KEY_PROJECT_ID \ --format='value(projectNumber)'
Berikan peran Pelihat (
roles/viewer
) dan peran Penanda/Pemverifikasi CryptoKey Cloud KMS (roles/cloudkms.signerVerifier
) pada semua kunci CA root yang Anda buat di bagian Buat kunci:for key in cluster-ca-key etcd-peer-ca-key etcd-api-ca-key aggregation-ca-key do gcloud kms keys add-iam-policy-binding $key \ --keyring=KEY_RING_NAME \ --location=LOCATION \ --role=roles/viewer \ --member="serviceAccount:service-KEY_PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com" \ --project=KEY_PROJECT_ID gcloud kms keys add-iam-policy-binding $key \ --keyring=KEY_RING_NAME \ --location=LOCATION \ --role=roles/cloudkms.signerVerifier \ --member="serviceAccount:service-KEY_PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com" \ --project=KEY_PROJECT_ID done
Ganti
KEY_PROJECT_NUMBER
dengan nomor project utama dari output langkah sebelumnya.Perintah ini adalah loop
for
yang melakukan iterasi melalui kunci CA root, memberikan setiap peran pada kunci tersebut kepada agen layanan CA Service. Jika Anda menggunakan nama yang berbeda untuk kunci CA root, jalankan perintah ini secara manual untuk setiap kunci.
Menyiapkan CA dan kunci di cluster baru
Setelah membuat kunci, kumpulan CA, CA root, dan memberikan peran IAM kepada 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 tanda
service-account-signing-keys
dan untuk tandaservice-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:
Temukan jalur ke versi kunci penandatanganan akun layanan yang diaktifkan terbaru:
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
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 berbeda yang ditentukan
bergantung pada fitur otoritas bidang kontrol GKE yang ingin Anda
konfigurasi. Anda hanya dapat mengonfigurasi fitur ini di cluster selama pembuatan cluster. Perintah berikut 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 boot disk bidang kontrol dan enkripsi etcd, lakukan hal berikut:
- Lakukan semua langkah konfigurasi kunci di Mengenkripsi etcd dan boot disk bidang kontrol.
- Temukan jalur ke setiap kunci menggunakan petunjuk di Menggunakan kunci enkripsi di cluster.
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 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.
Verifikasi 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:
Di konsol Google Cloud , buka halaman Logs Explorer:
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.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
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Menghapus resource satu per satu
Hapus cluster:
gcloud container clusters delete example-cluster \ --location=us-central1 \ --project=CLUSTER_PROJECT_ID
Nonaktifkan CA root:
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
Hapus CA root:
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
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
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 key ring dari Cloud KMS. Namun, gantungan kunci tidak dikenai biaya tambahan.
Langkah berikutnya
- Melacak penggunaan identitas sejak saat penerbitan
- Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.