Questa pagina mostra come utilizzare la crittografia TDE (Transparent Data Encryption).
Le sezioni seguenti 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
Effettua le seguenti sostituzioni:
- INSTANCE_NAME: il nome dell'istanza Cloud SQL in 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 importare il certificato di crittografia.
- INSTANCE_NAME: il nome dell'istanza Cloud SQL in cui vuoi importare il certificato di crittografia.
- TDE_CERTIFICATE_NAME: il nome del certificato di crittografia che vuoi utilizzare dopo l'importazione.
- 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 importare il certificato di crittografia.
- INSTANCE_NAME: il nome dell'istanza Cloud SQL in cui vuoi importare il certificato di crittografia.
- TDE_CERTIFICATE_NAME: il nome del certificato di crittografia che vuoi utilizzare dopo l'importazione.
- 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 sull'istanza, potrebbero essere necessari diversi minuti prima che il certificato TDE importato sia disponibile.
Ruota i certificati TDE
Puoi ruotare un certificato TDE importato con la procedura
msdb.dbo.gcloudsql_rotate_tde_certificate
memorizzata. La procedura deve essere richiamata 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
Elimina certificati TDE
Puoi importare fino a dieci certificati TDE utente. Se devi importarne altri, elimina i certificati TDE non necessari utilizzando la
msdb.dbo.gcloudsql_drop_tde_user_certificate
stored procedure. La procedura deve essere richiamata 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 del nome dalla vista 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
Effettua 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 esportare 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 l'esportazione.
- 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 esportare 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 l'esportazione.
- 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à presente nell'istanza di origine, puoi importare il backup criptato direttamente e non verrà decriptato. Non è necessario fornire nuovamente il certificato.
Se il certificato non è sull'istanza, utilizza il
flag --keep-encrypted
durante l'importazione. Il flag
offre i seguenti vantaggi:
- Mantiene il certificato TDE associato all'istanza.
- Impedisce la decriptografia 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:
- Esportazione e importazione mediante file BAK
- Importare dati in un'istanza Cloud SQL da un file di backup BAK
Esportare un backup criptato con TDE
Puoi esportare un backup criptato con 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:
- Esportazione e importazione mediante file BAK
- Esportare dati in un'istanza Cloud SQL da un file di backup BAK
Criptare e decriptare un database
Puoi criptare e decriptare l'istanza in modo molto simile a come faresti con SQL Server.
Inizialmente, solo gli accessi utente root
, ad esempio
sqlserver
, 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 certificato e a un utente del database specifici.
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