首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server端到端加密选项

Server端到端加密选项
EN

Database Administration用户
提问于 2017-07-26 09:15:28
回答 3查看 6.2K关注 0票数 6

我熟悉SQL Server的数据库加密选项(如TDE ),并确保备份/备份位置是加密和安全的。

我正在为一个新客户端做一些工作,他要求我详细说明端到端加密的选项,换句话说,以确保从数据库服务器发送到应用服务器的数据在传输过程中保持加密,并且不能被任何类型的数据包监视所截获(或者更确切地说是解释)。

我知道如何使用SSL证书加密到数据库的连接,尽管我很少配置它。我真的不知道这是否是端到端加密的适当选项,因为这肯定不能单独使用Server来配置?

在我看来,必须在应用程序端,或者在网络路由上,像这样实现端到端加密?

我对网络安全的了解基本上仅限于防火墙规则和一般路由,因此我正在寻找可供我进一步研究或付诸实施的选项。

我担心这个问题会被关闭,因为它是基于意见的,所以我实际上是在SQL Server本身(或在DBA的职权范围内)内请求可靠的选项来配置端到端的数据加密。

EN

回答 3

Database Administration用户

回答已采纳

发布于 2017-08-15 17:57:51

SQL server中始终加密的特性,这是一种客户端加密技术,旨在提供端到端加密,这意味着它将对客户端应用程序的驱动程序中的数据进行加密。这意味着数据将在客户端和SQL服务器之间的网络上加密,在SQL服务器的内存中加密,并在磁盘上加密。如果实现正确,它还可以保护数据不受在SQL server计算机上获得管理权限的入侵者(&云管理员,如果您的数据在云中)。

粗略地说,总是加密提供了以下安全保证,纯文本数据只能对访问ColumnMasterKey的实体可见(证书/AKV/基于HSM的密钥,等等)。

要详细说明,请考虑以下场景。

考虑两台机器:

  • MachineA:运行Server的机器
  • MachineT:客户端机器。

考虑两个用户

  • UserA (从技术上讲,这可以是一组用户组,但为了简单起见,我将考虑一个单一用户的场景):他是MachineA上的管理员,管理着server,是server上的SysAdmin。但是,userA没有对MachineT的任何访问,UserA不应该能够解密存储在机器A上的Server中的任何加密数据(加密数据,在此答案的上下文中是使用Server的始终加密功能加密的数据)。
  • UserT (从技术上讲,这可以是一组用户组,但为了简单起见,我将考虑一个单一用户的场景):是一个受信任的用户,可以访问MachineT,可以访问数据库数据库中的所有数据,数据库数据库位于MachineA上的Server中。而且,由于userT是可信的,所以他/她应该能够解密加密的数据。

考虑运行在MachineA上的Server具有数据库数据库和表t。

我们的目标是保护一个属于表t的列,比如ssnCol,这样只有userT才能看到明文中的ssnCol。

可以使用以下步骤实现上述目标。

  • UserT登录到MachineT。
  • UserT在MachineT中打开SSMS。
  • UserT在MachineA上连接到Server
  • UserT使用这篇文章Encrypt columns (configure Always Encrypted)部分中提到的步骤加密表t中的ssnCol
  • 在此步骤之后,将对列ssnCol进行加密。

当userT以上述方式加密ssnCol时,将生成两个密钥。

  • CMK:即列主密钥是用来加密CEK/s的密钥,该密钥存储在MachineT的windows证书存储区中。
  • CEK: CEK列加密密钥是用于加密ssnCol的密钥,此密钥以加密形式存储在MachineA上的Server中,并且在明文中不持久化。

因此,为了解密ssnCol,需要CEK,但是要解密CEK,则需要CMK。

由于CMK位于machineT的中,只有userT才能访问CMK、解密CEK和解密ssnCol。

userA是machineA上的管理员,也是Server上的SysAdmin,但由于他/她无法访问CMK,userA无法以明文形式访问ssnCol。您可以使用MachineA中的SSMS、以userA登录和查询ssnCol来验证这一点。

如果你有额外的问题,请把它们放在评论部分,我可以回答它们。

票数 5
EN

Database Administration用户

发布于 2017-08-04 13:07:03

您是正确的;SSL是支持对运行中的数据进行加密的官方方法。

Microsoft SQL Server可以使用安全套接字层(SSL)加密在Server实例和客户端应用程序之间通过网络传输的数据。SSL加密在协议层(technet )内执行。

总是加密的更深一点。它在客户端应用程序传输数据之前对其进行加密,并且从不以任何未加密的方式存储数据。因此,通过始终加密的数据在传输和休息时是“安全的”(存储为加密数据),但是数据包本身并不是在网络级别上加密的。(Docs女士)

因此,如果您希望阻止DBA和/或报告作者查看明文数据(例如信用卡号或社保号),则始终加密是获得该级别安全性的可能工具。

但是,如果您不希望数据包监视工具查看数据库用户名和密码,也不希望看到从DB移动到应用程序的明文数据,那么您必须使用SSL。

票数 4
EN

Database Administration用户

发布于 2017-07-26 12:34:20

TDE (从2008年开始)是加密的静止状态,这意味着谁试图恢复您的数据库在没有适当的安全管理,这是不可能的。尽管您仍然可以使用第三方工具嗅探运行中的数据,但这是使用SSL安全性IPSEC解决的另一个安全问题。

在介绍SQL2016时,启用了总是加密的,这是您可能需要考虑的事情。它基本上是加密静止和运行中的数据。

票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/181830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档