Daten mit Verschlüsselungsschlüsseln schützen

Wenn Sie ruhende Daten in Ihren AlloyDB for PostgreSQL-Clustern und -Sicherungen mit Schlüsseln schützen möchten, die Sie selbst kontrollieren, können Sie kundenverwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) in Cloud Key Management Service (Cloud KMS) erstellen, autorisieren, anwenden und verwalten.

Weitere Informationen zu CMEK finden Sie unter Informationen zu CMEK.

CMEK-Schlüssel für AlloyDB erstellen und autorisieren

  1. Erstellen Sie einen Schlüssel in Cloud KMS. AlloyDB unterstützt die folgenden Schlüsseltypen:

    Der Schlüssel muss sich am selben Standort wie Ihr AlloyDB-Cluster befinden. Ein AlloyDB-Cluster in us-west1 kann beispielsweise nur Schlüssel in us-west1 verwenden.

    Wenn Sie bereits einen Cloud KMS-Schlüssel am richtigen Standort haben, können Sie diesen Schritt überspringen.

  2. Gewähren Sie AlloyDB Zugriff auf den Schlüssel.

    1. Erstellen Sie den Dienst-Agent mit der Google Cloud CLI und rufen Sie ihn auf oder rufen Sie ihn auf, wenn das Konto bereits vorhanden ist:

      gcloud beta services identity create --service=alloydb.googleapis.com \
          --project=PROJECT

      Mit dem Befehl gcloud beta services identity create wird der Dienst-Agent erstellt oder abgerufen, den AlloyDB verwenden kann, um in Ihrem Namen auf den Cloud KMS-Schlüssel zuzugreifen.

      Die Dienst-Agent-ID ähnelt einer E-Mail-Adresse:

      Service identity created: service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
      
    2. Weisen Sie dem Dienst-Agent die Rolle „Cloud KMS CryptoKey Encrypter/Decrypter“ (roles/cloudkms.cryptoKeyEncrypterDecrypter) zu:

      gcloud kms keys add-iam-policy-binding KEY \
          --location=REGION \
          --keyring=KEYRING \
          --project=PROJECT \
          --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com \
          --role=roles/cloudkms.cryptoKeyEncrypterDecrypter

      Ersetzen Sie Folgendes:

      • KEY: die Cloud KMS-ID des Schlüssels.

      • REGION: die Region des Schlüssels, z. B. us-central1.

      • KEYRING: die ID des Cloud KMS-Schlüsselbunds des Schlüssels.

      • PROJECT: die ID des Projekts des Schlüssels.

      • PROJECT_NUMBER: die Projektnummer des Projekts Ihres AlloyDB-Clusters.

      Diese Rolle gewährt dem Dienst-Agent die Berechtigung, mit dem Cloud KMS-Schlüssel zu verschlüsseln und zu entschlüsseln. Weitere Informationen zu Cloud KMS-Rollen und -Berechtigungen finden Sie unter Cloud KMS-Berechtigungen und -Rollen.

CMEK-verschlüsselten Cluster erstellen

Wenn Sie einen neuen Cluster erstellen, können Sie auswählen, ob der Cluster mit der standardmäßigen, von Google verwalteten Verschlüsselung verschlüsselt werden soll oder ob stattdessen ein CMEK-Schlüssel verwendet werden soll. Weitere Informationen finden Sie unter Cluster und primäre Instanz erstellen.

Verschlüsselungsmethode und CMEK-Schlüssel eines Clusters aufrufen

Console

In der Spalte Verschlüsselung auf der Seite Cluster wird angezeigt, ob die einzelnen Cluster in Ihrem Projekt die von Google verwaltete Verschlüsselung oder CMEK verwenden.

ZUR CLUSTERSEITE

Wenn Sie die Schlüsseldetails eines Clusters mit CMEK aufrufen möchten, klicken Sie in der Spalte Ressourcenname auf den Namen des Clusters. Das Feld Verschlüsselungsschlüssel auf der resultierenden Detailseite enthält eine Beschreibung des Schlüssels, einschließlich eines Links zur eigenen Cloud KMS-Detailseite.

