Auf dieser Seite wird beschrieben, wie Sie die Steuerungsebene Ihres Google Kubernetes Engine-Clusters (GKE) mit Zertifizierungsstellen (CAs) und Schlüsseln konfigurieren, die Sie verwalten. Diese Anleitung richtet sich an Sicherheitsadministratoren, die bestimmte Compliance- oder Richtlinienanforderungen für die Kontrolle der Ausstellung und Signierung von Anmeldedaten haben.
Auf dieser Seite wird ein Teil einer Reihe optionaler Steuerungsebenenfunktionen in GKE beschrieben, mit denen Sie Aufgaben wie das Überprüfen des Sicherheitsstatus der Steuerungsebene oder das Konfigurieren der Verschlüsselung und der Anmeldedatensignierung in der Steuerungsebene mit von Ihnen verwalteten Schlüsseln ausführen können. Weitere Informationen finden Sie unter GKE Control Plane Authority.
Standardmäßig wendet Google Cloud verschiedene Sicherheitsmaßnahmen auf die verwaltete Steuerungsebene an. Auf dieser Seite werden optionale Funktionen beschrieben, mit denen Sie mehr Einblick in die GKE-Steuerungsebene erhalten oder mehr Kontrolle darüber haben.
Sie sollten mit den folgenden Konzepten vertraut sein:
- Anfragen zur Zertifikatssignierung (Certificate Signing Requests, CSRs)
- Zertifizierungsstellen
- etcd
- GKE-Clusterarchitektur
Komponenten von Anmeldedaten der Steuerungsebene
In GKE-Clustern werden bestimmte Zertifizierungsstellen und Schlüssel verwendet, um Anmeldedaten im Cluster auszustellen, z. B. X.509-Zertifikate oder Dienstkonto-Tokens. Sie können Schlüssel in Cloud Key Management Service (Cloud KMS) und Zertifizierungsstellen im Certificate Authority Service (CA Service) erstellen und Ihre Cluster so konfigurieren, dass diese Ressourcen anstelle von von Google Cloudverwalteten Zertifizierungsstellen und Schlüsseln verwendet werden.
Weitere Informationen zu den einzelnen Komponenten, die Sie erstellen, finden Sie unter Selbst verwaltete CAs und Schlüssel.
Verwendung mit anderen GKE Control Plane Authority-Funktionen
Die GKE Control Plane Authority bietet die folgenden Funktionen im Zusammenhang mit selbstverwalteten Schlüsseln:
- Eigene Zertifizierungsstellen und Schlüssel verwenden (diese Seite)
- Komponenten der Steuerungsebene verschlüsseln
Lernziele
- Schlüssel in Cloud KMS erstellen
- CAs in CA Service erstellen
- IAM-Rollen (Identity and Access Management) für den GKE-Dienst-Agent gewähren
- GKE-Cluster erstellen, der Ihre Zertifizierungsstellen und Schlüssel verwendet
- Prüfen, ob der Cluster Ihre Zertifizierungsstellen und Schlüssel verwendet
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Nach Abschluss der in diesem Dokument beschriebenen Aufgaben können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.
Hinweise
- 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 - Prüfen Sie, ob Ihre Umgebung die Voraussetzungen für die Verwendung von GKE Control Plane Authority-Funktionen erfüllt. Wenn Sie diese Funktionen aktivieren möchten, wenden Sie sich an Ihr Google Cloud Vertriebsteam.
- Damit die Ausstellung und Verwendung von Anmeldedaten zuverlässig nachverfolgt werden kann, müssen die folgenden Audit-Logs zum Datenzugriff aktiviert sein:
- Cloud Key Management Service (KMS) API:
DATA_READ
- Certificate Authority Service:
ADMIN_READ
Informationen zum Aktivieren dieser Logtypen finden Sie unter Audit-Logs zum Datenzugriff aktivieren.
- Cloud Key Management Service (KMS) API:
-
Cloud KMS-Schlüssel erstellen:
Cloud KMS-Administrator (
roles/cloudkms.admin
) in Ihrem Schlüsselprojekt -
CA-Pools und Stamm-CAs erstellen:
CA Service-Administrator (
roles/privateca.admin
) in Ihrem Schlüsselprojekt -
GKE-Cluster erstellen:
Administrator für Kubernetes Engine-Cluster (
roles/container.clusterAdmin
) für Ihr Clusterprojekt - Sie können nur Schlüssel aus Cloud KMS verwenden. Sie können keinen anderen KMS-Anbieter oder Verschlüsselungsanbieter verwenden.
- Cloud EKM-Schlüssel (Cloud External Key Manager) werden nicht unterstützt.
- Sie können nur CAs aus CA Service verwenden.
Die Regionen und Zonen, in denen Sie die GKE Control Plane Authority verwenden können, hängen davon ab, ob Sie auch bestimmte Funktionen verwenden möchten:
- Wenn Sie die Bootlaufwerke der Steuerungsebene mit einem vom Kunden verwalteten Verschlüsselungsschlüssel verschlüsseln möchten, muss sich Ihr Cluster in einer der folgenden Regionen befinden:
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
- Wenn Sie Confidential GKE Nodes mit der GKE-Steuerungsebene verwenden möchten, muss sich Ihr Cluster in einer Region befinden, die den vertraulichen Modus für Hyperdisk Balanced unterstützt.
Wenn Sie diese Funktionen nicht verwenden, können Sie die GKE Control Plane Authority an einem beliebigen Google Cloud -Standort verwenden.
- Wenn Sie die Bootlaufwerke der Steuerungsebene mit einem vom Kunden verwalteten Verschlüsselungsschlüssel verschlüsseln möchten, muss sich Ihr Cluster in einer der folgenden Regionen befinden:
Erforderliche Rollen und Berechtigungen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Ausführen eigener Zertifizierungsstellen und Schlüssel benötigen:
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Voraussetzungen
Sie müssen mindestens die GKE-Version 1.31.1-gke.1846000 verwenden.
Beschränkungen
Es gelten folgende Einschränkungen:
Umgebung vorbereiten
In diesem Abschnitt identifizieren Sie Google Cloud Projekte, die Sie in dieser Anleitung verwenden, und erstellen einen Schlüsselbund in Cloud KMS, der Ihre Schlüssel enthält.
Projekte identifizieren
Wir empfehlen, separate Google Cloud -Projekte wie folgt zu verwenden:
- Schlüsselprojekt: enthält alle Schlüssel und Zertifizierungsstellen.
- Clusterprojekt: enthält Ihre GKE-Cluster.
Sie können optional dasselbe Projekt für Ihre Schlüssel, CAs und GKE-Cluster verwenden. Wir empfehlen jedoch, separate Projekte zu verwenden, damit die Teams, die kryptografische Vorgänge in Ihrer Organisation verwalten, von den Teams getrennt sind, die Clusteroperationen verwalten.
Schlüsselbund erstellen
Erstellen Sie im Schlüsselprojekt einen Schlüsselbund, der alle Schlüssel für einen bestimmten Cluster enthält. Sie müssen den Schlüsselbund am selben Standort wie Ihren GKE-Cluster erstellen.
Führen Sie dazu diesen Befehl aus:
gcloud kms keyrings create KEY_RING_NAME \
--location=us-central1 \
--project=KEY_PROJECT_ID
Ersetzen Sie Folgendes:
KEY_RING_NAME
: Ein Name für Ihren Schlüsselbund.KEY_PROJECT_ID
: die Projekt-ID Ihres Schlüsselprojekts.
Schlüssel erstellen
Für jede der Anmeldedaten-Autoritäten wie Dienstkontoschlüssel und Zertifizierungsstellen erstellen Sie einen Schlüssel mit Cloud KMS. In diesem Abschnitt erfahren Sie, wie Sie die Schlüssel erstellen, die GKE zum Signieren und Überprüfen von Anmeldedaten im Cluster verwendet.
Sie können je nach den Anforderungen Ihrer Organisation eigene Eigenschaften für diese Schlüssel angeben. Weitere Informationen finden Sie auf der Seite Schlüssel erstellen und in der projects.locations.keyRings.cryptoKeys
-API-Referenz.
Beachten Sie beim Erstellen dieser Ressourcen in Cloud KMS Folgendes:
- Wenn Sie in Ihrem Schlüsselprojekt einen vorhandenen Schlüsselbund haben, können Sie diesen verwenden, um alle Schlüssel zu speichern, die Sie für die Verwendung mit Ihrem Cluster erstellen.
- Der Schlüsselbund muss sich am selben Google Cloud Speicherort wie Ihr Cluster befinden, um die Latenz zu minimieren.
- Für Schlüssel muss
asymmetric-signing
als Schlüsselzweck angegeben werden. - Verwenden Sie die folgenden Algorithmen je nach Schlüsseltyp:
- Signaturschlüssel für Dienstkonten: ein starker RSA-Signatur-PKCS1-Algorithmus wie
rsa-sign-pkcs1-4096-sha256
oderrsa-sign-pkcs1-3072-sha256
. - Schlüssel der Zertifizierungsstelle: ein starker Algorithmus wie
ec-sign-p256-sha256
.
- Signaturschlüssel für Dienstkonten: ein starker RSA-Signatur-PKCS1-Algorithmus wie
- Cloud HSM-Hardwareschlüssel werden unterstützt, aber das
software
-Schutzniveau ist für die meisten Anwendungsfälle ausreichend. Weitere Informationen zu Hardwareschlüsseln finden Sie unter Cloud HSM. - Ändern Sie nicht die Standarddauer für die Schlüssellöschung.
- GKE verhindert nicht, dass Sie Cloud KMS-Schlüssel, einschließlich CA Service-Schlüssel, löschen, die vom Cluster verwendet werden. Bevor Sie Schlüssel oder Zertifizierungsstellen löschen, müssen Sie sicherstellen, dass die Ressourcen nicht verwendet werden.
Führen Sie die folgenden Befehle aus, um die Schlüssel zu erstellen:
Erstellen Sie den Signaturschlüssel für das Kubernetes-Dienstkonto, den Sie auch als Bestätigungsschlüssel für das Dienstkonto beim Erstellen des Clusters angeben:
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
Ersetzen Sie
KEY_PROJECT_ID
durch die Projekt-ID Ihres dedizierten Schlüsselprojekts.Schlüssel für die Cluster-Stamm-CA erstellen:
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
Erstellen Sie den etcd-Peer-Stamm-CA-Schlüssel:
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
Erstellen Sie den etcd-API-Stammzertifizierungsstellenschlüssel:
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
Erstellen Sie den Schlüssel der Aggregations-Stamm-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
CAs erstellen
Nachdem Sie die Schlüssel für jede der Steuerungsebenenfunktionen erstellt haben, verwenden Sie jeden Schlüssel, um die CA-Pools und die entsprechenden Stamm-CAs mit CA Service zu erstellen:
Erstellen Sie den Cluster-CA-Pool:
gcloud privateca pools create cluster-ca-pool \ --location=us-central1 \ --tier=enterprise \ --project=KEY_PROJECT_ID \ --no-publish-crl --no-publish-ca-cert
Das Flag
--no-publish-crl
und das Flag--no-publish-ca-cert
sind optional. Wenn Sie diese Flags weglassen, werden Zertifikate in einem Cloud Storage-Bucket veröffentlicht. Weitere Informationen finden Sie unter CA-Zertifikats- und CRL-Veröffentlichung für CAs in einem CA-Pool aktivieren.Erstellen Sie die Stamm-CA des Clusters:
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
Ersetzen Sie
ORGANIZATION
durch den Namen Ihrer Organisation.Erstellen Sie den etcd-Peer-CA-Pool:
gcloud privateca pools create etcd-peer-ca-pool \ --location=us-central1 \ --tier=enterprise \ --project=KEY_PROJECT_ID \ --no-publish-crl --no-publish-ca-cert
Erstellen Sie die Stamm-CA für etcd-Peers:
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
Erstellen Sie den etcd-API-CA-Pool:
gcloud privateca pools create etcd-api-ca-pool \ --location=us-central1 \ --tier=enterprise \ --project=KEY_PROJECT_ID \ --no-publish-crl --no-publish-ca-cert
Erstellen Sie die Stamm-CA für die 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
Erstellen Sie den CA-Pool für die Aggregation:
gcloud privateca pools create aggregation-ca-pool \ --location=us-central1 \ --tier=enterprise \ --project=KEY_PROJECT_ID \ --no-publish-crl --no-publish-ca-cert
Erstellen Sie die Aggregationsstamm-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-Rollen für den GKE-Dienst-Agent gewähren
Der GKE-Dienst-Agent benötigt Zugriff auf die Ressourcen, die Sie in Cloud KMS und im CA-Dienst erstellt haben. Der Dienst-Agent verwendet diese Ressourcen, um Berechtigungsnachweise im Cluster zu signieren, zu prüfen und auszustellen. Sie können die folgenden vordefinierten IAM-Rollen verwenden:
- Kubernetes Engine KMS Crypto Key User
(
roles/container.cloudKmsKeyUser
) - Zertifikatmanager für CA Service
(
roles/privateca.certificateManager
)
So weisen Sie diese Rollen dem GKE-Dienst-Agent zu:
So finden Sie die Projektnummer Ihres Clusterprojekts:
gcloud projects describe CLUSTER_PROJECT_ID \ --format='value(projectNumber)'
Ersetzen Sie
CLUSTER_PROJECT_ID
durch die Projekt-ID Ihres Clusterprojekts.Weisen Sie dem Dienstkonto-Signierschlüssel, den Sie unter Schlüssel erstellen erstellt haben, die Rolle „Kubernetes Engine KMS Crypto Key User“ zu:
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
Ersetzen Sie
CLUSTER_PROJECT_NUMBER
durch die Projektnummer des Clusterprojekts.Weisen Sie die Rolle „CA Service-Zertifikatsmanager“ für die CA-Pools zu, die Sie in Zertifizierungsstellen erstellen erstellt haben:
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
Zusätzliche Rollen gewähren, wenn die gcloud CLI nicht verwendet wird
In diesem Abschnitt werden zusätzliche Konfigurationsschritte beschrieben, die Sie ausführen müssen, wenn Sie Ihre Zertifizierungsstellen und Schlüssel mit einem Client wie Terraform oder der Google Cloud Console anstelle der gcloud CLI konfigurieren möchten. Wenn Sie die gcloud CLI verwenden, überspringen Sie diesen Abschnitt und fahren Sie mit dem Abschnitt Zertifizierungsstellen und Schlüssel in einem neuen Cluster einrichten fort.
Wenn Sie die gcloud CLI zum Einrichten Ihrer Zertifizierungsstellen und Schlüssel verwenden, wie auf dieser Seite beschrieben, erstellt und konfiguriert die gcloud CLI automatisch einen Dienst-Agent für CA Service und gewährt dem Dienst-Agent IAM-Rollen. Wenn Sie jedoch einen Client wie Terraform oder die Google Cloud Console verwenden, um Ihre Google Cloud-Umgebung zu konfigurieren, müssen Sie diese Konfigurationsschritte für Ihr Schlüsselprojekt manuell ausführen:
Erstellen des Dienst-Agents für den CA Service auslösen.
gcloud beta services identity create --service=privateca.googleapis.com \ --project=KEY_PROJECT_ID
So finden Sie die Projektnummer Ihres Schlüsselprojekts:
gcloud projects describe KEY_PROJECT_ID \ --format='value(projectNumber)'
Weisen Sie die Rolle Betrachter (
roles/viewer
) und die Rolle Cloud KMS CryptoKey-Signer/Prüffunktion (roles/cloudkms.signerVerifier
) für alle Stammzertifizierungsstellenschlüssel zu, die Sie im Abschnitt Schlüssel erstellen erstellt haben: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
Ersetzen Sie
KEY_PROJECT_NUMBER
durch die Schlüsselprojektnummer aus der Ausgabe des vorherigen Schritts.Dieser Befehl ist eine
for
-Schleife, die die Root-CA-Schlüssel durchläuft und dem Dienst-Agent des CA-Dienstes für jeden Schlüssel die entsprechende Rolle zuweist. Wenn Sie unterschiedliche Namen für die Stamm-CA-Schlüssel verwendet haben, führen Sie diese Befehle für jeden Schlüssel manuell aus.
CAs und Schlüssel auf einem neuen Cluster einrichten
Nachdem Sie Schlüssel, CA-Pools und Stamm-CAs erstellt und dem GKE-Dienst-Agent IAM-Rollen zugewiesen haben, erstellen Sie einen neuen Cluster, der diese Ressourcen verwendet.
Für die Flags, die Sie im Befehl zum Erstellen des Clusters angeben, sind die folgenden Ressourcenpfade als Werte erforderlich:
- Pfad zu einer Schlüsselversion in Cloud KMS für den Signaturschlüssel des Dienstkontos, den Sie unter Schlüssel erstellen erstellt haben. Sie geben diesen Pfad für das Flag
service-account-signing-keys
und für das Flagservice-account-verification-keys
an. - Pfad zu den einzelnen CA-Pools, die Sie unter CAs erstellen erstellt haben.
So konfigurieren Sie einen neuen Cluster für die Verwendung Ihrer Schlüssel und Zertifizierungsstellen:
So finden Sie den Pfad zur neuesten aktivierten Dienstkontosignaturschlüsselversion:
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
Ersetzen Sie
KEY_PROJECT_ID
durch die Projekt-ID des Schlüsselprojekts.Die Ausgabe sieht etwa so aus:
projects/KEY_PROJECT_ID/locations/us-central1/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1
Suchen Sie die Pfade zu den einzelnen CA-Pools, die Sie erstellt haben:
gcloud privateca pools list --format="get(name)" \ --project=KEY_PROJECT_ID
Die Ausgabe sieht etwa so aus:
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
Prüfen Sie, ob die Ausgabe alle CA-Pools enthält, die Sie für GKE erstellt haben.
Cluster erstellen
In diesem Abschnitt erstellen Sie einen Cluster mit verschiedenen Optionen, je nachdem, welche GKE-Steuerungsebenen-Autoritätsfunktionen Sie konfigurieren möchten. Sie können diese Funktionen nur beim Erstellen eines Clusters konfigurieren. Mit den folgenden Befehlen werden Cluster im Autopilot-Modus erstellt. Wenn Sie stattdessen Cluster im Standardmodus erstellen möchten, verwenden Sie dieselben Flags mit dem Befehl gcloud container clusters create
.
Führen Sie den folgenden Befehl aus, um nur die in dieser Anleitung erstellten Zertifizierungsstellen und Schlüssel zu konfigurieren:
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
Ersetzen Sie Folgendes:
CLUSTER_PROJECT_ID
: die Projekt-ID des Clusterprojekts.VERSION
: Die GKE-Version des Clusters. Muss 1.31.1-gke.1846000 oder höher sein.
So konfigurieren Sie die Zertifizierungsstellen und Schlüssel sowie die Bootlaufwerkverschlüsselung der Steuerungsebene und die etcd-Verschlüsselung:
- Führen Sie alle Schritte zur Schlüsselkonfiguration unter Bootlaufwerke von etcd und der Steuerungsebene verschlüsseln aus.
- Die Pfade zu den einzelnen Schlüsseln finden Sie in der Anleitung unter Verschlüsselungsschlüssel in einem Cluster verwenden.
Erstellen Sie einen 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
Ersetzen Sie Folgendes:
CLUSTER_PROJECT_ID
: die Projekt-ID des Clusterprojekts.VERSION
: Die GKE-Version des Clusters. Muss 1.31.1-gke.1846000 oder höher sein.PATH_TO_DISK_KEY
: der Pfad zu Ihrem Festplattenverschlüsselungsschlüssel.PATH_TO_ETCD_BACKUP_KEY
: der Pfad zu Ihrem internen etcd-Sicherungsschlüssel für die Verschlüsselung.
Sie können diese Flags auch beim Erstellen eines neuen Standardmodus-Clusters verwenden.
Prüfen, ob der Cluster die angegebenen Schlüssel und Zertifizierungsstellen verwendet
In diesem Abschnitt erfahren Sie, wie Sie die Schlüssel und Zertifizierungsstellen überprüfen, die beim Erstellen des Clusters verwendet wurden. Sie können diese Überprüfung mit Cloud Logging oder mit der Google Cloud CLI durchführen.
Logging verwenden, um Schlüssel und Zertifizierungsstellen zu überprüfen
So prüfen Sie die Schlüssel und Zertifizierungsstellen mit Logging:
Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf:
Geben Sie die folgende Abfrage an:
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:*
filtert die Ergebnisse nach Logs zur Clustererstellung, die von Ihnen verwaltete Schlüssel und CAs enthalten.Klicken Sie auf Abfrage ausführen.
Maximieren Sie in den Ergebnissen das Log zur Clustererstellung. Prüfen Sie, ob die Pfade zu Schlüsseln und Zertifizierungsstellen mit den Pfaden übereinstimmen, die Sie für diesen Cluster erstellt haben, wie im folgenden Beispiel:
# 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"
]
}
Schlüssel und Zertifizierungsstellen mit der gcloud CLI prüfen
Führen Sie den folgenden Befehl aus, um zu prüfen, ob der Cluster die von Ihnen erstellten Zertifizierungsstellen und Schlüssel verwendet:
gcloud container clusters describe example-cluster \
--location=us-central1 \
--project=CLUSTER_PROJECT_ID
Die Ausgabe sollte das Feld userManagedKeysConfig
wie im folgenden Beispiel enthalten:
# 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
Bereinigen
Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.
Projekte löschen
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Einzelne Ressourcen löschen
Löschen Sie den Cluster:
gcloud container clusters delete example-cluster \ --location=us-central1 \ --project=CLUSTER_PROJECT_ID
Deaktivieren Sie die Stamm-CAs:
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
Löschen Sie die Stammzertifizierungsstellen:
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
Löschen Sie die CA-Pools:
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
Schlüssel löschen:
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
Sie können keine Schlüsselbunde aus Cloud KMS löschen. Für Schlüsselbunde fallen jedoch keine zusätzlichen Kosten an.
Nächste Schritte
- Identitätsnutzung ab dem Zeitpunkt der Ausstellung verfolgen
- Referenzarchitekturen, Diagramme und Best Practices zu Google Cloud kennenlernen. Weitere Informationen zu Cloud Architecture Center