Eigene Zertifizierungsstellen und Schlüssel in GKE ausführen


Auf dieser Seite erfahren Sie, wie Sie die Steuerungsebene Ihres Google Kubernetes Engine-Clusters (GKE) mit von Ihnen verwalteten Zertifizierungsstellen und Schlüsseln konfigurieren. Diese Anleitung richtet sich an Sicherheitsadministratoren, die bestimmte organisatorische Compliance- oder Richtlinienanforderungen für die Kontrolle der Ausstellung und Signatur von Anmeldedaten haben.

Auf dieser Seite wird ein Teil der optionalen Funktionen der Steuerungsebene in GKE beschrieben, mit denen Sie Aufgaben wie die Überprüfung des Sicherheitsstatus der Steuerungsebene oder die Konfiguration der Verschlüsselung und Anmeldedatensignatur in der Steuerungsebene mit von Ihnen verwalteten Schlüsseln ausführen können. Weitere Informationen finden Sie unter GKE Control Plane Authority.

Standardmäßig werden in Google Cloud verschiedene Sicherheitsmaßnahmen auf die verwaltete Steuerebene angewendet. Auf dieser Seite werden optionale Funktionen beschrieben, mit denen Sie die GKE-Steuerungsebene besser im Blick behalten oder steuern können.

Sie sollten mit den folgenden Konzepten vertraut sein:

Anmeldedatenkomponenten 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 im Cloud Key Management Service (Cloud KMS) und Zertifizierungsstellen im Certificate Authority Service (CA-Dienst) erstellen und Ihre Cluster so konfigurieren, dass diese Ressourcen anstelle von von Google Cloudverwalteten Zertifizierungsstellen und Schlüsseln verwendet werden.

Weitere Informationen zu den von Ihnen erstellten Komponenten finden Sie unter Selbstverwaltete Zertifizierungsstellen und Schlüssel.

Verwendung mit anderen Funktionen der GKE-Steuerungsebene

Die GKE Control Plane Authority bietet die folgenden Funktionen für selbst verwaltete Schlüssel:

Lernziele

  • Schlüssel in Cloud KMS erstellen
  • CAs im CA-Dienst erstellen
  • IAM-Rollen (Identity and Access Management) für den GKE-Dienst-Agenten zuweisen
  • GKE-Cluster mit eigenen Zertifizierungsstellen und Schlüsseln erstellen
  • 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. Neuen Google Cloud-Nutzern steht möglicherweise eine kostenlose Testversion zur Verfügung.

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

  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. Make sure that billing is enabled for your Google Cloud project.

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

    gcloud init
  8. Make sure that billing is enabled for your Google Cloud project.

  9. 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
  10. Prüfen Sie, ob Ihre Umgebung die Verwendung von GKE Control Plane Authority-Features unterstützt. Wenn Sie diese Funktionen aktivieren möchten, wenden Sie sich an Ihr Google Cloud -Vertriebsteam.
  11. Damit die Ausstellung und Nutzung von Anmeldedaten zuverlässig erfasst werden kann, müssen die folgenden Audit-Logs zum Datenzugriff aktiviert sein:
    • Cloud KMS: DATA_READ
    • CA-Dienst: ADMIN_READ und ADMIN_WRITE

    Informationen zum Aktivieren dieser Logtypen finden Sie unter Audit-Logs zum Datenzugriff aktivieren.

Erforderliche Rollen und Berechtigungen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Ausführen Ihrer eigenen 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:

  • Sie können nur Schlüssel aus Cloud KMS verwenden. Sie können keinen anderen KMS-Anbieter oder einen anderen Verschlüsselungsanbieter verwenden.
  • Cloud External Key Manager (Cloud EKM)-Schlüssel werden nicht unterstützt.
  • Sie können nur Zertifizierungsstellen aus CA Service verwenden.

Umgebung vorbereiten

In diesem Abschnitt identifizieren Sie Google Cloud -Projekte, die Sie in dieser Anleitung verwenden, und erstellen in Cloud KMS einen Schlüsselbund für Ihre Schlüssel.

