En esta página, se muestra cómo usar la encriptación de datos transparente (TDE).
En las siguientes secciones, se muestra cómo administrar certificados de TDE.
Antes de comenzar
Para importar o exportar certificados de TDE, debes tener el permiso de Identity and Access Management cloudsql.instances.manageEncryption
, disponible en el rol cloudsql.admin
. Para obtener más información, consulta los
roles de Cloud SQL.
GRANT VIEW ANY DEFINITION TO other_login AS CustomerDbRootRole
Importa un certificado TDE externo
Console
No puedes importar un certificado de TDE con la consola de Google Cloud.
gcloud
Usa el siguiente gcloud sql import
para importar un certificado desde un bucket de 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
Realiza los siguientes reemplazos:
- INSTANCE_NAME: El nombre de la instancia de Cloud SQL a la que deseas importar el certificado de TDE.
- CERTIFICATE_NAME: Es el nombre del certificado de encriptación que deseas importar.
- BUCKET_NAME: Es el nombre del bucket de Cloud Storage en el que se encuentra el certificado de TDE que deseas importar.
- KEY_NAME: Es el nombre de la clave de encriptación asociada con el bucket de Cloud Storage.
- CERTIFICATE_PASSWORD: La contraseña del certificado
REST v1
Para importar un certificado de TDE, usa el método instances.import
y especifica las siguientes propiedades:
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: Es el nombre del proyecto en el que se importará el certificado de encriptación.
- INSTANCE_NAME: El nombre de la instancia de Cloud SQL a la que deseas importar el certificado de encriptación.
- TDE_CERTIFICATE_NAME: Es el nombre del certificado de encriptación que deseas usar después de importarlo.
- CERTIFICATE_NAME: Es el nombre del certificado de encriptación que deseas importar.
- BUCKET_NAME: Es el nombre del bucket de Cloud Storage en el que se encuentra el certificado de encriptación que deseas importar.
- KEY_NAME: Es el nombre de la clave de encriptación asociada con el bucket de Cloud Storage.
- CERTIFICATE_PASSWORD: La contraseña del certificado
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/import
Cuerpo JSON de la solicitud:
{ "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 tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
REST v1beta4
Para importar un certificado de TDE, usa el método instances.import
y especifica las siguientes propiedades:
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: Es el nombre del proyecto en el que se importará el certificado de encriptación.
- INSTANCE_NAME: El nombre de la instancia de Cloud SQL a la que deseas importar el certificado de encriptación.
- TDE_CERTIFICATE_NAME: Es el nombre del certificado de encriptación que deseas usar después de importarlo.
- CERTIFICATE_NAME: Es el nombre del certificado de encriptación que deseas importar.
- BUCKET_NAME: Es el nombre del bucket de Cloud Storage en el que se encuentra el certificado de encriptación que deseas importar.
- KEY_NAME: Es el nombre de la clave de encriptación asociada con el bucket de Cloud Storage.
- CERTIFICATE_PASSWORD: La contraseña del certificado
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/import
Cuerpo JSON de la solicitud:
{ "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 tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
A cada certificado de TDE importado se le asigna un nombre único con el siguiente formato:
gcloud_tde_user_CERTIFICATE_NAME_GENERATED_GUID
Si la recuperación de un momento determinado (PITR) está habilitada en la instancia, es posible que el certificado de TDE importado tarde varios minutos en estar disponible.
Rota los certificados de TDE
Puedes rotar un certificado de TDE importado con el procedimiento almacenado
msdb.dbo.gcloudsql_rotate_tde_certificate
. El usuariosqlserver
o los usuarios a los que el usuariosqlserver
les otorgó permiso deben invocar el procedimiento con una llamada similar a la siguiente:EXEC msdb.dbo.gcloudsql_rotate_tde_certificate TDE_CERTIFICATE_NAME
Borra los certificados de TDE
Puedes importar hasta diez certificados de TDE de usuario. Si necesitas importar más, borra los certificados de TDE innecesarios con el procedimiento almacenado
msdb.dbo.gcloudsql_drop_tde_user_certificate
. El usuariosqlserver
o los usuarios a los que el usuariosqlserver
les otorgó permiso deben invocar el procedimiento con una llamada similar a la siguiente:EXEC gcloudsql_drop_tde_user_certificate TDE_CERTIFICATE_NAME
No puedes borrar un certificado administrado por Cloud SQL.
No puedes borrar un certificado mientras está en uso.
Cómo exportar un certificado de TDE
Para exportar, debes especificar el nombre completo del certificado de TDE, incluido el prefijo y el sufijo. Puedes buscar el nombre completo del certificado de encriptación de la TDE consultando la columna de nombre de la vista sys.certificates
:
SELECT name FROM sys.certificates
Console
No puedes exportar un certificado de TDE con la consola de Google Cloud.
gcloud
Usa el siguiente
gcloud sql export
para exportar un certificado de TDE a un bucket de 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
Realiza los siguientes reemplazos:
- INSTANCE_NAME: El nombre de la instancia de Cloud SQL desde la que deseas exportar el certificado de TDE.
- CERTIFICATE_NAME: Es el nombre del certificado de encriptación que deseas exportar.
- BUCKET_NAME: Es el nombre del bucket de Cloud Storage en el que se encuentra el certificado de TDE que deseas exportar.
- KEY_NAME: Es el nombre de la clave de encriptación asociada con el bucket de Cloud Storage.
- CERTIFICATE_PASSWORD: La contraseña del certificado
REST v1
Para exportar un certificado de TDE, usa el método instances.export
y especifica las siguientes propiedades:
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: Es el nombre del proyecto desde el que se exportará el certificado de encriptación.
- INSTANCE_NAME: El nombre de la instancia de Cloud SQL desde la que deseas exportar el certificado de encriptación.
- TDE_CERTIFICATE_NAME: Es el nombre del certificado de encriptación que deseas usar después de exportarlo.
- CERTIFICATE_NAME: Es el nombre del certificado de encriptación que deseas exportar.
- BUCKET_NAME: Es el nombre del bucket de Cloud Storage en el que se encuentra el certificado de encriptación que deseas exportar.
- KEY_NAME: Es el nombre de la clave de encriptación asociada con el bucket de Cloud Storage.
- CERTIFICATE_PASSWORD: La contraseña del certificado
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/export
Cuerpo JSON de la solicitud:
{ "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 tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
REST v1beta4
Para exportar un certificado de TDE, usa el método instances.export
y especifica las siguientes propiedades:
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: Es el nombre del proyecto desde el que se exportará el certificado de encriptación.
- INSTANCE_NAME: El nombre de la instancia de Cloud SQL desde la que deseas exportar el certificado de encriptación.
- TDE_CERTIFICATE_NAME: Es el nombre del certificado de encriptación que deseas usar después de exportarlo.
- CERTIFICATE_NAME: Es el nombre del certificado de encriptación que deseas exportar.
- BUCKET_NAME: Es el nombre del bucket de Cloud Storage en el que se encuentra el certificado de encriptación que deseas exportar.
- KEY_NAME: Es el nombre de la clave de encriptación asociada con el bucket de Cloud Storage.
- CERTIFICATE_PASSWORD: La contraseña del certificado
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/export
Cuerpo JSON de la solicitud:
{ "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 tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Importa una copia de seguridad encriptada con TDE
Cuando importas una copia de seguridad encriptada con TDE, si el certificado de TDE correspondiente ya está en la instancia de origen, puedes importar la copia de seguridad encriptada directamente y no se desencriptará. No es necesario que vuelvas a proporcionar el certificado.
Si el certificado no está en la instancia, usa la marca --keep-encrypted
cuando realices la importación. La marca proporciona los siguientes beneficios:
- Mantiene el certificado de TDE asociado con la instancia.
- Evita que se desencripte la copia de seguridad durante la importación.
Si no usas la marca --keep-encrypted
, se desencriptará la
c copia de seguridad importada y no se guardará el certificado de TDE
en el servidor.
Para obtener más información, consulta los siguientes recursos:
- Importa y exporta con archivos BAK
- Importa datos a una instancia de Cloud SQL desde un archivo de copia de seguridad BAK
Cómo exportar una copia de seguridad encriptada con TDE
Puedes exportar una copia de seguridad encriptada con TDE de la misma manera que exportas una sin encriptar. El certificado que se usa para encriptar la copia de seguridad no se incluye en la exportación. Debes exportarlo por separado.
Para obtener más información, consulta los siguientes recursos:
- Importa y exporta con archivos BAK
- Exporta datos a una instancia de Cloud SQL desde un archivo de copia de seguridad BAK
Encripta y desencripta una base de datos
Puedes encriptar y desencriptar tu instancia de la misma manera que lo harías con SQL Server.
En un principio, solo los accesos de root
del usuario, como sqlserver
, pueden acceder a los certificados de TDE.
Para otorgar acceso a otros usuarios, usa el siguiente comando o uno similar:
GRANT VIEW ANY DEFINITION TO CERTIFICATE_NAME AS CustomerDbRootRole
Como alternativa, puedes otorgar acceso a un certificado y a un usuario de la base de datos específicos.
Puedes encriptar una base de datos con el siguiente comando o uno similar:
CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE CERTIFICATE_NAME ALTER DATABASE DATABASE_NAME SET ENCRYPTION ON
Puedes desencriptar una base de datos con el siguiente comando o uno similar:
ALTER DATABASE DATABASE_NAME SET ENCRYPTION OFF