Use a encriptação de dados transparente (TDE)

Esta página mostra como usar a encriptação de dados transparente (TDE).

As secções seguintes mostram como gerir certificados de TDE.

Antes de começar

Para importar ou exportar certificados TDE, tem de ter a autorização de gestão de identidade e de acesso, disponível na função de cloudsql.admin.cloudsql.instances.manageEncryption Para mais informações, consulte as funções do Cloud SQL.

GRANT VIEW ANY DEFINITION TO other_login AS CustomerDbRootRole

Importe um certificado TDE externo

Consola

Não pode importar um certificado TDE através da Google Cloud consola.

gcloud

Use o seguinte gcloud sql import para importar um certificado de um contentor do Cloud Storage:

    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
    

Faça as seguintes substituições:

  • INSTANCE_NAME: o nome da instância do Cloud SQL para a qual quer importar o certificado TDE.
  • CERTIFICATE_NAME: o nome do certificado de encriptação que quer importar.
  • BUCKET_NAME: o nome do contentor do Cloud Storage onde se encontra o certificado de TDE que quer importar.
  • KEY_NAME: o nome da chave de encriptação associada ao contentor do Cloud Storage.
  • CERTIFICATE_PASSWORD: a palavra-passe do certificado.

REST v1

Para importar um certificado TDE, use o método instances.import e especifique as seguintes propriedades:

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o nome do projeto onde o certificado de encriptação vai ser importado.
  • INSTANCE_NAME: o nome da instância do Cloud SQL para a qual quer importar o certificado de encriptação.
  • TDE_CERTIFICATE_NAME: o nome do certificado de encriptação que quer usar depois de o importar.
  • CERTIFICATE_NAME: o nome do certificado de encriptação que quer importar.
  • BUCKET_NAME: o nome do contentor do Cloud Storage onde se encontra o certificado de encriptação que quer importar.
  • KEY_NAME: o nome da chave de encriptação associada ao contentor do Cloud Storage.
  • CERTIFICATE_PASSWORD: a palavra-passe do certificado.

Método HTTP e URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/import

Corpo JSON do pedido:


{
  "importContext":
    {
        "fileType": "TDE",
        "tdeImportOptions":
          {
            "name": "TDE_CERTIFICATE_NAME",
            "certificatePath": "gs://BUCKET_NAME/CERTIFICATE_NAME",
            "privateKeyPath": "gs://BUCKET_NAME/KEY_NAME",
            "privateKeyPassword": "CERTIFICATE_PASSWORD"
          }
    }
}



Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

REST v1beta4

Para importar um certificado TDE, use o método instances.import e especifique as seguintes propriedades:

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o nome do projeto onde o certificado de encriptação vai ser importado.
  • INSTANCE_NAME: o nome da instância do Cloud SQL para a qual quer importar o certificado de encriptação.
  • TDE_CERTIFICATE_NAME: o nome do certificado de encriptação que quer usar depois de o importar.
  • CERTIFICATE_NAME: o nome do certificado de encriptação que quer importar.
  • BUCKET_NAME: o nome do contentor do Cloud Storage onde se encontra o certificado de encriptação que quer importar.
  • KEY_NAME: o nome da chave de encriptação associada ao contentor do Cloud Storage.
  • CERTIFICATE_PASSWORD: a palavra-passe do certificado.

Método HTTP e URL:

POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/import

Corpo JSON do pedido:


{
  "importContext":
    {
        "fileType": "TDE",
        "tdeImportOptions":
          {
            "name": "TDE_CERTIFICATE_NAME",
            "certificatePath": "gs://BUCKET_NAME/CERTIFICATE_NAME",
            "privateKeyPath": "gs://BUCKET_NAME/KEY_NAME",
            "privateKeyPassword": "CERTIFICATE_PASSWORD"
          }
    }
}



Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

É atribuído a cada certificado TDE importado um nome exclusivo no seguinte formato:

  gcloud_tde_user_CERTIFICATE_NAME_GENERATED_GUID

Se a recuperação num determinado momento (PITR) estiver ativada na instância, pode demorar vários minutos até que o certificado TDE importado esteja disponível.

Rode os certificados TDE

  • Pode rodar um certificado TDE importado com o procedimento msdb.dbo.gcloudsql_rotate_tde_certificate armazenado. O procedimento tem de ser invocado pelo utilizador sqlserver ou por utilizadores aos quais o utilizador sqlserver concedeu autorização, através de uma chamada semelhante à seguinte:

        EXEC msdb.dbo.gcloudsql_rotate_tde_certificate TDE_CERTIFICATE_NAME
        

Elimine certificados TDE

  • Pode importar até dez certificados TDE de utilizador. Se precisar de importar mais, elimine os certificados TDE desnecessários através do procedimento armazenado msdb.dbo.gcloudsql_drop_tde_user_certificate. O procedimento tem de ser invocado pelo utilizador sqlserver ou por utilizadores aos quais o utilizador sqlserver concedeu autorização, através de uma chamada semelhante à seguinte:

        EXEC gcloudsql_drop_tde_user_certificate TDE_CERTIFICATE_NAME
        
  • Não pode eliminar um certificado gerido pelo Cloud SQL.

  • Não pode eliminar um certificado enquanto estiver a ser usado.

Exporte um certificado TDE

Tem de especificar o nome completo do certificado TDE, incluindo o prefixo e o sufixo, para exportar. Pode procurar o nome completo do certificado de encriptação TDE consultando a coluna de nome na vista sys.certificates:

    SELECT name FROM sys.certificates
  

