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 utilizadorsqlserver
ou por utilizadores aos quais o utilizadorsqlserver
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 utilizadorsqlserver
ou por utilizadores aos quais o utilizadorsqlserver
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 e importe com ficheiros BAK
- Importe dados para uma instância do Cloud SQL a partir de um ficheiro de cópia de segurança BAK
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:
- Exporte e importe com ficheiros BAK
- Exporte dados para uma instância do Cloud SQL a partir de um ficheiro de cópia de segurança BAK
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