Nesta página, mostramos como usar a criptografia transparente de dados (TDE).
As seções a seguir mostram como gerenciar certificados de TDE.
Antes de começar
Para importar ou exportar certificados de TDE, é necessário ter a
permissão cloudsql.instances.manageEncryption
do Identity and Access Management, disponível no
papel cloudsql.admin
. Para mais informações, consulte os papéis do Cloud SQL.
GRANT VIEW ANY DEFINITION TO other_login AS CustomerDbRootRole
Importar um certificado de TDE externo
Console
Não é possível importar um certificado de TDE usando o console do Google Cloud.
gcloud
Use o seguinte gcloud sql import
para importar um certificado de um bucket 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 você quer importar o certificado TDE.
- CERTIFICATE_NAME: o nome do certificado de criptografia que você quer importar.
- BUCKET_NAME: o nome do bucket do Cloud Storage em que o certificado de TDE que você quer importar está localizado.
- KEY_NAME: o nome da chave de criptografia associada ao bucket do Cloud Storage.
- CERTIFICATE_PASSWORD: a senha do certificado.
REST v1
Para importar um certificado de TDE, use o método
instances.import
e especifique as seguintes propriedades:
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o nome do projeto em que o certificado de criptografia será importado.
- INSTANCE_NAME: o nome da instância do Cloud SQL para a qual você quer importar o certificado de criptografia.
- TDE_CERTIFICATE_NAME: o nome do certificado de criptografia que você quer usar depois que ele for importado.
- CERTIFICATE_NAME: o nome do certificado de criptografia que você quer importar.
- BUCKET_NAME: o nome do bucket do Cloud Storage em que o certificado de criptografia que você quer importar está localizado.
- KEY_NAME: o nome da chave de criptografia associada ao bucket do Cloud Storage.
- CERTIFICATE_PASSWORD: a senha do certificado.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/import
Corpo JSON da solicitação:
{ "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 a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
REST v1beta4
Para importar um certificado de TDE, use o método
instances.import
e especifique as seguintes propriedades:
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o nome do projeto em que o certificado de criptografia será importado.
- INSTANCE_NAME: o nome da instância do Cloud SQL para a qual você quer importar o certificado de criptografia.
- TDE_CERTIFICATE_NAME: o nome do certificado de criptografia que você quer usar depois que ele for importado.
- CERTIFICATE_NAME: o nome do certificado de criptografia que você quer importar.
- BUCKET_NAME: o nome do bucket do Cloud Storage em que o certificado de criptografia que você quer importar está localizado.
- KEY_NAME: o nome da chave de criptografia associada ao bucket do Cloud Storage.
- CERTIFICATE_PASSWORD: a senha do certificado.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/import
Corpo JSON da solicitação:
{ "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 a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
Cada certificado TDE importado recebe um nome exclusivo no formato a seguir:
gcloud_tde_user_CERTIFICATE_NAME_GENERATED_GUID
Se a recuperação pontual (PITR) estiver ativada na instância, pode levar vários minutos até que o certificado TDE importado esteja disponível.
Girar certificados de TDE
É possível girar um certificado de TDE importado com o procedimento armazenado
msdb.dbo.gcloudsql_rotate_tde_certificate
. O procedimento precisa ser invocado pelo usuáriosqlserver
ou por usuários a quem o usuáriosqlserver
deu permissão, usando uma chamada semelhante a esta:EXEC msdb.dbo.gcloudsql_rotate_tde_certificate TDE_CERTIFICATE_NAME
Excluir certificados TDE
É possível importar até dez certificados de TDE do usuário. Se você precisar importar mais, exclua todos os certificados de TDE desnecessários usando o procedimento armazenado
msdb.dbo.gcloudsql_drop_tde_user_certificate
. O procedimento precisa ser invocado pelo usuáriosqlserver
ou por usuários a quem o usuáriosqlserver
deu permissão, usando uma chamada semelhante a esta:EXEC gcloudsql_drop_tde_user_certificate TDE_CERTIFICATE_NAME
Não é possível excluir um certificado gerenciado pelo Cloud SQL.
Não é possível excluir um certificado enquanto ele estiver em uso.
Exportar um certificado de TDE
É necessário especificar o nome completo do certificado TDE, incluindo o prefixo e o sufixo, para exportar. É possível procurar o nome completo do certificado de criptografia TDE
consultando a coluna de nome da visualização
sys.certificates
:
SELECT name FROM sys.certificates
Console
Não é possível exportar um certificado de TDE usando o console do Google Cloud.
gcloud
Use o seguinte
gcloud sql export
para exportar um certificado de TDE para um bucket 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 de onde você quer exportar o certificado TDE.
- CERTIFICATE_NAME: o nome do certificado de criptografia que você quer exportar.
- BUCKET_NAME: o nome do bucket do Cloud Storage em que o certificado de TDE que você quer exportar está localizado.
- KEY_NAME: o nome da chave de criptografia associada ao bucket do Cloud Storage.
- CERTIFICATE_PASSWORD: a senha do certificado.
REST v1
Para exportar um certificado de TDE, use o método
instances.export
e especifique as seguintes propriedades:
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o nome do projeto de onde o certificado de criptografia será exportado.
- INSTANCE_NAME: o nome da instância do Cloud SQL de onde você quer exportar o certificado de criptografia.
- TDE_CERTIFICATE_NAME: o nome do certificado de criptografia que você quer usar depois que ele for exportado.
- CERTIFICATE_NAME: o nome do certificado de criptografia que você quer exportar.
- BUCKET_NAME: o nome do bucket do Cloud Storage em que o certificado de criptografia que você quer exportar está localizado.
- KEY_NAME: o nome da chave de criptografia associada ao bucket do Cloud Storage.
- CERTIFICATE_PASSWORD: a senha do certificado.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/export
Corpo JSON da solicitação:
{ "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 a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
REST v1beta4
Para exportar um certificado de TDE, use o método
instances.export
e especifique as seguintes propriedades:
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o nome do projeto de onde o certificado de criptografia será exportado.
- INSTANCE_NAME: o nome da instância do Cloud SQL de onde você quer exportar o certificado de criptografia.
- TDE_CERTIFICATE_NAME: o nome do certificado de criptografia que você quer usar depois que ele for exportado.
- CERTIFICATE_NAME: o nome do certificado de criptografia que você quer exportar.
- BUCKET_NAME: o nome do bucket do Cloud Storage em que o certificado de criptografia que você quer exportar está localizado.
- KEY_NAME: o nome da chave de criptografia associada ao bucket do Cloud Storage.
- CERTIFICATE_PASSWORD: a senha do certificado.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/export
Corpo JSON da solicitação:
{ "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 a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
Importar um backup criptografado com TDE
Ao importar um backup criptografado com TDE, se o certificado de TDE correspondente já estiver na instância de origem, você poderá importar o backup criptografado diretamente, e ele não será descriptografado. Não é necessário fornecer o certificado novamente.
Se o certificado não estiver na instância, use a
flag --keep-encrypted
ao importar. A flag
oferece os seguintes benefícios:
- Mantém o certificado TDE associado à instância.
- Impede que o backup seja descriptografado durante a importação.
Se você não usar a flag --keep-encrypted
, o
backup importado será descriptografado, e o certificado TDE não será
salvo no servidor.
Para saber mais, acesse os recursos a seguir:
- Exportar e importar usando arquivos BAK
- Importar dados para uma instância do Cloud SQL de um arquivo de backup BAK
Exportar um backup criptografado com TDE
É possível exportar um backup criptografado com TDE da mesma forma que um não criptografado. O certificado usado para criptografar o backup não é incluído na exportação. Você precisa exportá-lo separadamente.
Para saber mais, acesse os recursos a seguir:
- Exportar e importar usando arquivos BAK
- Exportar dados para uma instância do Cloud SQL de um arquivo de backup BAK
Criptografar e descriptografar um banco de dados
É possível criptografar e descriptografar a instância da mesma forma que você faria com o SQL Server.
Inicialmente, apenas os logins de usuário root
, como
sqlserver
, podem acessar os certificados de TDE.
Para conceder acesso a outros usuários, use o comando abaixo ou um semelhante:
GRANT VIEW ANY DEFINITION TO CERTIFICATE_NAME AS CustomerDbRootRole
Também é possível conceder acesso a um certificado e usuário de banco de dados específico.
É possível criptografar um banco de dados usando o comando a seguir ou um semelhante:
CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE CERTIFICATE_NAME ALTER DATABASE DATABASE_NAME SET ENCRYPTION ON
É possível descriptografar um banco de dados usando o comando a seguir ou um semelhante:
ALTER DATABASE DATABASE_NAME SET ENCRYPTION OFF