Projekte identifizieren

Wir empfehlen, die folgenden separaten Google Cloud -Projekte 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, Zertifizierungsstellen 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 Clustervorgänge 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 Speicherort 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 den Schlüsselbund.
  • KEY_PROJECT_ID: die Projekt-ID Ihres Schlüsselprojekts.

Schlüssel erstellen

Für jede Anmeldedaten-Authentitätsquelle wie Dienstkontoschlüssel und Zertifizierungsstellen erstellen Sie mit Cloud KMS einen Schlüssel. In diesem Abschnitt erfahren Sie, wie Sie die Schlüssel erstellen, die GKE zum Signieren und Verifizieren von Anmeldedaten im Cluster verwendet. Je nach den Anforderungen Ihrer Organisation können Sie eigene Eigenschaften für diese Schlüssel angeben. Weitere Informationen findest du auf der Seite Schlüssel erstellen und in der API-Referenz projects.locations.keyRings.cryptoKeys.

Beachten Sie beim Erstellen dieser Ressourcen in Cloud KMS Folgendes:

  • Wenn Sie in Ihrem Schlüsselprojekt bereits einen Schlüsselbund haben, können Sie darin alle Schlüssel 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 je nach Schlüsseltyp einen der folgenden Algorithmen:
    • Signaturschlüssel für Konten: ein starker RSA-Signatur-PKCS1-Algorithmus wie rsa-sign-pkcs1-4096-sha256 oder rsa-sign-pkcs1-3072-sha256.
    • Schlüssel der Zertifizierungsstelle: Ein sicherer Algorithmus wie ec-sign-p256-sha256.
  • Cloud HSM-Hardwareschlüssel werden unterstützt, das Schutzniveau software ist jedoch für die meisten Anwendungsfälle ausreichend. Weitere Informationen zu Hardwareschlüsseln finden Sie unter Cloud HSM.
  • Ändern Sie die Standarddauer für die Schlüsselvernichtung nicht.
  • In GKE können Sie Cloud KMS-Schlüssel löschen, die vom Cluster verwendet werden, einschließlich CA-Dienstschlüsseln. Bevor Sie Schlüssel oder Zertifizierungsstellen löschen, müssen Sie sich vergewissern, dass die Ressourcen nicht verwendet werden.

Führen Sie die folgenden Befehle aus, um die Schlüssel zu erstellen:

  1. 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 speziellen Schlüsselprojekts.

  2. Erstellen Sie den Schlüssel der Cluster-Stamm-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
    
  3. 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
    
  4. Erstellen Sie den Stamm-CA-Schlüssel der 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. Erstellen Sie den Schlüssel der Stamm-CA für die Aggregation:

    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 dem CA-Dienst zu erstellen:

  1. Erstellen Sie den CA-Pool des Clusters:

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

    Die Flags --no-publish-crl und --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 Veröffentlichung von CA-Zertifikaten und CRLs für Zertifizierungsstellen in einem CA-Pool aktivieren.

  2. Erstellen Sie die Clusterstamm-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
    

    Ersetzen Sie ORGANIZATION durch den Namen Ihrer Organisation.

  3. 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
    
  4. Erstellen Sie die etcd-Peer-Stamm-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
    
  5. Erstellen Sie den CA-Pool der etcd API:

    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. Erstellen Sie die etcd API-Stamm-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
    
  7. 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
    
  8. Erstellen Sie die Stamm-CA für die Aggregation:

    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 dem GKE-Dienst-Agent zuweisen

Der GKE-Dienst-Agent benötigt Zugriff auf die Ressourcen, die Sie in Cloud KMS und im CA-Dienst erstellt haben. Der Dienstagent verwendet diese Ressourcen, um Anmeldedaten im Cluster zu signieren, zu prüfen und auszustellen. Sie können die folgenden vordefinierten IAM-Rollen verwenden:

So weisen Sie dem GKE-Dienst-Agent diese Rollen zu:

  1. 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.

  2. Weisen Sie dem Dienstkontosignaturschlü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.

  3. Weisen Sie den CA-Pools, die Sie unter CAs erstellen erstellt haben, die Rolle „CA Service Certificate Manager“ zu:

    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
    

