我正在帮助一位朋友在 SQL Server 2008 R2 标准版上设置数据加密。在最初的研究中,我认为我可以使用 TDE,但没有意识到它仅适用于 SQL Server 的 Enterprise 或 DataCenter 版本。在进一步研究 SQL Server 2008 R2功能后,我发现它确实允许“数据加密和密钥管理”,但我不确定它的含义或如何实现它。
数据加密最有效、成本最低的方法是什么?我应该通过 SQL Server 做某事还是只使用第三方工具来加密数据库和备份所在的整个卷?此外,如果有人能指出一种使用标准版功能的“数据加密”的方法,我将不胜感激。每次我在 sql server 上搜索加密时,我都会不断地思考如何使用 TDE,而在当前情况下,对于企业规模来说购买企业版是不可行的。
加密原因 - HIPAA 合规性。如果可以访问文件系统以进行数据库或备份,则数据将被加密并且无法使用。这可能包括对机器的物理访问或通过本地管理员访问。
由于您使用的是标准版,因此您不能使用 TDE。所以其他选择是
在实例/数据库级别使用加密密钥:
SQL Server 有两种密钥:对称密钥和非对称密钥。对称密钥使用相同的密码来加密和解密数据。非对称密钥使用一个密码来加密数据(称为公钥)和另一个密码来解密数据(称为私钥)。
SQL Server 有两个主要的密钥应用程序:在 SQL Server 实例上生成并用于 SQL Server 实例的服务主密钥 (SMK),以及用于数据库的数据库主密钥 (DMK)。
此外,您可以通过创建 MASTER KEY ENCRYPTION 以及 CREATE CERTIFICATE 然后 CREATE SYMMETRIC KEY 在列级别进行加密。
加密数据列中描述了如何做到这一点的示例
参考:SQL Server 和数据库加密密钥(数据库引擎)
在驱动器级别:
使用 BitLocker,因为它是 Windows Server 2008 R2 可用的驱动器加密数据保护功能。请参阅:BitLocker 驱动器加密概述有许多开源或第三方软件可以完成相同的工作,但需要额外付费。
注意:最重要的一点是始终备份您的加密密钥。
您可以使用第三方软件,例如 Redgate 的 sql 备份,它允许您使用密码加密备份。
根据您需要加密的级别,将确定是否值得升级到企业版。您必须评估本机 TDE 加密、加密密钥和证书、开源和磁盘加密。
老问题,我理解,但自 SQL Server 2016 SP1 以来,除了上述答案之外,还有一个答案。
SQL Server 2016 引入了“始终加密”以及其他安全功能,如动态数据屏蔽和行级安全性。这些是最初仅在 Enterprise Edition 中发布的功能。
它们现在作为任何 SQL Server 2016 SKU(企业版、标准版甚至 Express)中可用的功能存在。
值得一试并立即查看升级过程。您可以在 Microsoft关于 SQL Server 2016 的 SP1的帖子中阅读更多相关信息。
首先,问一个问题“我为什么要加密这个数据库?”
如果答案是“对数据库管理员隐藏数据”,那么任何类型的 SQL Server 加密都不是答案。在这种情况下,客户端应用程序应该加密数据并将密文存储在数据库中。这样,数据库服务器和数据库管理员(也包括网络管理员)都不会看到未加密的数据或加密密钥。
在将客户端上的数据发送到服务器之前对其进行加密意味着数据库文件和数据库备份都已加密,可以防止有人窃取备份磁带或硬盘,还可以防止恶意或受损的管理员帐户。
请参阅 Laurentiu Cristofor 的博客文章谁需要加密?SQL Server 安全博客上的 SQL Server 2008和HIPAA 合规性
最初留下的答案是作者对问题的编辑:
使用的解决方案
在向负责该项目的系统管理员提供不同的选项后,决定使用 BitLocker 驱动器加密。我在加密过程中停止了 SQL 实例,加密完成后重新启动它没有问题。