证书和私钥首先创建密钥保存目录,然后在查询分析器中执行如下命令,备份证书、私钥和master数据库的主密钥。
USEmasterGO
打开数据库连接MASTERKEYOPENMASTERKEYDECRYPTIONBYPASSWORDkgc123
备份master系统数据库的CERTIFICATEBACKUPCERTIFICATEmaster_server_certficateTOFILEDSQL2012_TDE_Keysmaster_server_certficatecerWITHPRIVATEKEYFILEDSQL2012_TDE_Keysmaster_server_certficatepvkENCRYPTIONBYPASSWORDkgc123
关闭数据库连接MASTERKEYCLOSEMASTERKEYGO
USEmasterGO
打开数据库连接MASTERKEYOPENMASTERKEYDECRYPTIONBYPASSWORDkgc123
备份一下数据库主密钥MASTERKEYBACKUPMASTERKEYTOFILEDSQL2012_TDE_KeysmastercerENCRYPTIONBYPASSWORDkgc123
关闭数据库连接MASTERKEYCLOSEMASTERKEYGO
执行备份完成后,会在密钥保存目录看到如图663所示三个文件:
f图663备份证书、私钥和主密钥文件
4执行TDE加密在查询分析器中,执行如下命令对KGCDB数据库开启TDE加密。关于关闭TDE加密,详见664章节。
USEKGCDBGO
生产环境下,设置成单用户模式在运行加密ALTERDATABASEKGCDBSETSINGLE_USERWITHROLLBACKIMMEDIATEGO
开启TDE加密ALTERDATABASEKGCDBSETENCRYPTIONONGO
设置多用户模式访问ALTERDATABASEKGCDBSETMULTI_USERWITHROLLBACKIMMEDIATEGO
再次开启TDE加密ALTERDATABASEKGCDBSETENCRYPTIONONGO
完成TDE加密后,执行如下命令,来查看加密结果。
查看KGCDB数据库加密结果SELECTDB_NAMEdatabase_ide
cryptio
_stateFROMsysdm_database_e
cryptio
_keys
执行后结果如图664所示。
f图664KGCDB数据库加密状态执行查询后显示,e
cryptio
_state值为3,代表已执行TDE加密。e
cryptio
_state值得含义,如下:0Nodatabasee
cryptio
keyprese
t
oe
cryptio
不存在数据库加密密钥,不加密1U
e
crypted未加密2E
cryptio
i
progress(正在加密)3E
crypted(已加密)4Keycha
gei
progress(正在进行的关键更改)5Decryptio
i
progress(正在解密)6Protectio
cha
gei
progress正在进行保护更改:正在更改加密数据库加密密钥的证书或非对称密钥
5备份数据库为完成后面得测试,先备份数据库。在服务器上创建一个备份文件存放目录,本案例是DSQL2012_Backup。然后执行如下命令。
USEmasterGO
打开数据库连接MASTERKEYOPENMASTERKEYDECRYPTIONBYPASSWORDNkgc123
BACKUPDATABASEKGCDBTODISKDSQL2012_Backupkgcdbbak
关闭数据库连接MASTERKEYCLOSEMASTERKEY
备份完成后,在DSQL2012_Backup目录下,可以看到kgcdbbak备份文件。
122还原数据库首先模拟数据库备份文件被人非法获得,直接还原测试,提示异常。找不到服务器证书。这说明数据库的TDEr