Informationen zur Sicherung für GKE-CMEK-Verschlüsselung

Standardmäßig verschlüsselt Sicherung für GKE inaktive Kundendaten. Sicherung für GKE übernimmt die Verschlüsselung für Sie. Zusätzliche Maßnahmen Ihrerseits sind nicht erforderlich. Diese Option heißt Google-Standardverschlüsselung.

Wenn Sie Ihre Verschlüsselungsschlüssel selbst verwalten möchten, können Sie vom Kunden verwaltete Verschlüsselungsschlüssel (CMEKs, Customer-Managed Encryption Keys) in Cloud KMS mit CMEK-integrierten Diensten wie Sicherung für GKE verwenden. Mit Cloud KMS-Schlüsseln haben Sie die Kontrolle über Schutzlevel, Speicherort, Rotationszeitplan, Nutzungs- und Zugriffsberechtigungen sowie über kryptografische Grenzen. Mit Cloud KMS können Sie außerdem Audit-Logs aufrufen und den Lebenszyklus von Schlüsseln steuern. Statt es Google zu überlassen, die symmetrischen Schlüsselverschlüsselungsschlüssel (Key Encryption Keys, KEKs) zum Schutz Ihrer Daten zu besitzen und zu verwalten, können Sie diese auch über Cloud KMS steuern und verwalten.

Nachdem Sie Ihre Ressourcen mit CMEKs eingerichtet haben, ähnelt der Zugriff auf Ihre Sicherung für GKE-Ressourcen der Verwendung der Google-Standardverschlüsselung. Weitere Informationen zu Ihren Verschlüsselungsoptionen finden Sie unter Vom Kunden verwaltete Verschlüsselungsschlüssel (CMEK).

Übersicht

Es gibt zwei Arten von Nutzerdatenartefakten, die über die Sicherung für GKE erstellt und gespeichert werden:

  • Konfigurationssicherung: Eine Reihe von Kubernetes-Ressourcenbeschreibungen, die aus dem API-Server des Clusters extrahiert wurden, der die Sicherung ausführt, und den Clusterstatus erfasst.
  • Volume-Sicherungen: Eine Reihe von Volume-Sicherungen, die PersistentVolumeClaim-Ressourcen in der Konfigurationssicherung entsprechen.

Standardmäßig werden alle Sicherungsartefakte, die über "Sicherung für GKE" erstellt wurden, im inaktiven Zustand mit einem von Google bereitgestellten Schlüssel verschlüsselt.

Sie können diese Artefakte jedoch mit einem vom Kunden verwalteten Verschlüsselungsschlüssel (Customer-Managed Encryption Key, CMEK) verschlüsseln, der über den Cloud Key Management Service verwaltet wird, wenn gewünscht.

CMEK-Verschlüsselung aktivieren

Die CMEK-Verschlüsselung wird in zwei Schritten aktiviert:

  • Legen Sie einen Schlüssel zum Verschlüsseln von Sicherungen fest, die für einen BackupPlan erstellt wurden.

  • Gewähren Sie den entsprechenden Dienstkonten Zugriff auf die entsprechenden Schlüssel.

Für jedes Sicherungsszenario sind möglicherweise drei CMEK-Schlüssel beteiligt:

  • bplan_key: Dies ist der Schlüssel, auf den Sie beim Erstellen oder Aktualisieren von BackupPlan verweisen. Nach Möglichkeit dieser Schlüssel, der beim Verschlüsseln aller Sicherungsartefakte verwendet wird. Dieser Schlüssel muss sich in derselben Region wie der BackupPlan selbst befinden (siehe Informationen zu Ressourcenstandorten).

  • orig_disk_key: Wenn Sie die nichtflüchtige Speicher-Volumes mit einem CMEK-Schlüssel verschlüsselt haben, werden die von "Sicherung für GKE" für diese Volumes generierten Volume-Sicherungen mit diesem Schlüssel verschlüsselt, auch wenn ein anderer Schlüssel beim BackupPlan registriert ist.

  • new_disk_key: Dies ist der CMEK-Schlüssel, den Sie zum Verschlüsseln von Volumes verwenden möchten, die Sie aus der Sicherung wiederhergestellt haben. Dies wird durch die StorageClass im Zielcluster der Wiederherstellung referenziert.

