mysql 加密 tde_TDE与列级数据加密

本文详述了MySQL数据库中的TDE(Transparent Data Encryption)测试过程,包括创建数据库、证书、主密钥,以及备份和恢复的步骤。在模拟丢失证书和主密钥的情况下,演示了如何重新创建和恢复,确保数据库正常访问。同时,文章还探讨了列级数据加密的实现,并介绍了数据迁移和密钥修改的方法,为数据库安全提供了全面的实践指南。
摘要由CSDN通过智能技术生成

一、测试TDE

此部分内容扩展SQL Server安全系列的第九篇:SQL Server安全透明数据加密的测试TDE章节。启用TDE的详细步骤请参考原文。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

--Create a test database

CREATE DATABASEUestDBGO

--Create a certificate in master to use with TDE

USEmaster;GO

--TDE hooks into encryption key hierarchy in SQL Server

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '!drJP9QXC&Vi%cs';GO

--Create the certificate used to protect the database encryption key

CREATE CERTIFICATE UestDBTDECert WITH SUBJECT = 'Certificate to implement TDE on UestDB';GO

--Backup the master_key

BACKUP MASTER KEY TO FILE = 'D:\SQL2012\MasterKey.bak' ENCRYPTION BY PASSWORD = 'pass';GO

--Backup the certificate--Either create the D:\SQL2012 folder or change it in the code below

BACKUP CERTIFICATE UestDBTDECert TO FILE = 'D:\SQL2012\UestDBTDECert'

WITH PRIVATE KEY ( FILE = 'D:\SQL2012\UestDBTDECertPrivateKey',

ENCRYPTIONBY PASSWORD = 'RISiS9Ul%CByEk6');GO

--Must backup private key as well

View Code

代码1 创建主密钥、证书并备份主密钥、证书

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

USEUestDB;GO

--Create the database encryption key for TDE. Analogous to database master key for data encryption.

CREATE DATABASE ENCRYPTION KEY

WITH ALGORITHM =TRIPLE_DES_3KEY

ENCRYPTIONBYSERVER CERTIFICATE UestDBTDECert;GO

--Get a warning about backing up the key, if you haven't already--...take the advice and back it up!

--Now need to turn TDE on.

ALTER DATABASE UestDB SET ENCRYPTION ON;GO

View Code

代码2 创建数据库加密密钥并启用TDE

接下来模拟证书和主库密钥丢失的情况

->1 del master_key + certificate

->2 create master_key + certificate

->3 create master_key + restore certificate

->4 restore master_key + certificate

首先备份UestDB数据库

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

--backup test database

BACKUP DATABASEUestDBTO DISK = N'D:\SQL2012\MSSQL11.SQL12\MSSQL\Backup\UestDB.bak'

WITH NOFORMAT, INIT, NAME = N'UestDB Full Database Backup',

SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS= 10;GO

View Code

代码3 备份数据库

1、删除证书、删除master_key+重启数据库服务

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

USEmasterGO

--Oops! We lost the certificate and don't have a copy!--Or, going to restore the database to another server instance

DROPCERTIFICATE UestDBTDECert;GO

DROP MASTER KEY;GO

View Code

证书'UestDBTDECert'是由主密钥加密的,因此需先删除证书才能删除master_key。重启数据库服务后在对象资源管理器下展开UestDB数据报错:

ae8f32953850578c7c135179e303c874.png

0c9445172f5cc5c52e1db1d6852d4aa7.png

图1 UestDB不能访问

查看ERRORLOG日志如下所示:

1c9ee583127b3e7e7be67b17551f6caf.png

图2 删除证书、删除master_key

2、用源代码重新创建master_key、创建证书+重启数据库服务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值