Questa pagina mostra come utilizzare la crittografia trasparente dei dati (TDE).
Le sezioni riportate di seguito mostrano come gestire i certificati TDE.
Prima di iniziare
Per importare o esportare i certificati TDE, devi disporre dell'autorizzazione Identity and Access Management cloudsql.instances.manageEncryption
, disponibile nel ruolo cloudsql.admin
. Per ulteriori informazioni, consulta i ruoli Cloud SQL.
GRANT VIEW ANY DEFINITION TO other_login AS CustomerDbRootRole
Importare un certificato TDE esterno
Console
Non puoi importare un certificato TDE utilizzando la console Google Cloud.
gcloud
Utilizza il seguente
gcloud sql import
per importare un certificato da un bucket 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
Esegui le seguenti sostituzioni:
- INSTANCE_NAME: il nome dell'istanza Cloud SQL a cui vuoi importare il certificato TDE.
- CERTIFICATE_NAME: il nome del certificato di crittografia che vuoi importare.
- BUCKET_NAME: il nome del bucket Cloud Storage in cui si trova il certificato TDE che vuoi importare.
- KEY_NAME: il nome della chiave di crittografia associata al bucket Cloud Storage.
- CERTIFICATE_PASSWORD: la password del certificato.
REST v1
Per importare un certificato TDE, utilizza il metodo
instances.import
e specifica le seguenti proprietà:
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: il nome del progetto in cui deve essere importato il certificato di crittografia.
- INSTANCE_NAME: il nome dell'istanza Cloud SQL a cui vuoi importare il certificato di crittografia.
- TDE_CERTIFICATE_NAME: il nome del certificato di crittografia che vuoi utilizzare dopo averlo importato.
- CERTIFICATE_NAME: il nome del certificato di crittografia che vuoi importare.
- BUCKET_NAME: il nome del bucket Cloud Storage in cui si trova il certificato di crittografia che vuoi importare.
- KEY_NAME: il nome della chiave di crittografia associata al bucket Cloud Storage.
- CERTIFICATE_PASSWORD: la password del certificato.
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/import
Corpo JSON della richiesta:
{ "importContext": { "fileType": "TDE", "tdeImportOptions": { "name": "TDE_CERTIFICATE_NAME", "certificatePath": "gs://BUCKET_NAME/CERTIFICATE_NAME", "privateKeyPath": "gs://BUCKET_NAME/KEY_NAME", "privateKeyPassword": "CERTIFICATE_PASSWORD" } } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
REST v1beta4
Per importare un certificato TDE, utilizza il metodo
instances.import
e specifica le seguenti proprietà:
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: il nome del progetto in cui deve essere importato il certificato di crittografia.
- INSTANCE_NAME: il nome dell'istanza Cloud SQL a cui vuoi importare il certificato di crittografia.
- TDE_CERTIFICATE_NAME: il nome del certificato di crittografia che vuoi utilizzare dopo averlo importato.
- CERTIFICATE_NAME: il nome del certificato di crittografia che vuoi importare.
- BUCKET_NAME: il nome del bucket Cloud Storage in cui si trova il certificato di crittografia che vuoi importare.
- KEY_NAME: il nome della chiave di crittografia associata al bucket Cloud Storage.
- CERTIFICATE_PASSWORD: la password del certificato.
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/import
Corpo JSON della richiesta:
{ "importContext": { "fileType": "TDE", "tdeImportOptions": { "name": "TDE_CERTIFICATE_NAME", "certificatePath": "gs://BUCKET_NAME/CERTIFICATE_NAME", "privateKeyPath": "gs://BUCKET_NAME/KEY_NAME", "privateKeyPassword": "CERTIFICATE_PASSWORD" } } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
A ogni certificato TDE importato viene assegnato un nome univoco nel seguente formato:
gcloud_tde_user_CERTIFICATE_NAME_GENERATED_GUID
Se il recupero point-in-time (PITR) è abilitato nell'istanza, potrebbero essere necessari alcuni minuti prima che il certificato TDE importato sia disponibile.
Ruota i certificati TDE
Puoi ruotare un certificato TDE importato con la procedura memorizzata
msdb.dbo.gcloudsql_rotate_tde_certificate
. La procedura deve essere invocata dall'utentesqlserver
o dagli utenti a cui l'utentesqlserver
ha concesso l'autorizzazione, utilizzando una chiamata simile alla seguente:EXEC msdb.dbo.gcloudsql_rotate_tde_certificate TDE_CERTIFICATE_NAME
Eliminare i certificati TDE
Puoi importare fino a dieci certificati TDE utente. Se devi importarne altri, elimina i certificati TDE non necessari utilizzando la procedura memorizzata
msdb.dbo.gcloudsql_drop_tde_user_certificate
. La procedura deve essere invocata dall'utentesqlserver
o dagli utenti a cui l'utentesqlserver
ha concesso l'autorizzazione, utilizzando una chiamata simile alla seguente:EXEC gcloudsql_drop_tde_user_certificate TDE_CERTIFICATE_NAME
Non puoi eliminare un certificato gestito da Cloud SQL.
Non puoi eliminare un certificato mentre è in uso.
Esportare un certificato TDE
Per l'esportazione, devi specificare il nome completo del certificato TDE, inclusi il prefisso e il suffisso. Puoi cercare il nome completo del certificato di crittografia TDE eseguendo una query sulla colonna Nome della visualizzazione sys.certificates
:
SELECT name FROM sys.certificates
Console
Non puoi esportare un certificato TDE utilizzando la console Google Cloud.
gcloud
Utilizza il seguente
gcloud sql export
per esportare un certificato TDE in un bucket 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
Esegui le seguenti sostituzioni:
- INSTANCE_NAME: il nome dell'istanza Cloud SQL da cui vuoi esportare il certificato TDE.
- CERTIFICATE_NAME: il nome del certificato di crittografia che vuoi esportare.
- BUCKET_NAME: il nome del bucket Cloud Storage in cui si trova il certificato TDE che vuoi esportare.
- KEY_NAME: il nome della chiave di crittografia associata al bucket Cloud Storage.
- CERTIFICATE_PASSWORD: la password del certificato.
REST v1
Per esportare un certificato TDE, utilizza il metodo
instances.export
e specifica le seguenti proprietà:
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: il nome del progetto da cui deve essere esportato il certificato di crittografia.
- INSTANCE_NAME: il nome dell'istanza Cloud SQL da cui vuoi esportare il certificato di crittografia.
- TDE_CERTIFICATE_NAME: il nome del certificato di crittografia che vuoi utilizzare dopo averlo esportato.
- CERTIFICATE_NAME: il nome del certificato di crittografia che vuoi esportare.
- BUCKET_NAME: il nome del bucket Cloud Storage in cui si trova il certificato di crittografia che vuoi esportare.
- KEY_NAME: il nome della chiave di crittografia associata al bucket Cloud Storage.
- CERTIFICATE_PASSWORD: la password del certificato.
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/export
Corpo JSON della richiesta:
{ "exportContext": { "fileType": "TDE", "tdeExportOptions": { "name": "TDE_CERTIFICATE_NAME", "certificatePath": "gs://BUCKET_NAME/CERTIFICATE_NAME", "privateKeyPath": "gs://BUCKET_NAME/KEY_NAME", "privateKeyPassword": "CERTIFICATE_PASSWORD" } } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
REST v1beta4
Per esportare un certificato TDE, utilizza il metodo
instances.export
e specifica le seguenti proprietà:
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: il nome del progetto da cui deve essere esportato il certificato di crittografia.
- INSTANCE_NAME: il nome dell'istanza Cloud SQL da cui vuoi esportare il certificato di crittografia.
- TDE_CERTIFICATE_NAME: il nome del certificato di crittografia che vuoi utilizzare dopo averlo esportato.
- CERTIFICATE_NAME: il nome del certificato di crittografia che vuoi esportare.
- BUCKET_NAME: il nome del bucket Cloud Storage in cui si trova il certificato di crittografia che vuoi esportare.
- KEY_NAME: il nome della chiave di crittografia associata al bucket Cloud Storage.
- CERTIFICATE_PASSWORD: la password del certificato.
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/export
Corpo JSON della richiesta:
{ "exportContext": { "fileType": "TDE", "tdeExportOptions": { "name": "TDE_CERTIFICATE_NAME", "certificatePath": "gs://BUCKET_NAME/CERTIFICATE_NAME", "privateKeyPath": "gs://BUCKET_NAME/KEY_NAME", "privateKeyPassword": "CERTIFICATE_PASSWORD" } } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
Importare un backup criptato con TDE
Quando importi un backup criptato con TDE, se il certificato TDE corrispondente è già nell'istanza di origine, puoi importare direttamente il backup criptato e non verrà decriptato. Non è necessario fornire nuovamente il certificato.
Se il certificato non è nell'istanza, utilizza il flag --keep-encrypted
durante l'importazione. Il flag offre i seguenti vantaggi:
- Mantiene il certificato TDE associato all'istanza.
- Impedisce il decrittografia del backup durante l'importazione.
Se non utilizzi il flag --keep-encrypted
, il backup importato verrà decriptato e il certificato TDE non verrà salvato sul server.
Per maggiori informazioni, consulta le seguenti risorse:
- Esportare e importare utilizzando file BAK
- Importare dati in un'istanza Cloud SQL da un file di backup BAK
Esportare un backup con crittografia TDE
Puoi esportare un backup con crittografia TDE nello stesso modo in cui esporti un backup non criptato. Il certificato utilizzato per criptare il backup non è incluso nell'esportazione. Devi esportarlo separatamente.
Per maggiori informazioni, consulta le seguenti risorse:
- Esportare e importare utilizzando file BAK
- Esportare dati in un'istanza Cloud SQL da un file di backup BAK
Crittografare e decriptare un database
Puoi criptare e decriptare l'istanza in modo molto simile a come faresti con SQL Server.
Inizialmente, solo gli accessi root
dell'utente, ad esempiosqlserver
, possono accedere ai certificati TDE.
Per concedere l'accesso ad altri utenti, utilizza il seguente comando o uno simile:
GRANT VIEW ANY DEFINITION TO CERTIFICATE_NAME AS CustomerDbRootRole
In alternativa, puoi concedere l'accesso a un determinato certificato e a un utente del database.
Puoi criptare un database utilizzando il seguente comando o uno simile:
CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE CERTIFICATE_NAME ALTER DATABASE DATABASE_NAME SET ENCRYPTION ON
Puoi decriptare un database utilizzando il seguente comando o uno simile:
ALTER DATABASE DATABASE_NAME SET ENCRYPTION OFF