gcloud

Rufen Sie den Befehl gcloud alloydb clusters describe auf:

gcloud alloydb clusters describe CLUSTER \
    --project=PROJECT \
    --region=REGION

Ersetzen Sie Folgendes:

  • CLUSTER: Die ID des zu beschreibenden Clusters.

  • PROJECT: die ID des Projekts des Clusters.

  • REGION: die Region des Clusters, z. B. us-central1.

Die Ausgabe enthält das Feld encryptionInfo mit einer Zusammenfassung der Verschlüsselung des Clusters.

CMEK auf Sicherungen anwenden

Wenn Sie eine neue Sicherung erstellen, können Sie auswählen, ob sie mit der standardmäßigen von Google verwalteten Verschlüsselung oder einem CMEK-Schlüssel verschlüsselt werden soll. Weitere Informationen finden Sie unter On-Demand-Sicherung erstellen oder Sicherungsplan konfigurieren.

Sie haben auch die Möglichkeit, einen CMEK-Schlüssel auf den Cluster anzuwenden, der beim Wiederherstellen aus einer Sicherung erstellt wird, unabhängig von der Verschlüsselungsmethode dieser Sicherung. Weitere Informationen finden Sie unter Cluster wiederherstellen.

Schlüssel mit CMEK-Verschlüsselung rotieren

Es ist wichtig, die Auswirkungen der Rotation Ihrer vom Kunden verwalteten Verschlüsselungsschlüssel (CMEK) in Cloud KMS zu verstehen, wenn sie mit AlloyDB-Clustern verwendet werden.

Wenn Sie einen CMEK-Schlüssel rotieren, geschieht Folgendes mit Ihren vorhandenen AlloyDB-Daten:

  • Der sofortige Zugriff bleibt bestehen: Die Daten bleiben mit der ursprünglichen Version des Datenverschlüsselungsschlüssels (DEK) verschlüsselt, solange die frühere Version des Schlüssels noch in Cloud KMS verfügbar ist und weder deaktiviert noch gelöscht wurde.

  • Die vollständige Neuverschlüsselung von Daten erfolgt manuell: Wenn Sie alle Ihre AlloyDB-Daten mit der neuesten Primärschlüsselversion verschlüsseln möchten, müssen Sie sie neu verschlüsseln.

Wenn Sie Ihren vorhandenen Cluster mit einer neuen CMEK-Schlüsselversion neu verschlüsseln möchten, müssen Sie einen Sicherungs- und Wiederherstellungsvorgang ausführen:

  1. Erstellen Sie eine Sicherung des vorhandenen Clusters.

  2. Stellen Sie die Sicherung in einem neuen Cluster wieder her und geben Sie während des Wiederherstellungsvorgangs die neue CMEK-Primärschlüsselversion an.

Weitere Informationen finden Sie unter Clusterwiederherstellung.

Eine häufige CMEK-Schlüsselrotation mit AlloyDB erfordert einen erheblichen Betriebsaufwand. Da vorhandene Daten nicht automatisch neu verschlüsselt werden und die manuelle Neuverschlüsselung eine Vollsicherung und Wiederherstellung in einem neuen Cluster erfordert, können häufige Rotationen mühsam sein und sich auf die Verfügbarkeit oder die Verwaltungskomplexität auswirken.

Sie können alte CMEK-Schlüsselversionen in Cloud KMS erst dann sicher löschen, wenn Sie bestätigt haben, dass alle relevanten AlloyDB-Daten manuell neu verschlüsselt wurden und die Daten eine neuere Schlüsselversion verwenden.

Verschlüsselungsmethode und CMEK-Schlüssel einer Sicherung ansehen

Console

In der Spalte Verschlüsselung auf der Seite Sicherungen wird angezeigt, ob für die einzelnen Sicherungen in Ihrem Projekt die von Google verwaltete Verschlüsselung oder Cloud KMS (CMEK) verwendet wird.

Zur Seite „Sicherungen“