Es gibt vier verschiedene Dienstkonten, die möglicherweise Zugriff auf CMEK-Schlüssel erfordern:

  • agent_robot: Dieses Dienstkonto muss Zugriff auf den bplan_key haben. Dieses Dienstkonto hat das Format service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com, wobei PROJECT_NUMBER die Nummer Ihres Google Cloud -Projekts ist.

  • non_cmek_service_agent: Beim Sichern von nicht CMEK-verschlüsselten Volumes muss diesem Dienstkonto Zugriff auf das bplan_key gewährt werden. Dieses Dienstkonto hat das Format service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com, wobei PROJECT_NUMBER die Nummer Ihres Google Cloud -Projekts ist.

  • cmek_service_agent: Beim Sichern von CMEK-verschlüsselten Volumes muss diesem Dienstkonto Zugriff auf das orig_disk_key gewährt werden. Dieses Dienstkonto hat das Format service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com, wobei TENANT_PROJECT_NUMBER die Nummer des Mandantenprojekts ist, das Ihrem BackupPlan zugewiesen ist.

  • compute_service_agent: Dieses Dienstkonto wird beim Erstellen neuer verschlüsselter Volumes für einen Cluster verwendet. Er muss Zugriff auf den new_disk_key haben. Dieses Dienstkonto hat das Format service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com, wobei PROJECT_NUMBER die Nummer Ihres Google Cloud -Projekts ist.

Wenn diskEncryptionKey.kmsKeyServiceAccount für die Laufwerke festgelegt ist, müssen Sie die folgenden Schritte ausführen, bevor Sie eine Sicherung erstellen:

  • Deaktivieren Sie die Organisationsrichtlinie iam.disableCrossProjectServiceAccountUsage, um die projektübergreifende Identitätsübernahme für Dienstkonten zu aktivieren:

      gcloud resource-manager org-policies disable-enforce \
          iam.disableCrossProjectServiceAccountUsage
          --project=PROJECT_ID
    
  • cmek_service_agent die Rolle roles/iam.serviceAccountTokenCreator zum Erstellen kurzlebiger Anmeldedaten zuweisen:

      gcloud iam service-accounts add-iam-policy-binding \
        # Replace the email with the value from
        # `diskEncryptionKey.kmsKeyServiceAccount`
        your-kms-key-service-acount@PROJECT_ID.iam.gserviceaccount.com \
        --member=service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
        --role=roles/iam.serviceAccountTokenCreator
    

Wenn Sie eine projektübergreifende Sicherung oder Wiederherstellung durchführen, müssen drei Projektnamen aufgeführt werden:

  • cluster_project: das Projekt, das den Cluster enthält, den Sie sichern möchten.

  • backup_project: das Projekt, in dem Ihre Sicherungen gespeichert werden sollen.

  • restore_project: das Projekt, das den Zielcluster der Wiederherstellung enthält.

In der folgenden Tabelle ist zusammengefasst, welche Dienstkonten in welchen Szenarien Zugriff auf welche Schlüssel erhalten müssen:

Artefakt Dienstkonto Projektnummer Schlüssel
config backup cluster agent_robot
  • cluster_project (während der Sicherung)
  • restore_project (während der Wiederherstellung)
bplan_key
Sicherung von CMEK-verschlüsseltem Volume cmek_service_agent backup_project orig_disk_key
Sicherung eines von Google verschlüsselten Volumes non_cmek_service_agent backup_project bplan_key
Neues mit CMEK verschlüsseltes Volume, das während der Wiederherstellung erstellt wurde compute_service_agent restore_project new_disk_key

Sie können Zugriff auf Schlüssel auf Projektebene (erteilt Zugriff auf alle Schlüssel unter diesem Projekt) oder auf den einzelnen Schlüssel gewähren.

Zugriff auf Projektebene gewähren

Sie können Zugriff auf Schlüssel auf Projektebene gewähren. Dadurch wird Zugriff auf alle Schlüssel in diesem Projekt gewährt.

Mit der folgenden Anleitung können Sie den Zugriff auf Projektebene gewähren.

Console

  1. Rufen Sie in der Google Cloud Console die Seite IAM auf.

    IAM aufrufen

  2. Klicken Sie auf Zugriff erlauben.

  3. Geben Sie im Feld Neue Hauptkonten die E-Mail-Adresse des Dienstkontos ein.

  4. Wählen Sie in der Liste Rolle auswählen die Rolle Cloud KMS CryptoKey-Verschlüsseler/Entschlüsseler aus.

  5. Klicken Sie auf Speichern.

gcloud

  1. Gewähren Sie Zugriff auf Projektebene.

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com \
    --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die ID des Projekts, auf das Sie Zugriff gewähren möchten.
    • PROJECT_NUMBER: die Nummer des Projekts, auf das Sie Zugriff gewähren möchten.

Terraform

  1. Gewähren Sie Zugriff auf Projektebene.

    resource "google_project_iam_member" "example_iam_member" {
    project = "PROJECT_ID"
    role    = "roles/cloudkms.cryptoKeyEncrypterDecrypter"
    member  = "serviceAccount:service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com"
    }
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die ID des Projekts, auf das Sie Zugriff gewähren möchten.
    • PROJECT_NUMBER: die Nummer des Projekts, auf das Sie Zugriff gewähren möchten.

