Auf dieser Seite wird beschrieben, wie Sie die transparente Datenverschlüsselung (Transparent Data Encryption, TDE) verwenden.
In den folgenden Abschnitten wird beschrieben, wie Sie TDE-Zertifikate verwalten.
Hinweise
Zum Importieren oder Exportieren von TDE-Zertifikaten benötigen Sie Identity and Access Management-Berechtigung cloudsql.instances.manageEncryption
, die in der Rolle cloudsql.admin
verfügbar ist. Weitere Informationen finden Sie unter Cloud SQL-Rollen.
GRANT VIEW ANY DEFINITION TO other_login AS CustomerDbRootRole
Externes TDE-Zertifikat importieren
Console
Sie können kein TDE-Zertifikat mit der Google Cloud Console importieren.
gcloud
Verwenden Sie den folgenden Befehl gcloud sql import
, um ein Zertifikat aus einem Cloud Storage-Bucket zu importieren:
gcloud sql import tde INSTANCE_NAME \ --certificate CERTIFICATE_NAME \ --cert-path=gs://BUCKET_NAME/CERTIFICATE_NAME \ --pvk-path=gs://BUCKET_NAME/KEY_NAME \ --prompt-for-pvk-password \ --pvk-password CERTIFICATE_PASSWORD
Ersetzen Sie die folgenden Werte:
- INSTANCE_NAME: Der Name der Cloud SQL-Instanz, in die Sie das TDE-Zertifikat importieren möchten.
- CERTIFICATE_NAME: Der Name des Verschlüsselungszertifikats, das Sie importieren möchten.
- BUCKET_NAME: Der Name des Cloud Storage-Bucket, in dem sich das TDE-Zertifikat befindet, das Sie importieren möchten.
- KEY_NAME: Der Name des Verschlüsselungsschlüssels, der dem Cloud Storage-Bucket zugeordnet ist.
- CERTIFICATE_PASSWORD: Das Zertifikatspasswort.
REST Version 1
Wenn Sie ein TDE-Zertifikat importieren möchten, verwenden Sie die Methode instances.import
und geben Sie die folgenden Eigenschaften an:
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Der Name des Projekts, in das das Verschlüsselungszertifikat importiert werden soll.
- INSTANCE_NAME: Der Name der Cloud SQL-Instanz, in die Sie das Verschlüsselungszertifikat importieren möchten.
- TDE_CERTIFICATE_NAME: Der Name des Verschlüsselungszertifikats, das Sie nach dem Import verwenden möchten.
- CERTIFICATE_NAME: Der Name des Verschlüsselungszertifikats, das Sie importieren möchten.
- BUCKET_NAME: Der Name des Cloud Storage-Bucket, in dem sich das Verschlüsselungszertifikat befindet, das Sie importieren möchten.
- KEY_NAME: Der Name des Verschlüsselungsschlüssels, der dem Cloud Storage-Bucket zugeordnet ist.
- CERTIFICATE_PASSWORD: Das Zertifikatspasswort.
HTTP-Methode und URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/import
JSON-Text anfordern:
{ "importContext": { "fileType": "TDE", "tdeImportOptions": { "name": "TDE_CERTIFICATE_NAME", "certificatePath": "gs://BUCKET_NAME/CERTIFICATE_NAME", "privateKeyPath": "gs://BUCKET_NAME/KEY_NAME", "privateKeyPassword": "CERTIFICATE_PASSWORD" } } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
REST v1beta4
Wenn Sie ein TDE-Zertifikat importieren möchten, verwenden Sie die Methode instances.import
und geben Sie die folgenden Eigenschaften an:
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Der Name des Projekts, in das das Verschlüsselungszertifikat importiert werden soll.
- INSTANCE_NAME: Der Name der Cloud SQL-Instanz, in die Sie das Verschlüsselungszertifikat importieren möchten.
- TDE_CERTIFICATE_NAME: Der Name des Verschlüsselungszertifikats, das Sie nach dem Import verwenden möchten.
- CERTIFICATE_NAME: Der Name des Verschlüsselungszertifikats, das Sie importieren möchten.
- BUCKET_NAME: Der Name des Cloud Storage-Bucket, in dem sich das Verschlüsselungszertifikat befindet, das Sie importieren möchten.
- KEY_NAME: Der Name des Verschlüsselungsschlüssels, der dem Cloud Storage-Bucket zugeordnet ist.
- CERTIFICATE_PASSWORD: Das Zertifikatspasswort.
HTTP-Methode und URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/import
JSON-Text anfordern:
{ "importContext": { "fileType": "TDE", "tdeImportOptions": { "name": "TDE_CERTIFICATE_NAME", "certificatePath": "gs://BUCKET_NAME/CERTIFICATE_NAME", "privateKeyPath": "gs://BUCKET_NAME/KEY_NAME", "privateKeyPassword": "CERTIFICATE_PASSWORD" } } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
Jedem importierten TDE-Zertifikat wird ein eindeutiger Name im folgenden Format zugewiesen:
gcloud_tde_user_CERTIFICATE_NAME_GENERATED_GUID
Wenn Wiederherstellung zu einem bestimmten Zeitpunkt (Point-in-Time Recovery, PITR) für die Instanz aktiviert ist, kann es einige Minuten dauern, bis das importierte TDE-Zertifikat verfügbar ist.
TDE-Zertifikate rotieren
Sie können ein importiertes TDE-Zertifikat mit der gespeicherten Prozedur
msdb.dbo.gcloudsql_rotate_tde_certificate
rotieren. Die Prozedur muss vom Nutzersqlserver
oder von Nutzern aufgerufen werden, denen der Nutzersqlserver
die Berechtigung erteilt hat. Der Aufruf muss ähnlich wie der folgende aussehen:EXEC msdb.dbo.gcloudsql_rotate_tde_certificate TDE_CERTIFICATE_NAME
TDE-Zertifikate löschen
Sie können bis zu zehn Nutzer-TDE-Zertifikate importieren. Wenn Sie mehr importieren müssen, löschen Sie alle unnötigen TDE-Zertifikate mit der gespeicherten Prozedur
msdb.dbo.gcloudsql_drop_tde_user_certificate
. Die Prozedur muss vom Nutzersqlserver
oder von Nutzern aufgerufen werden, denen der Nutzersqlserver
die Berechtigung erteilt hat. Der Aufruf muss ähnlich wie der folgende aussehen:EXEC gcloudsql_drop_tde_user_certificate TDE_CERTIFICATE_NAME
Sie können kein von Cloud SQL verwaltetes Zertifikat löschen.
Sie können ein Zertifikat nicht löschen, während es verwendet wird.
TDE-Zertifikat exportieren
Sie müssen den vollständigen Namen des TDE-Zertifikats angeben, einschließlich des Präfixes und des Suffixes, um es zu exportieren. Sie können den vollständigen Namen des TDE-Verschlüsselungszertifikats abrufen, indem Sie die Spalte „name“ aus der Ansicht sys.certificates
abfragen:
SELECT name FROM sys.certificates
Console
Sie können kein TDE-Zertifikat mit der Google Cloud Konsole exportieren.
gcloud
Verwenden Sie den folgenden gcloud sql export
, um ein TDE-Zertifikat in einen Cloud Storage-Bucket zu exportieren:
gcloud sql export tde INSTANCE_NAME \ --certificate CERTIFICATE_NAME \ --cert-path=gs://BUCKET_NAME/CERTIFICATE_NAME \ --pvk-path=gs://BUCKET_NAME/KEY_NAME \ --prompt-for-pvk-password \ --pvk-password CERTIFICATE_PASSWORD
Ersetzen Sie die folgenden Werte:
- INSTANCE_NAME: Der Name der Cloud SQL-Instanz, aus der Sie das TDE-Zertifikat exportieren möchten.
- CERTIFICATE_NAME ist der Name des Verschlüsselungszertifikats, das Sie exportieren möchten.
- BUCKET_NAME: Der Name des Cloud Storage-Bucket, in dem sich das TDE-Zertifikat befindet, das Sie exportieren möchten.
- KEY_NAME: Der Name des Verschlüsselungsschlüssels, der dem Cloud Storage-Bucket zugeordnet ist.
- CERTIFICATE_PASSWORD: Das Zertifikatspasswort.
REST Version 1
Verwenden Sie zum Exportieren eines TDE-Zertifikats die Methode instances.export
und geben Sie die folgenden Attribute an:
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Der Name des Projekts, aus dem das Verschlüsselungszertifikat exportiert werden soll.
- INSTANCE_NAME: Der Name der Cloud SQL-Instanz, aus der Sie das Verschlüsselungszertifikat exportieren möchten.
- TDE_CERTIFICATE_NAME: Der Name des Verschlüsselungszertifikats, das Sie nach dem Export verwenden möchten.
- CERTIFICATE_NAME ist der Name des Verschlüsselungszertifikats, das Sie exportieren möchten.
- BUCKET_NAME: Der Name des Cloud Storage-Bucket, in dem sich das Verschlüsselungszertifikat befindet, das Sie exportieren möchten.
- KEY_NAME: Der Name des Verschlüsselungsschlüssels, der dem Cloud Storage-Bucket zugeordnet ist.
- CERTIFICATE_PASSWORD: Das Zertifikatspasswort.
HTTP-Methode und URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/export
JSON-Text anfordern:
{ "exportContext": { "fileType": "TDE", "tdeExportOptions": { "name": "TDE_CERTIFICATE_NAME", "certificatePath": "gs://BUCKET_NAME/CERTIFICATE_NAME", "privateKeyPath": "gs://BUCKET_NAME/KEY_NAME", "privateKeyPassword": "CERTIFICATE_PASSWORD" } } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
REST v1beta4
Verwenden Sie zum Exportieren eines TDE-Zertifikats die Methode instances.export
und geben Sie die folgenden Attribute an:
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Der Name des Projekts, aus dem das Verschlüsselungszertifikat exportiert werden soll.
- INSTANCE_NAME: Der Name der Cloud SQL-Instanz, aus der Sie das Verschlüsselungszertifikat exportieren möchten.
- TDE_CERTIFICATE_NAME: Der Name des Verschlüsselungszertifikats, das Sie nach dem Export verwenden möchten.
- CERTIFICATE_NAME ist der Name des Verschlüsselungszertifikats, das Sie exportieren möchten.
- BUCKET_NAME: Der Name des Cloud Storage-Bucket, in dem sich das Verschlüsselungszertifikat befindet, das Sie exportieren möchten.
- KEY_NAME: Der Name des Verschlüsselungsschlüssels, der dem Cloud Storage-Bucket zugeordnet ist.
- CERTIFICATE_PASSWORD: Das Zertifikatspasswort.
HTTP-Methode und URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/export
JSON-Text anfordern:
{ "exportContext": { "fileType": "TDE", "tdeExportOptions": { "name": "TDE_CERTIFICATE_NAME", "certificatePath": "gs://BUCKET_NAME/CERTIFICATE_NAME", "privateKeyPath": "gs://BUCKET_NAME/KEY_NAME", "privateKeyPassword": "CERTIFICATE_PASSWORD" } } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
Importieren einer TDE-verschlüsselten Sicherung
Wenn Sie eine TDE-verschlüsselte Sicherung importieren und das entsprechende TDE-Zertifikat bereits auf der Quellinstanz vorhanden ist, können Sie die verschlüsselte Sicherung direkt importieren. Sie wird dann nicht entschlüsselt. Sie müssen das Zertifikat nicht noch einmal bereitstellen.
Wenn sich das Zertifikat nicht auf der Instanz befindet, verwenden Sie beim Importieren das Flag --keep-encrypted
. Die Kennzeichnung bietet folgende Vorteile:
- Das TDE-Zertifikat bleibt mit der Instanz verknüpft.
- Verhindert, dass die Sicherung während des Imports entschlüsselt wird.
Wenn Sie das Flag --keep-encrypted
nicht verwenden, wird die importierte Sicherung entschlüsselt und das TDE-Zertifikat wird nicht auf dem Server gespeichert.
Weitere Informationen finden Sie in den folgenden Ressourcen:
- Mithilfe von BAK-Dateien exportieren und importieren
- Daten aus einer BAK-Sicherungsdatei in eine Cloud SQL-Instanz importieren
TDE-verschlüsselte Sicherung exportieren
Sie können eine TDE-verschlüsselte Sicherung genauso exportieren wie eine unverschlüsselte. Das Zertifikat, mit dem das Backup verschlüsselt wurde, ist nicht im Export enthalten. Sie müssen sie separat exportieren.
Weitere Informationen finden Sie in den folgenden Ressourcen:
- Mithilfe von BAK-Dateien exportieren und importieren
- Daten aus einer BAK-Sicherungsdatei in eine Cloud SQL-Instanz exportieren
Datenbank verschlüsseln und entschlüsseln
Sie können Ihre Instanz auf ähnliche Weise wie mit SQL Server verschlüsseln und entschlüsseln.
Anfangs können nur Nutzeranmeldungen vom Typ root
, z. B. sqlserver
, auf TDE-Zertifikate zugreifen.
Verwenden Sie den folgenden oder einen ähnlichen Befehl, um anderen Nutzern Zugriff zu gewähren:
GRANT VIEW ANY DEFINITION TO CERTIFICATE_NAME AS CustomerDbRootRole
Alternativ können Sie den Zugriff auf ein bestimmtes Zertifikat und einen bestimmten Datenbanknutzer gewähren.
Sie können eine Datenbank mit dem folgenden oder einem ähnlichen Befehl verschlüsseln:
CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE CERTIFICATE_NAME ALTER DATABASE DATABASE_NAME SET ENCRYPTION ON
Sie können eine Datenbank mit dem folgenden oder einem ähnlichen Befehl entschlüsseln:
ALTER DATABASE DATABASE_NAME SET ENCRYPTION OFF