Klicken Sie auf Wiederherstellen, um die Schlüsseldetails einer Sicherung mit CMEK aufzurufen. Das Feld Verschlüsselungsschlüssel im nachfolgenden Detailbereich enthält eine Beschreibung des Schlüssels, einschließlich eines Links zu seiner eigenen Cloud KMS-Detailseite.

gcloud

Rufen Sie den Befehl gcloud alloydb backups describe auf:

gcloud alloydb backups describe BACKUP_ID \
    --project=PROJECT \
    --region=REGION

Ersetzen Sie Folgendes:

  • BACKUP_ID: die ID der zu beschreibenden Sicherung.

  • PROJECT: die ID des Projekts der Sicherung.

  • REGION: die Region des Backups, z. B. us-central1.

Die Ausgabe enthält das Feld encryptionInfo mit einer Zusammenfassung der Verschlüsselung der Sicherung.

Schlüssel deaktivieren

Wenn Sie den CMEK-Schlüssel eines Clusters deaktivieren, sind die Daten dieses Clusters nicht mehr zugänglich, bis Sie den Schlüssel wieder aktivieren.

Das Deaktivieren eines Schlüssels kann jedoch bis zu drei Stunden dauern, bis es auf Ihren AlloyDB-Cluster übertragen wird. So deaktivieren Sie einen Schlüssel und verhindern den Zugriff auf Ihre Daten, ohne auf die Schlüsselweitergabe zu warten:

  1. Löschen Sie die primäre Instanz des Clusters. Das Löschen der primären Instanz hat keine Auswirkungen auf die Daten Ihres Clusters. Sie können eine neue primäre Instanz erstellen, nachdem Sie den Schlüssel wieder aktiviert haben, wie im folgenden Abschnitt beschrieben.

  2. Deaktivieren Sie den Schlüssel mit Cloud KMS.

Schlüssel aktivieren

So aktivieren Sie einen Schlüssel:

  1. Aktivieren Sie den Schlüssel mit Cloud KMS.

  2. Wenn Sie die primäre Instanz des Clusters gelöscht haben, bevor Sie den Schlüssel deaktiviert haben, erstellen Sie eine neue primäre Instanz.

Es kann bis zu drei Stunden dauern, bis die Aktivierung eines Schlüssels auf Ihren Cluster übertragen wird. Die Daten des Clusters sind zugänglich, sobald diese Weitergabe erfolgt ist.

Audit-Logs für einen Cloud KMS-Schlüssel aufrufen

So rufen Sie Audit-Logs auf, die mit einem bestimmten CMEK-Schlüssel verknüpft sind:

  1. Achten Sie darauf, dass für die Cloud KMS API in Ihrem Projekt Logging aktiviert ist .

  2. Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf:

    Zu „Log-Explorer“

  3. Beschränken Sie die Logeinträge auf Ihren Cloud KMS-Schlüssel, indem Sie dem Query Builder die folgenden Zeilen hinzufügen:

    resource.type="cloudkms_cryptokey"
    resource.labels.location="REGION"
    resource.labels.key_ring_id="KEYRING"
    resource.labels.crypto_key_id="KEY"
    

    Ersetzen Sie Folgendes:

    • REGION: die Region des Schlüssels, z. B. us-central1.

    • KEYRING: die ID des Cloud KMS-Schlüsselbunds des Schlüssels.

    • KEY: die Cloud KMS-ID des Schlüssels.

  4. Im Normalbetrieb werden Verschlüsselungs- und Entschlüsselungsvorgänge mit dem Schweregrad INFO protokolliert. Diese Einträge werden protokolliert, wenn die Instanzen in Ihrem AlloyDB-Cluster den Cloud KMS-Schlüssel validieren. Dies geschieht etwa alle fünf Minuten.

  5. Wenn AlloyDB nicht auf den Schlüssel zugreifen kann, werden die Vorgänge als ERROR protokolliert.

Zugriffsbegründungen für einen Cloud EKM-Schlüssel ansehen

Wenn Sie einen Cloud EKM-Schlüssel verwenden, können Sie mit Key Access Justifications 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 Begründungen ansehen und darauf reagieren.