Zugriff auf Schlüsselebene gewähren

Mit der folgenden Anleitung können Sie den Zugriff auf Ebene einzelner Schlüssel gewähren.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Schlüsselverwaltung auf.

    Schlüsselverwaltung aufrufen

  2. Klicken Sie auf den Name n des Schlüsselbunds.

  3. Klicken Sie auf den Namen des Schlüssels.

  4. Klicken Sie auf den Tab Berechtigungen.

  5. Klicken Sie auf Zugriff erlauben.

  6. Geben Sie im Feld Neue Hauptkonten die E-Mail-Adresse des Dienstkontos ein.

  7. Wählen Sie in der Liste Rolle auswählen die Rolle Cloud KMS CryptoKey-Verschlüsseler/Entschlüsseler aus.

  8. Klicken Sie auf Speichern.

gcloud

  1. Gewähren Sie den Zugriff auf Ebene einzelner Schlüssel.

    gcloud kms keys add-iam-policy-binding KEY_NAME \
    --keyring KEY_RING \
    --location LOCATION \
    --member "serviceAccount:service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com" \
    --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    Ersetzen Sie Folgendes:

    • KEY_NAME: Der Name des Schlüssels.
    • KEY_RING: der Name des Schlüsselbunds, der den Schlüssel enthält
    • LOCATION: der Cloud KMS-Speicherort des Schlüsselbunds.
    • PROJECT_NUMBER: die Nummer des Projekts, auf das Sie Zugriff gewähren möchten.

Terraform

  1. Gewähren Sie den Zugriff auf Ebene einzelner Schlüssel.

    resource "google_kms_crypto_key_iam_member" "crypto_key_iam_member" {
    crypto_key_id = "projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME"
    role          = "roles/cloudkms.cryptoKeyEncrypterDecrypter"
    member        = "serviceAccount:service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com" 
    }
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die ID des Projekts, auf das Sie Zugriff gewähren möchten.
    • LOCATION: der Cloud KMS-Speicherort des Schlüsselbunds.
    • KEY_RING: der Name des Schlüsselbunds, der den Schlüssel enthält
    • KEY_NAME: Der Name des Schlüssels.
    • PROJECT_NUMBER: die Nummer des Projekts, auf das Sie Zugriff gewähren möchten.

Überlegungen und Einschränkungen zur Nutzung

  • Wenn Sie ein CMEK-verschlüsseltes Volume sichern möchten, müssen Sie Zugriff auf den Schlüssel dieses Laufwerks gewähren, auch wenn Sie die CMEK-Verschlüsselung in Ihrem BackupPlan nicht aktivieren.

  • CMEK-Schlüssel müssen sich in derselben Region wie BackupPlan befinden, damit ein regionaler Ausfall den Zugriff auf den Schlüssel nicht entfernt, während Sicherungen weiterhin zugänglich sind. Diese Einschränkung kann jedoch nicht für Schlüssel erzwungen werden, die mit verschlüsselten Volumes gemeinsam genutzt werden. Wenn verschlüsselte Volumes verwendet werden, ist es möglich, dass die Wiederherstellung auch dann fehlschlägt, wenn eine Sicherung verfügbar ist, da der Verschlüsselungsschlüssel des Laufwerks möglicherweise nicht in derselben Region wie die Sicherung gespeichert wird.

Externe Schlüssel verwenden und verwalten

Mit Cloud External Key Manager (Cloud EKM) können Sie externe Schlüssel erstellen und verwalten. Externe Schlüssel sind Verweise auf Schlüssel, die sich außerhalb von Google Cloudbefinden. Diese Schlüssel werden bei einem unterstützten Partner für die externe Schlüsselverwaltung gespeichert. Weitere Informationen finden Sie unter Cloud External Key Manager.

Nachdem Sie einen externen Schlüssel mit Cloud EKM erstellt haben, können Sie ihn auf einen neuen Sicherungsplan anwenden, indem Sie die ID dieses Schlüssels beim Erstellen eines neuen Sicherungsplans angeben. Dieses Verfahren ist dasselbe wie das Anwenden eines Cloud KMS-Schlüssels auf einen neuen Sicherungsplan.

Sie können Key Access Justifications (KAJ) als Teil von Cloud EKM verwenden. Mit Key Access Justifications können Sie den Grund für jede Cloud EKM-Anfrage aufrufen. Basierend auf der Begründung können Sie eine Anfrage außerdem automatisch genehmigen oder ablehnen. Weitere Informationen finden Sie unter Übersicht.