Auf dieser Seite wird beschrieben, wie Sie vom Kunden verwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) für AlloyDB for PostgreSQL erstellen, konfigurieren und anwenden.
Weitere Informationen zu CMEK finden Sie unter Informationen zu CMEK.
CMEK-Schlüssel für AlloyDB erstellen und autorisieren
Erstellen Sie einen Schlüssel in Cloud Key Management Service (Cloud KMS). AlloyDB unterstützt die folgenden Arten von Schlüsseln:
Der Schlüssel muss sich am selben Standort wie Ihr AlloyDB Cluster befinden. Ein AlloyDB-Cluster in
us-west1kann beispielsweise nur Schlüssel inus-west1verwenden.Wenn Sie bereits einen Cloud KMS-Schlüssel am richtigen Standort haben, können Sie diesen Schritt überspringen.
Gewähren Sie AlloyDB Zugriff auf den Schlüssel.
- Erstellen und zeigen Sie den Dienst-Agent mit der Google Cloud CLI an oder zeigen Sie ihn an, wenn das Konto bereits vorhanden ist:
gcloud beta services identity create --service=alloydb.googleapis.com \ --project=PROJECTMit dem Befehl gcloud services identity wird der Dienst Agent erstellt oder abgerufen, den AlloyDB verwenden kann, um in Ihrem Namen auf den Cloud KMS-Schlüssel zuzugreifen.
Die Dienstkonto-ID ähnelt einer E-Mail-Adresse:
Service identity created: service-xxx@gcp-sa-alloydb.iam.gserviceaccount.com- Gewähren Sie dem Dienstkonto die Rolle
cloudkms.cryptoKeyEncrypterDecrypter:
gcloud kms keys add-iam-policy-binding KEY \ --location REGION \ --keyring KEYRING \ --project=PROJECT \ --member serviceAccount:service-xxx@gcp-sa-alloydb.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypterErsetzen Sie Folgendes:
- KEY: die Cloud KMS-ID des Schlüssels
- REGION: die Region des Schlüssels, z. B.
us-central1 - PROJECT: die ID des Projekts des Schlüssels
- KEYRING: die ID des Cloud KMS-Schlüsselbunds des Schlüssels
Diese Rolle gewährt dem Dienstkonto die Berechtigung, mit dem Cloud KMS-Schlüssel zu verschlüsseln und zu entschlüsseln. Weitere Informationen 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 Sie den Cluster mit der standardmäßigen von Google verwalteten Verschlüsselung verschlüsseln oder stattdessen einen CMEK-Schlüssel verwenden möchten. Weitere Informationen finden Sie unter Cluster und primäre Instanz erstellen.
Verschlüsselungsmethode und CMEK-Schlüssel eines Clusters ansehen
Console
In der Spalte Verschlüsselung auf der Seite Cluster wird angezeigt, ob für die einzelnen Cluster in Ihrem Projekt die von Google verwaltete Verschlüsselung oder CMEK verwendet wird.
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 Detailseite enthält eine Beschreibung des Schlüssels, einschließlich eines Links zur zugehörigen Cloud KMS-Detailseite.
gcloud
Rufen Sie den gcloud alloydb clusters
describe Befehl auf:
gcloud alloydb clusters describe CLUSTER \
--project=PROJECT \
--region=REGIONErsetzen 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 ein 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 sie mit der standardmäßigen von Google verwalteten Verschlüsselung oder einem CMEK-Schlüssel verschlüsseln möchten. Weitere Informationen finden Sie unter On-Demand-Sicherung erstellen oder Automatische Sicherungen planen.
Sie haben auch die Möglichkeit, einen CMEK-Schlüssel auf den Cluster anzuwenden, der beim Wiederherstellen aus einer Sicherung erstellt wurde, unabhängig von der Verschlüsselungsmethode der 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 Key Management Service (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:
Sofortiger Zugriff bleibt erhalten: Die Daten bleiben mit der ursprünglichen Version des Datenverschlüsselungsschlüssels (Data Encryption Key, DEK) verschlüsselt, solange die frühere Version des Schlüssels in KMS verfügbar ist und weder deaktiviert noch gelöscht wurde.
Vollständige Neuverschlüsselung der Daten ist manuell: Damit alle Ihre AlloyDB-Daten mit der neuesten Primärschlüsselversion verschlüsselt werden, 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 eine Sicherung erstellen und wiederherstellen:
Erstellen Sie eine Sicherung Ihres vorhandenen Clusters.
Stellen Sie die Sicherung in einem neuen Cluster wieder her und geben Sie dabei die neue CMEK-Primärschlüsselversion an.
Weitere Informationen finden Sie unter Cluster wiederherstellung.
Die häufige Schlüsselrotation von CMEK mit AlloyDB erfordert einen erheblichen Betriebsaufwand. Da vorhandene Daten nicht automatisch neu verschlüsselt werden und die manuelle Neuverschlüsselung eine vollständige Sicherung und Wiederherstellung in einem neuen Cluster erfordert, kann die häufige Rotation umständlich sein und sich auf die Verfügbarkeit oder die Komplexität der Verwaltung 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 Cluster in Ihrem Projekt die von Google verwaltete Verschlüsselung oder CMEK verwendet wird.
Wenn Sie die Schlüsseldetails einer Sicherung mit CMEK aufrufen möchten, klicken Sie auf Wiederherstellen. Das Feld Verschlüsselungsschlüssel im Detailbereich enthält eine Beschreibung des Schlüssels, einschließlich eines Links zur zugehörigen Cloud KMS-Detailseite.
gcloud
Rufen Sie den gcloud alloydb backups describe Befehl auf:
gcloud alloydb backups describe CLUSTER \
--project=PROJECT \
--region=REGIONErsetzen Sie Folgendes:
- CLUSTER: die ID der zu beschreibenden Sicherung
- PROJECT: die ID des Projekts der Sicherung
- REGION: die Region der Sicherung, z. B.
us-central1
Die Ausgabe enthält ein 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 des Clusters nicht mehr zugänglich, bis Sie den Schlüssel wieder aktivieren.
Es kann jedoch bis zu drei Stunden dauern, bis die Deaktivierung eines Schlüssels auf Ihren AlloyDB-Cluster angewendet wird. So deaktivieren Sie einen Schlüssel und verhindern gleichzeitig den sofortigen Zugriff auf Ihre Daten:
Löschen Sie die primäre Instanz Ihres Clusters. Dies 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.
Schlüssel aktivieren
So aktivieren Sie einen Schlüssel:
Wenn Sie die primäre Instanz Ihres 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 angewendet wird. Sobald dies geschehen ist, sind die Daten des Clusters wieder zugänglich.
Audit-Logs für einen Cloud KMS-Schlüssel aufrufen
So rufen Sie Audit-Logs für einen bestimmten CMEK-Schlüssel auf:
Achten Sie darauf, dass Logging aktiviert ist für die Cloud KMS API in Ihrem Projekt.
Rufen Sie in der Google Cloud Console den Log-Explorer auf.
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
- REGION: die Region des Schlüssels, z. B.
Im Normalbetrieb werden Verschlüsselungs- und Entschlüsselungsvorgänge mit dem Schweregrad
INFOprotokolliert. 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.Wenn AlloyDB nicht auf den Schlüssel zugreifen kann, werden die Vorgänge als
ERRORprotokolliert.
Begründungen für den Lesezugriff auf einen Cloud EKM-Schlüssel ansehen
Wenn Sie einen Cloud EKM-Schlüssel verwenden, können Sie Key Access Justifications verwenden, um den Grund für jede Cloud EKM-Anfrage aufzurufen. Außerdem können Sie eine Anfrage basierend auf der angegebenen Begründung automatisch genehmigen oder ablehnen. Weitere Informationen finden Sie unter Begründungen ansehen und darauf reagieren.