Consola

Não pode exportar um certificado TDE através da consola Google Cloud .

gcloud

Use o seguinte gcloud sql export para exportar um certificado TDE para um contentor do Cloud Storage:

          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
        

Faça as seguintes substituições:

  • INSTANCE_NAME: o nome da instância do Cloud SQL a partir da qual quer exportar o certificado TDE.
  • CERTIFICATE_NAME: o nome do certificado de encriptação que quer exportar.
  • BUCKET_NAME: o nome do contentor do Cloud Storage onde se encontra o certificado de TDE que quer exportar.
  • KEY_NAME: o nome da chave de encriptação associada ao contentor do Cloud Storage.
  • CERTIFICATE_PASSWORD: a palavra-passe do certificado.

REST v1

Para exportar um certificado TDE, use o método instances.export e especifique as seguintes propriedades:

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o nome do projeto a partir do qual o certificado de encriptação vai ser exportado.
  • INSTANCE_NAME: o nome da instância do Cloud SQL a partir da qual quer exportar o certificado de encriptação.
  • TDE_CERTIFICATE_NAME: o nome do certificado de encriptação que quer usar depois de o exportar.
  • CERTIFICATE_NAME: o nome do certificado de encriptação que quer exportar.
  • BUCKET_NAME: o nome do contentor do Cloud Storage onde se encontra o certificado de encriptação que quer exportar.
  • KEY_NAME: o nome da chave de encriptação associada ao contentor do Cloud Storage.
  • CERTIFICATE_PASSWORD: a palavra-passe do certificado.

Método HTTP e URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/export

Corpo JSON do pedido:


{
  "exportContext":
    {
      "fileType": "TDE",
      "tdeExportOptions":
        {
          "name": "TDE_CERTIFICATE_NAME",
          "certificatePath": "gs://BUCKET_NAME/CERTIFICATE_NAME",
          "privateKeyPath": "gs://BUCKET_NAME/KEY_NAME",
          "privateKeyPassword": "CERTIFICATE_PASSWORD"
        }
    }
}


Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

REST v1beta4

Para exportar um certificado TDE, use o método instances.export e especifique as seguintes propriedades:

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o nome do projeto a partir do qual o certificado de encriptação vai ser exportado.
  • INSTANCE_NAME: o nome da instância do Cloud SQL a partir da qual quer exportar o certificado de encriptação.
  • TDE_CERTIFICATE_NAME: o nome do certificado de encriptação que quer usar depois de o exportar.
  • CERTIFICATE_NAME: o nome do certificado de encriptação que quer exportar.
  • BUCKET_NAME: o nome do contentor do Cloud Storage onde se encontra o certificado de encriptação que quer exportar.
  • KEY_NAME: o nome da chave de encriptação associada ao contentor do Cloud Storage.
  • CERTIFICATE_PASSWORD: a palavra-passe do certificado.

Método HTTP e URL:

POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/export

Corpo JSON do pedido:


{
  "exportContext":
    {
      "fileType": "TDE",
      "tdeExportOptions":
        {
          "name": "TDE_CERTIFICATE_NAME",
          "certificatePath": "gs://BUCKET_NAME/CERTIFICATE_NAME",
          "privateKeyPath": "gs://BUCKET_NAME/KEY_NAME",
          "privateKeyPassword": "CERTIFICATE_PASSWORD"
        }
    }
}


Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

Importe uma cópia de segurança encriptada com TDE

Quando importa uma cópia de segurança encriptada com TDE, se o certificado TDE correspondente já estiver na instância de origem, pode importar a cópia de segurança encriptada diretamente e esta não é desencriptada. Não precisa de fornecer o certificado novamente.

Se o certificado não estiver na instância, use a flag --keep-encrypted ao importar. O indicador oferece as seguintes vantagens:

  • Mantém o certificado TDE associado à instância.
  • Impede a desencriptação da cópia de segurança durante a importação.

Se não usar a flag --keep-encrypted, a cópia de segurança importada é descifrada e o certificado TDE não é guardado no servidor.

Para obter mais informações, consulte os seguintes recursos:

Exporte uma cópia de segurança encriptada com TDE

Pode exportar uma cópia de segurança encriptada com TDE da mesma forma que exporta uma cópia de segurança não encriptada. O certificado usado para encriptar a cópia de segurança não está incluído na exportação. Tem de o exportar separadamente.

Para obter mais informações, consulte os seguintes recursos:

Encripte e desencripte uma base de dados

Pode encriptar e desencriptar a sua instância de forma muito semelhante à que usaria com o SQL Server.

Inicialmente, apenas os inícios de sessão de utilizadores root, como sqlserver, podem aceder a certificados de TDE. Para conceder acesso a outros utilizadores, use o seguinte comando ou semelhante:

    GRANT VIEW ANY DEFINITION TO CERTIFICATE_NAME AS CustomerDbRootRole
  

Em alternativa, pode conceder acesso a um certificado e a um utilizador da base de dados específicos.

Pode encriptar uma base de dados através do seguinte comando ou semelhante:

    CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE CERTIFICATE_NAME
    ALTER DATABASE DATABASE_NAME SET ENCRYPTION ON
  

Pode desencriptar uma base de dados através do seguinte comando ou semelhante:

    ALTER DATABASE DATABASE_NAME SET ENCRYPTION OFF
  

O que se segue?