了解 MS SQL Server 加密和备份

Roy*_*mir 13 security sql-server

所以我在聊天询问SQL Server 备份文件的安全性。

有人告诉我,如果攻击者可以访问未加密的 .bak 文件,他们就可以访问数据。

所以让我们看看这个场景:

OPEN SYMMETRIC KEY MySymetricKey DECRYPTION
BY CERTIFICATE MyCertificate
Run Code Online (Sandbox Code Playgroud)

注意 - 这里没有密码。

然后我们通过以下方式加密我们的表:

UPDATE tbl1
 SET namePAss = ENCRYPTBYKEY(KEY_GUID('MySymetricKey'),name)
GO
Run Code Online (Sandbox Code Playgroud)

现在假设黑客得到了我的bak文件。为了查看数据(在他自己的计算机和 sql-server 中),他所要做的就是:

SELECT  
       convert( NVARCHAR(max), decryptbykey(namePAss)) 
FROM tbl1
Run Code Online (Sandbox Code Playgroud)

他还能访问数据吗?

Rem*_*anu 9

OPEN SYMMETRIC KEY MySymetricKey DECRYPTION`  
 BY CERTIFICATE MyCertificate`
Run Code Online (Sandbox Code Playgroud)

注意 - 这里没有密码。

就在这里。你MyCertificate 以某种方式打开了证书,不是吗?可能有几种情况,但其中任何一种情况都以密码结束:

  • 您使用密码打开了证书(显然,在这种情况下有密码)
  • 证书使用数据库主密钥加密,并且您使用 DBMK 密码打开了数据库主密钥 -> 这是密码
  • 证书使用数据库主密钥加密,DBMK 使用服务主密钥加密。服务主密钥依次使用服务帐户DPAPI存储密钥打开,该密钥使用帐户密码->加密,即密码

在最后一个密钥中似乎没有密码,但有一个:服务帐户密码。备份在不同主机上恢复时,将缺少数据库主密钥的服务主密钥加密,这将使数据无法访问。

请参阅加密层次结构

  • @RoyiNamir 见 Remus 的最后一个要点。您没有_指定_密码,但证书受到保护,在这种情况下最终由服务帐户密码保护。 (3认同)