我熟悉SQL Server的数据库加密选项(如TDE ),并确保备份/备份位置是加密和安全的。
我正在为一个新客户端做一些工作,他要求我详细说明端到端加密的选项,换句话说,以确保从数据库服务器发送到应用服务器的数据在传输过程中保持加密,并且不能被任何类型的数据包监视所截获(或者更确切地说是解释)。
我知道如何使用SSL证书加密到数据库的连接,尽管我很少配置它。我真的不知道这是否是端到端加密的适当选项,因为这肯定不能单独使用Server来配置?
在我看来,必须在应用程序端,或者在网络路由上,像这样实现端到端加密?
我对网络安全的了解基本上仅限于防火墙规则和一般路由,因此我正在寻找可供我进一步研究或付诸实施的选项。
我担心这个问题会被关闭,因为它是基于意见的,所以我实际上是在SQL Server本身(或在DBA的职权范围内)内请求可靠的选项来配置端到端的数据加密。
发布于 2017-08-15 17:57:51
SQL server中始终加密的特性,这是一种客户端加密技术,旨在提供端到端加密,这意味着它将对客户端应用程序的驱动程序中的数据进行加密。这意味着数据将在客户端和SQL服务器之间的网络上加密,在SQL服务器的内存中加密,并在磁盘上加密。如果实现正确,它还可以保护数据不受在SQL server计算机上获得管理权限的入侵者(&云管理员,如果您的数据在云中)。
粗略地说,总是加密提供了以下安全保证,纯文本数据只能对访问ColumnMasterKey的实体可见(证书/AKV/基于HSM的密钥,等等)。
要详细说明,请考虑以下场景。
考虑两台机器:
考虑两个用户
考虑运行在MachineA上的Server具有数据库数据库和表t。
我们的目标是保护一个属于表t的列,比如ssnCol,这样只有userT才能看到明文中的ssnCol。
可以使用以下步骤实现上述目标。
Encrypt columns (configure Always Encrypted)部分中提到的步骤加密表t中的ssnCol当userT以上述方式加密ssnCol时,将生成两个密钥。
因此,为了解密ssnCol,需要CEK,但是要解密CEK,则需要CMK。
由于CMK位于machineT的中,只有userT才能访问CMK、解密CEK和解密ssnCol。
userA是machineA上的管理员,也是Server上的SysAdmin,但由于他/她无法访问CMK,userA无法以明文形式访问ssnCol。您可以使用MachineA中的SSMS、以userA登录和查询ssnCol来验证这一点。
如果你有额外的问题,请把它们放在评论部分,我可以回答它们。
发布于 2017-08-04 13:07:03
您是正确的;SSL是支持对运行中的数据进行加密的官方方法。
Microsoft SQL Server可以使用安全套接字层(SSL)加密在Server实例和客户端应用程序之间通过网络传输的数据。SSL加密在协议层(technet )内执行。
总是加密的更深一点。它在客户端应用程序传输数据之前对其进行加密,并且从不以任何未加密的方式存储数据。因此,通过始终加密的数据在传输和休息时是“安全的”(存储为加密数据),但是数据包本身并不是在网络级别上加密的。(Docs女士)
因此,如果您希望阻止DBA和/或报告作者查看明文数据(例如信用卡号或社保号),则始终加密是获得该级别安全性的可能工具。
但是,如果您不希望数据包监视工具查看数据库用户名和密码,也不希望看到从DB移动到应用程序的明文数据,那么您必须使用SSL。
https://dba.stackexchange.com/questions/181830
复制相似问题