Transparente Datenverschlüsselung (TDE) verwenden

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 Nutzer sqlserver oder von Nutzern aufgerufen werden, denen der Nutzer sqlserver 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 Nutzer sqlserver oder von Nutzern aufgerufen werden, denen der Nutzer sqlserver 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:

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:

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
  

Nächste Schritte