Cette page explique comment utiliser le chiffrement transparent des données (TDE, Transparent Data Encryption).
Les sections suivantes vous expliquent comment gérer les certificats TDE.
Avant de commencer
Pour importer ou exporter des certificats TDE, vous devez disposer de l'autorisation Identity and Access Management cloudsql.instances.manageEncryption
, disponible dans le rôle cloudsql.admin
. Pour en savoir plus, consultez la section Rôles Cloud SQL.
GRANT VIEW ANY DEFINITION TO other_login AS CustomerDbRootRole
Importer un certificat TDE externe
Console
Vous ne pouvez pas importer de certificat TDE à l'aide de la console Google Cloud.
gcloud
Utilisez la gcloud sql import
suivante pour importer un certificat à partir d'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
Effectuez les remplacements suivants :
- INSTANCE_NAME: nom de l'instance Cloud SQL dans laquelle vous souhaitez importer le certificat TDE.
- CERTIFICATE_NAME: nom du certificat de chiffrement que vous souhaitez importer.
- BUCKET_NAME: nom du bucket Cloud Storage dans lequel se trouve le certificat TDE que vous souhaitez importer.
- KEY_NAME: nom de la clé de chiffrement associée au bucket Cloud Storage.
- CERTIFICATE_PASSWORD: mot de passe du certificat.
REST v1
Pour importer un certificat TDE, utilisez la méthode instances.import
et spécifiez les propriétés suivantes:
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID: nom du projet dans lequel le certificat de chiffrement doit être importé.
- INSTANCE_NAME: nom de l'instance Cloud SQL à laquelle vous souhaitez importer le certificat de chiffrement.
- TDE_CERTIFICATE_NAME: nom du certificat de chiffrement que vous souhaitez utiliser après son importation.
- CERTIFICATE_NAME: nom du certificat de chiffrement que vous souhaitez importer.
- BUCKET_NAME: nom du bucket Cloud Storage dans lequel se trouve le certificat de chiffrement que vous souhaitez importer.
- KEY_NAME: nom de la clé de chiffrement associée au bucket Cloud Storage.
- CERTIFICATE_PASSWORD: mot de passe du certificat.
Méthode HTTP et URL :
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/import
Corps JSON de la requête :
{ "importContext": { "fileType": "TDE", "tdeImportOptions": { "name": "TDE_CERTIFICATE_NAME", "certificatePath": "gs://BUCKET_NAME/CERTIFICATE_NAME", "privateKeyPath": "gs://BUCKET_NAME/KEY_NAME", "privateKeyPassword": "CERTIFICATE_PASSWORD" } } }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
REST v1beta4
Pour importer un certificat TDE, utilisez la méthode instances.import
et spécifiez les propriétés suivantes:
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID: nom du projet dans lequel le certificat de chiffrement doit être importé.
- INSTANCE_NAME: nom de l'instance Cloud SQL à laquelle vous souhaitez importer le certificat de chiffrement.
- TDE_CERTIFICATE_NAME: nom du certificat de chiffrement que vous souhaitez utiliser après son importation.
- CERTIFICATE_NAME: nom du certificat de chiffrement que vous souhaitez importer.
- BUCKET_NAME: nom du bucket Cloud Storage dans lequel se trouve le certificat de chiffrement que vous souhaitez importer.
- KEY_NAME: nom de la clé de chiffrement associée au bucket Cloud Storage.
- CERTIFICATE_PASSWORD: mot de passe du certificat.
Méthode HTTP et URL :
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/import
Corps JSON de la requête :
{ "importContext": { "fileType": "TDE", "tdeImportOptions": { "name": "TDE_CERTIFICATE_NAME", "certificatePath": "gs://BUCKET_NAME/CERTIFICATE_NAME", "privateKeyPath": "gs://BUCKET_NAME/KEY_NAME", "privateKeyPassword": "CERTIFICATE_PASSWORD" } } }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
Chaque certificat TDE importé se voit attribuer un nom unique au format suivant:
gcloud_tde_user_CERTIFICATE_NAME_GENERATED_GUID
Si la récupération à un moment précis (PITR, point-in-time recovery) est activée sur l'instance, plusieurs minutes peuvent être nécessaires avant que le certificat TDE importé soit disponible.
Effectuer une rotation des certificats TDE
Vous pouvez faire pivoter un certificat TDE importé à l'aide de la procédure stockée
msdb.dbo.gcloudsql_rotate_tde_certificate
. La procédure doit être appelée par l'utilisateursqlserver
ou par les utilisateurs auxquels l'utilisateursqlserver
a accordé l'autorisation, à l'aide d'un appel semblable à celui-ci:EXEC msdb.dbo.gcloudsql_rotate_tde_certificate TDE_CERTIFICATE_NAME
Supprimer des certificats TDE
Vous pouvez importer jusqu'à 10 certificats TDE utilisateur. Si vous devez en importer d'autres, supprimez les certificats TDE inutiles à l'aide de la procédure stockée
msdb.dbo.gcloudsql_drop_tde_user_certificate
. La procédure doit être appelée par l'utilisateursqlserver
ou par les utilisateurs auxquels l'utilisateursqlserver
a accordé l'autorisation, à l'aide d'un appel semblable à celui-ci:EXEC gcloudsql_drop_tde_user_certificate TDE_CERTIFICATE_NAME
Vous ne pouvez pas supprimer un certificat géré par Cloud SQL.
Vous ne pouvez pas supprimer un certificat lorsqu'il est utilisé.
Exporter un certificat TDE
Vous devez spécifier le nom complet du certificat TDE, y compris le préfixe et le suffixe, pour l'exporter. Vous pouvez rechercher le nom complet du certificat de chiffrement TDE en interrogeant la colonne de nom de la vue sys.certificates
:
SELECT name FROM sys.certificates
Console
Vous ne pouvez pas exporter un certificat TDE à l'aide de la console Google Cloud.
gcloud
Utilisez la commande gcloud sql export
suivante pour exporter un certificat TDE vers 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
Effectuez les remplacements suivants :
- INSTANCE_NAME: nom de l'instance Cloud SQL à partir de laquelle vous souhaitez exporter le certificat TDE.
- CERTIFICATE_NAME: nom du certificat de chiffrement que vous souhaitez exporter.
- BUCKET_NAME: nom du bucket Cloud Storage où se trouve le certificat TDE que vous souhaitez exporter.
- KEY_NAME: nom de la clé de chiffrement associée au bucket Cloud Storage.
- CERTIFICATE_PASSWORD: mot de passe du certificat.
REST v1
Pour exporter un certificat TDE, utilisez la méthode instances.export
et spécifiez les propriétés suivantes:
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID: nom du projet à partir duquel le certificat de chiffrement doit être exporté.
- INSTANCE_NAME: nom de l'instance Cloud SQL à partir de laquelle vous souhaitez exporter le certificat de chiffrement.
- TDE_CERTIFICATE_NAME: nom du certificat de chiffrement que vous souhaitez utiliser après son exportation.
- CERTIFICATE_NAME: nom du certificat de chiffrement que vous souhaitez exporter.
- BUCKET_NAME: nom du bucket Cloud Storage où se trouve le certificat de chiffrement que vous souhaitez exporter.
- KEY_NAME: nom de la clé de chiffrement associée au bucket Cloud Storage.
- CERTIFICATE_PASSWORD: mot de passe du certificat.
Méthode HTTP et URL :
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/export
Corps JSON de la requête :
{ "exportContext": { "fileType": "TDE", "tdeExportOptions": { "name": "TDE_CERTIFICATE_NAME", "certificatePath": "gs://BUCKET_NAME/CERTIFICATE_NAME", "privateKeyPath": "gs://BUCKET_NAME/KEY_NAME", "privateKeyPassword": "CERTIFICATE_PASSWORD" } } }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
REST v1beta4
Pour exporter un certificat TDE, utilisez la méthode instances.export
et spécifiez les propriétés suivantes:
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID: nom du projet à partir duquel le certificat de chiffrement doit être exporté.
- INSTANCE_NAME: nom de l'instance Cloud SQL à partir de laquelle vous souhaitez exporter le certificat de chiffrement.
- TDE_CERTIFICATE_NAME: nom du certificat de chiffrement que vous souhaitez utiliser après son exportation.
- CERTIFICATE_NAME: nom du certificat de chiffrement que vous souhaitez exporter.
- BUCKET_NAME: nom du bucket Cloud Storage où se trouve le certificat de chiffrement que vous souhaitez exporter.
- KEY_NAME: nom de la clé de chiffrement associée au bucket Cloud Storage.
- CERTIFICATE_PASSWORD: mot de passe du certificat.
Méthode HTTP et URL :
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/export
Corps JSON de la requête :
{ "exportContext": { "fileType": "TDE", "tdeExportOptions": { "name": "TDE_CERTIFICATE_NAME", "certificatePath": "gs://BUCKET_NAME/CERTIFICATE_NAME", "privateKeyPath": "gs://BUCKET_NAME/KEY_NAME", "privateKeyPassword": "CERTIFICATE_PASSWORD" } } }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
Importer une sauvegarde chiffrée par TDE
Lorsque vous importez une sauvegarde chiffrée par TDE, si le certificat TDE correspondant se trouve déjà sur l'instance source, vous pouvez importer directement la sauvegarde chiffrée, et elle ne sera pas déchiffrée. Vous n'avez pas besoin de fournir à nouveau le certificat.
Si le certificat ne se trouve pas sur l'instance, utilisez l'option --keep-encrypted
lors de l'importation. L'indicateur présente les avantages suivants:
- Conserve le certificat TDE associé à l'instance.
- Empêche le déchiffrement de la sauvegarde lors de l'importation.
Si vous n'utilisez pas l'indicateur --keep-encrypted
, la sauvegarde importée sera déchiffrée et le certificat TDE ne sera pas enregistré sur le serveur.
Pour en savoir plus, consultez les ressources suivantes :
- Exporter et importer à l'aide de fichiers BAK
- Importer des données dans une instance Cloud SQL à partir d'un fichier de sauvegarde BAK
Exporter une sauvegarde chiffrée par TDE
Vous pouvez exporter une sauvegarde chiffrée TDE de la même manière que vous exportez une sauvegarde non chiffrée. Le certificat utilisé pour chiffrer la sauvegarde n'est pas inclus dans l'exportation. Vous devez l'exporter séparément.
Pour en savoir plus, consultez les ressources suivantes :
- Exporter et importer à l'aide de fichiers BAK
- Exporter des données vers une instance Cloud SQL à partir d'un fichier de sauvegarde BAK
Chiffrer et déchiffrer une base de données
Vous pouvez chiffrer et déchiffrer votre instance de la même manière que vous le feriez avec SQL Server.
Au départ, seuls les identifiants root
de l'utilisateur, tels que sqlserver
, peuvent accéder aux certificats TDE.
Pour accorder l'accès à d'autres utilisateurs, utilisez la commande suivante ou une commande similaire:
GRANT VIEW ANY DEFINITION TO CERTIFICATE_NAME AS CustomerDbRootRole
Vous pouvez également accorder l'accès à un certificat et à un utilisateur de base de données spécifiques.
Vous pouvez chiffrer une base de données à l'aide de la commande suivante ou d'une commande similaire:
CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE CERTIFICATE_NAME ALTER DATABASE DATABASE_NAME SET ENCRYPTION ON
Vous pouvez déchiffrer une base de données à l'aide de la commande suivante ou d'une commande similaire:
ALTER DATABASE DATABASE_NAME SET ENCRYPTION OFF