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 TDE, é preciso ter a permissão cloudsql.instances.manageEncryption
do Identity and Access Management, disponível na função 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 TDE externo
Console
Não é possível importar um certificado TDE usando o console 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 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 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 em que você quer importar o certificado de criptografia.
- TDE_CERTIFICATE_NAME: o nome do certificado de criptografia que você quer usar depois da importação.
- 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 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 em que você quer importar o certificado de criptografia.
- TDE_CERTIFICATE_NAME: o nome do certificado de criptografia que você quer usar depois da importação.
- 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 seguinte formato:
gcloud_tde_user_CERTIFICATE_NAME_GENERATED_GUID
Se a recuperação pontual (PITR) estiver ativada na instância, pode levar alguns minutos para que o certificado TDE importado fique disponível.
Fazer a rotação dos certificados TDE
É possível fazer a rotação de um certificado 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 ele concedeu permissão, usando uma chamada semelhante a esta:sqlserver
EXEC msdb.dbo.gcloudsql_rotate_tde_certificate TDE_CERTIFICATE_NAME
Excluir certificados TDE
É possível importar até dez certificados TDE de usuário. Se você precisar importar mais, exclua os certificados 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 ele concedeu permissão, usando uma chamada semelhante a esta:sqlserver
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 está em uso.
Exportar um certificado TDE
Você precisa especificar o nome completo do certificado TDE, incluindo o prefixo e o sufixo, para exportar. Para pesquisar o nome completo do certificado de criptografia TDE, consulte a coluna "name" na visualização sys.certificates
:
SELECT name FROM sys.certificates
Console
Não é possível exportar um certificado TDE usando o console Google Cloud .
gcloud
Use o seguinte
gcloud sql export
para exportar um certificado 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 que 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 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 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 que você quer exportar o certificado de criptografia.
- TDE_CERTIFICATE_NAME: o nome do certificado de criptografia que você quer usar depois da exportação.
- 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 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 que você quer exportar o certificado de criptografia.
- TDE_CERTIFICATE_NAME: o nome do certificado de criptografia que você quer usar depois da exportação.
- 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 TDE correspondente já estiver na instância de origem, será possível importar o backup criptografado diretamente sem descriptografá-lo. 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 está incluído na exportação. É necessário exportar 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 sua instância da mesma forma que faria usando o SQL Server.
Inicialmente, apenas logins de usuários root
, como
sqlserver
, podem acessar certificados TDE.
Para conceder acesso a outros usuários, use o seguinte comando ou semelhante:
GRANT VIEW ANY DEFINITION TO CERTIFICATE_NAME AS CustomerDbRootRole
Como alternativa, é possível conceder acesso a um certificado e um usuário do banco de dados específicos.
É possível criptografar um banco de dados usando o 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
É possível descriptografar um banco de dados usando o seguinte comando ou semelhante:
ALTER DATABASE DATABASE_NAME SET ENCRYPTION OFF