Zertifizierungsstellen und Schlüssel in einem neuen Cluster einrichten

Nachdem Sie Schlüssel, Zertifizierungsstellenpools, Stammzertifizierungsstellen 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 zur Clustererstellung 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 Flag service-account-verification-keys an.
  • Pfad zu jedem der CA-Pools, die Sie unter CAs erstellen erstellt haben.

So konfigurieren Sie einen neuen Cluster für die Verwendung Ihrer Schlüssel und Zertifizierungsstellen:

  1. Suchen Sie den Pfad zur neuesten aktivierten Version des Dienstkontosignaturschlüssels:

    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 in etwa so aus:

    projects/KEY_PROJECT_ID/locations/us-central1/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1
    
  2. Suchen Sie die Pfade zu den von Ihnen erstellten CA-Pools:

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

    Die Ausgabe sieht in 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
    

    Die Ausgabe muss alle CA-Pools enthalten, die Sie für GKE erstellt haben.

Cluster erstellen

In diesem Abschnitt erstellen Sie einen Cluster mit verschiedenen Optionen, je nachdem, welche GKE-Steuerungsebenen-Autorisierungsfunktionen Sie konfigurieren möchten. Sie können diese Funktionen nur während der Clustererstellung 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.

  • Wenn Sie nur die in dieser Anleitung erstellten Zertifizierungsstellen und Schlüssel konfigurieren möchten, führen Sie den folgenden Befehl aus:

    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. Es muss 1.31.1-gke.1846000 oder höher sein.
  • So konfigurieren Sie die Zertifizierungsstellen und Schlüssel sowie die Verschlüsselung des Bootlaufwerks der Steuerungsebene und die etcd-Verschlüsselung:

    1. Führen Sie alle wichtigen Konfigurationsschritte unter etcd- und Steuerungsebene-Bootlaufwerke verschlüsseln aus.
    2. Die Pfade zu den einzelnen Schlüsseln finden Sie in der Anleitung unter Verschlüsselungsschlüssel in einem Cluster verwenden.
    3. 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. Es muss 1.31.1-gke.1846000 oder höher sein.
      • PATH_TO_DISK_KEY: der Pfad zum Laufwerkverschlüsselungsschlüssel.
      • PATH_TO_ETCD_BACKUP_KEY: Pfad zum internen Verschlüsselungsschlüssel für die etcd-Sicherung.

    Sie können diese Flags auch verwenden, wenn Sie einen neuen Cluster im Standardmodus erstellen.

Prüfen, ob der Cluster die angegebenen Schlüssel und Zertifizierungsstellen verwendet

In diesem Abschnitt erfahren Sie, wie Sie die Schlüssel und Zertifizierungsstellen prü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.

Schlüssel und Zertifizierungsstellen mithilfe von Logging prüfen

So prüfen Sie die Schlüssel und Zertifizierungsstellen mithilfe von Logging:

  1. Rufen Sie in der Google Cloud -Konsole die Seite Log-Explorer auf:

    Zum Log-Explorer

  2. 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 Protokollen zur Clustererstellung, die von Ihnen verwaltete Schlüssel und Zertifizierungsstellen enthalten.

  3. Klicken Sie auf Abfrage ausführen.

Maximieren Sie in den Ergebnissen das Log zur Clustererstellung. Prüfen Sie, ob die Pfade zu den Schlüsseln und Zertifizierungsstellen mit denen ü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 überprü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 enthalten, wie im folgenden Beispiel:

# 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

  1. Löschen Sie den Cluster:

    gcloud container clusters delete example-cluster \
        --location=us-central1 \
        --project=CLUSTER_PROJECT_ID
    
  2. 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
    
  3. 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
    
  4. 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
    
  5. Löschen Sie die Schlüssel:

    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
    

Schlüsselringe können nicht aus Cloud KMS gelöscht werden. Für Schlüsselanhänger fallen jedoch keine zusätzlichen Kosten an.

Nächste Schritte