本頁說明如何使用您管理的憑證授權機構 (CA) 和金鑰,設定 Google Kubernetes Engine (GKE) 叢集控制層。這份指南適用於安全管理員,他們對憑證核發和簽署的控管有特定的機構法規遵循或政策要求。
本頁說明 GKE 中一組選用控制層功能,可讓您執行驗證控制層安全狀態等工作,或使用您管理的金鑰在控制層中設定加密和憑證簽署。詳情請參閱「關於 GKE 控制層授權」。
根據預設, Google Cloud 會對受管理控制層套用各種安全措施。 本頁說明選用功能,可讓您進一步瞭解或控管 GKE 控制層。
您應該已熟悉下列概念:
控制層憑證元件
GKE 叢集會使用特定 CA 和金鑰,在叢集中核發憑證,例如 X.509 憑證或 ServiceAccount 權杖。您可以在 Cloud Key Management Service (Cloud KMS) 中建立金鑰,並在 Certificate Authority Service (CA Service) 中建立 CA,然後將叢集設定為使用這些資源,而非 Google Cloud管理的 CA 和金鑰。
如要進一步瞭解您建立的特定元件,請參閱「自行管理的 CA 和金鑰」。
搭配其他 GKE 控制層授權功能使用
GKE 控制層授權單位提供下列與自管金鑰相關的功能:
- 自行執行憑證授權單位 (CA) 和金鑰 (本頁)
- 加密控制層元件
目標
- 在 Cloud KMS 中建立金鑰
- 在 CA 服務中建立 CA
- 將 Identity and Access Management (IAM) 角色授予 GKE 服務代理程式
- 建立使用 CA 和金鑰的 GKE 叢集
- 確認叢集使用您的 CA 和金鑰
費用
在本文件中,您會使用 Google Cloud的下列計費元件:
如要根據預測用量估算費用,請使用 Pricing Calculator。
完成本文所述工作後,您可以刪除已建立的資源,避免繼續計費。詳情請參閱清除所用資源一節。
事前準備
- 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 - 確認您的環境符合使用 GKE 控制層授權功能資格。如要啟用這些功能,請與 Google Cloud 銷售團隊聯絡。
- 如要確實追蹤憑證核發和使用情形,請務必啟用下列資料存取稽核記錄:
- Cloud Key Management Service (KMS) API:
DATA_READ
- 憑證授權單位服務:
ADMIN_READ
如要啟用這些記錄類型,請參閱啟用資料存取稽核記錄。
- Cloud Key Management Service (KMS) API:
-
建立 Cloud KMS 金鑰:
金鑰專案的 Cloud KMS 管理員 (
roles/cloudkms.admin
) -
建立 CA 集區和根 CA:
CA 服務管理員 (
roles/privateca.admin
) 在您的金鑰專案中 -
建立 GKE 叢集:
叢集專案的 Kubernetes Engine 叢集管理員 (
roles/container.clusterAdmin
) - 您只能使用 Cloud KMS 中的金鑰。您無法使用其他 KMS 提供者或其他加密提供者。
- 系統不支援 Cloud External Key Manager (Cloud EKM) 金鑰。
- 您只能使用 CA 服務中的 CA。
您可使用 GKE 控制層授權的區域和可用區,取決於是否要使用特定功能,如下所示:
- 如要使用客戶管理的加密金鑰加密控制層開機磁碟,叢集必須位於下列其中一個區域:
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
- 如要搭配 GKE 控制層授權使用機密 GKE 節點,叢集必須位於支援 Hyperdisk Balanced 機密模式的區域。
如果您未使用這些功能,則可以在任何 Google Cloud 位置使用 GKE 控制層授權。
- 如要使用客戶管理的加密金鑰加密控制層開機磁碟,叢集必須位於下列其中一個區域:
必要角色和權限
如要取得執行自有 CA 和金鑰所需的權限,請要求管理員授予下列 IAM 角色:
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
需求條件
您必須使用 GKE 1.31.1-gke.1846000 以上版本。
限制
限制如下:
準備環境
在本節中,您會找出 Google Cloud 要在本教學課程中使用的專案,並在 Cloud KMS 中建立金鑰環來存放金鑰。
識別專案
建議您使用個別的 Google Cloud 專案,如下所示:
- 金鑰專案:包含所有金鑰和 CA。
- 叢集專案:內含 GKE 叢集。
您可以選擇將金鑰、CA 和 GKE 叢集放在同一個專案中,但建議您使用不同的專案,讓機構中管理加密編譯作業的團隊,與管理叢集作業的團隊分開。
建立金鑰環
在金鑰專案中建立金鑰環,用於保存特定叢集的所有金鑰。您必須在與 GKE 叢集相同的位置建立金鑰環。
執行下列指令:
gcloud kms keyrings create KEY_RING_NAME \
--location=us-central1 \
--project=KEY_PROJECT_ID
更改下列內容:
KEY_RING_NAME
:金鑰環的名稱。KEY_PROJECT_ID
:金鑰專案的專案 ID。
建立金鑰
針對服務帳戶金鑰和 CA 等憑證授權單位,您可以使用 Cloud KMS 建立金鑰。本節說明如何建立 GKE 用於簽署及驗證叢集憑證的金鑰。您可以根據貴機構的需求,為這些金鑰指定自己的屬性。詳情請參閱「建立金鑰」頁面和 projects.locations.keyRings.cryptoKeys
API 參考資料。
在 Cloud KMS 中建立這些資源時,請注意下列事項:
- 如果金鑰專案中已有金鑰環,您可以使用該金鑰環儲存為叢集建立的所有金鑰。
- 金鑰環必須與叢集位於相同 Google Cloud 位置,才能盡量縮短延遲時間。
- 金鑰必須指定
asymmetric-signing
做為金鑰用途。 - 請根據金鑰類型使用下列演算法:
- ServiceAccount 簽署金鑰:強大的 RSA 簽署 PKCS1 演算法,例如
rsa-sign-pkcs1-4096-sha256
或rsa-sign-pkcs1-3072-sha256
。 - 憑證授權單位金鑰:強效演算法,例如
ec-sign-p256-sha256
。
- ServiceAccount 簽署金鑰:強大的 RSA 簽署 PKCS1 演算法,例如
- 系統支援 Cloud HSM 硬體金鑰,但
software
防護等級已足以應付大多數用途。如要瞭解硬體金鑰,請參閱 Cloud HSM。 - 請勿修改金鑰銷毀的預設時間長度。
- GKE 不會阻止您刪除叢集使用的 Cloud KMS 金鑰,包括 CA 服務金鑰。刪除金鑰或 CA 前,請確保資源未使用。
如要建立金鑰,請執行下列指令:
建立 Kubernetes ServiceAccount 簽署金鑰,您也可以在建立叢集時,將其指定為服務帳戶驗證金鑰:
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
將
KEY_PROJECT_ID
替換為專屬金鑰專案的專案 ID。建立叢集根 CA 金鑰:
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
建立 etcd 對等互連根 CA 金鑰:
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
建立 etcd API 根 CA 金鑰:
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
建立匯總根 CA 金鑰:
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
建立 CA
為每個控制層函式建立金鑰後,請使用各個金鑰,透過 CA 服務建立 CA 集區和對應的根 CA:
建立叢集 CA 集區:
gcloud privateca pools create cluster-ca-pool \ --location=us-central1 \ --tier=enterprise \ --project=KEY_PROJECT_ID \ --no-publish-crl --no-publish-ca-cert
--no-publish-crl
旗標和--no-publish-ca-cert
旗標為選用項目。如果省略這些旗標,憑證就會發布至 Cloud Storage 值區。詳情請參閱「為 CA 集區中的 CA 啟用 CA 憑證和 CRL 發布功能」。建立叢集根 CA:
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
將
ORGANIZATION
替換為貴機構的名稱。建立 etcd 對等互連 CA 集區:
gcloud privateca pools create etcd-peer-ca-pool \ --location=us-central1 \ --tier=enterprise \ --project=KEY_PROJECT_ID \ --no-publish-crl --no-publish-ca-cert
建立 etcd 對等互連根 CA:
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
建立 etcd API CA 集區:
gcloud privateca pools create etcd-api-ca-pool \ --location=us-central1 \ --tier=enterprise \ --project=KEY_PROJECT_ID \ --no-publish-crl --no-publish-ca-cert
建立 etcd API 根層級 CA:
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
建立匯總 CA 集區:
gcloud privateca pools create aggregation-ca-pool \ --location=us-central1 \ --tier=enterprise \ --project=KEY_PROJECT_ID \ --no-publish-crl --no-publish-ca-cert
建立匯總根 CA:
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
將 IAM 角色授予 GKE 服務代理
GKE 服務代理需要存取您在 Cloud KMS 和 CA Service 中建立的資源。服務代理程式會使用這些資源在叢集中簽署、驗證及核發憑證。您可以使用下列預先定義的 IAM 角色:
- Kubernetes Engine KMS 加密編譯金鑰使用者
(
roles/container.cloudKmsKeyUser
) - CA 服務憑證管理員
(
roles/privateca.certificateManager
)
如要將這些角色授予 GKE 服務代理程式,請執行下列操作:
找出叢集專案的專案編號:
gcloud projects describe CLUSTER_PROJECT_ID \ --format='value(projectNumber)'
將
CLUSTER_PROJECT_ID
替換為叢集專案的專案 ID。在您於「建立金鑰」中建立的服務帳戶簽署金鑰上,授予 Kubernetes Engine KMS Crypto Key User 角色:
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
將
CLUSTER_PROJECT_NUMBER
替換為叢集專案的專案編號。在您於「建立 CA」中建立的 CA 集區中,授予 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
未使用 gcloud CLI 時授予其他角色
如果您打算使用 Terraform 或 Google Cloud 控制台等用戶端設定 CA 和金鑰,而非使用 gcloud CLI,則必須執行本節所述的其他設定步驟。如果您使用 gcloud CLI,請略過這個部分,並前往「在新叢集上設定 CA 和金鑰」一節。
如本頁所述,使用 gcloud CLI 設定 CA 和金鑰時,gcloud CLI 會自動建立及設定 CA 服務的服務代理程式,並授予服務代理程式 IAM 角色。不過,如果您使用 Terraform 或 Google Cloud 控制台等用戶端設定 Google Cloud環境,則必須為金鑰專案手動執行下列設定步驟:
觸發建立 CA 服務服務代理。
gcloud beta services identity create --service=privateca.googleapis.com \ --project=KEY_PROJECT_ID
找出主要專案的專案編號:
gcloud projects describe KEY_PROJECT_ID \ --format='value(projectNumber)'
在「建立金鑰」一節中建立的所有根 CA 金鑰上,授予「檢視者」 (
roles/viewer
) 角色和「Cloud KMS CryptoKey 簽署者/驗證者」(roles/cloudkms.signerVerifier
) 角色: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
將
KEY_PROJECT_NUMBER
替換為上一步輸出內容中的金鑰專案編號。這項指令是
for
迴圈,會逐一迭代處理根 CA 金鑰,並將該金鑰的每個角色授予 CA 服務服務代理程式。如果您為根 CA 金鑰使用不同的名稱,請為每個金鑰手動執行這些指令。
在新叢集上設定 CA 和金鑰
建立金鑰、CA 集區、根 CA,並將 IAM 角色授予 GKE 服務代理程式後,請建立使用這些資源的新叢集。
您在叢集建立指令中指定的旗標需要下列資源路徑做為值:
- 服務帳戶簽署金鑰在 Cloud KMS 中的金鑰版本路徑,您已在「建立金鑰」中建立該金鑰。您會為
service-account-signing-keys
標記和service-account-verification-keys
標記指定這個路徑。 - 您在「建立 CA」中建立的每個 CA 集區路徑。
如要設定新叢集以使用金鑰和 CA,請按照下列步驟操作:
找出最新啟用服務帳戶簽署金鑰版本的路徑:
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
將
KEY_PROJECT_ID
替換為金鑰專案的專案 ID。輸出結果會與下列內容相似:
projects/KEY_PROJECT_ID/locations/us-central1/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1
找出您建立的每個 CA 集區路徑:
gcloud privateca pools list --format="get(name)" \ --project=KEY_PROJECT_ID
輸出結果會與下列內容相似:
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
確認輸出內容包含您為 GKE 建立的所有 CA 集區。
建立叢集
在本節中,您將建立叢集,並根據要設定的 GKE 控制層授權功能,指定不同選項。您只能在建立叢集時,為叢集設定這些功能。下列指令會建立 Autopilot 模式叢集。如要改為建立標準模式叢集,請使用相同的旗標搭配 gcloud container clusters create
指令。
如要只設定在本教學課程中建立的 CA 和金鑰,請執行下列指令:
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
更改下列內容:
CLUSTER_PROJECT_ID
:叢集專案的專案 ID。VERSION
:叢集的 GKE 版本。必須為 1.31.1-gke.1846000 以上版本。
如要設定 CA 和金鑰,以及控制層開機磁碟加密和 etcd 加密,請執行下列步驟:
- 按照「加密 etcd 和控制層開機磁碟」一文中的指示,完成所有金鑰設定步驟。
- 按照「在叢集中使用加密金鑰」一文中的操作說明,找出每個金鑰的路徑。
建立叢集:
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
更改下列內容:
CLUSTER_PROJECT_ID
:叢集專案的專案 ID。VERSION
:叢集的 GKE 版本。必須為 1.31.1-gke.1846000 以上版本。PATH_TO_DISK_KEY
:磁碟加密金鑰的路徑。PATH_TO_ETCD_BACKUP_KEY
:etcd 內部備份加密金鑰的路徑。
您也可以在建立新的標準模式叢集時使用這些標記。
確認叢集使用您指定的金鑰和 CA
本節說明如何驗證叢集建立期間使用的金鑰和 CA。您可以使用 Cloud Logging 或 Google Cloud CLI 執行這項驗證。
使用記錄功能驗證金鑰和 CA
如要使用 Logging 驗證金鑰和 CA,請按照下列步驟操作:
前往 Google Cloud 控制台的「Logs Explorer」頁面:
指定下列查詢:
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:*
會篩選叢集建立記錄的結果,包括您管理的金鑰和 CA。點選「執行查詢」
在結果中展開叢集建立記錄。確認金鑰和 CA 的路徑與您為該叢集建立的路徑相同,如下列範例所示:
# 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"
]
}
使用 gcloud CLI 驗證金鑰和 CA
如要確認叢集是否使用您建立的憑證授權單位和金鑰,請執行下列指令:
gcloud container clusters describe example-cluster \
--location=us-central1 \
--project=CLUSTER_PROJECT_ID
輸出內容應包含 userManagedKeysConfig
欄位,如下列範例所示:
# 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
清除所用資源
如要避免系統向您的 Google Cloud 帳戶收取本教學課程中所用資源的相關費用,請刪除含有該項資源的專案,或者保留專案但刪除個別資源。
刪除專案
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
刪除個別資源
刪除叢集:
gcloud container clusters delete example-cluster \ --location=us-central1 \ --project=CLUSTER_PROJECT_ID
停用根 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
刪除根 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
刪除 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
刪除金鑰:
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
您無法從 Cloud KMS 刪除金鑰環。不過,鑰匙圈不會產生額外費用。
後續步驟
- 從核發身分證件的那一刻起追蹤使用情況
- 探索 Google Cloud 的參考架構、圖表和最佳做法。 歡迎瀏覽我們的雲端架構中心。