MSSQL - 最佳实践 - 使用SSL加密连接

author: 风移

摘要

在SQL Server安全系列专题月报分享中,往期我们已经陆续分享了:如何使用对称密钥实现SQL Server列加密技术使用非对称密钥实现SQL Server列加密使用混合密钥实现SQL Server列加密技术列加密技术带来的查询性能问题以及相应解决方案行级别安全解决方案SQL Server 2016 dynamic data masking实现隐私数据列打码技术使用证书做数据库备份加密SQL Server Always Encrypted这八篇文章,直接点击以上文章前往查看详情。本期月报我们分享SQL Server SSL证书连接加密技术,实现网络上传输层连接加密。

问题引入

在SQL Server关系型数据库中,我们可以使用透明数据加密(TDE)、行级别加密(Row-level Security)、数据打码(Dynamic Data Masking)和备份加密(Backup Encryption)等技术来实现数据库引擎层的安全。但是,在网络传输层,客户端和服务端之前默认没有数据加密传输保护。因此,为了提高链路安全性,我们可以启用SSL(Secure Sockets Layer)加密,SSL在传输层对网络连接进行加密,能提升数据通道的安全性,但同时会增加网络连接响应时间和CPU开销。

准备工作

为了方便观察,我们使用Microsoft Network Monitor 3.4(以下简称MNM)工具来观察网络传输层事件,如果您已经安装MNM,请跳过该准备工作部分。
首先,我们从微软官网下载MNM,根据需要下载对应的版本,我们这里下载64 bit版本,NM34_x64.exe。
接下来,安装MNM,直接执行NM34_x64.exe,然后按照向导完成安装。
最后,重启OS。

启用SSL证书之前

在启用SSL证书加密之前,客户端和SQL Server服务端的网络传输层默认没有加密保护的,我们可以通过如下步骤验证。
 创建测试表
 新建MNM抓取
 连接查询测试
 MNM中检查
 动态视图查看加密状态

创建测试表

为了测试方便,我们首先创建测试表CustomerInfo,存入三个客户敏感信息,包含客户名称和客户电话号码。

USE [TestDb]GOIF OBJECT_ID('dbo.CustomerInfo', 'U') IS NOT NULLDROP TABLE dbo.CustomerInfoCREATE TABLE dbo.CustomerInfo(CustomerId        INT IDENTITY(10000,1)    NOT NULL PRIMARY KEY,CustomerName    VARCHAR(100)            NOT NULL,CustomerPhone    CHAR(11)                NOT NULL);-- Init TableINSERT INTO dbo.CustomerInfo VALUES ('CustomerA','13402872514'),('CustomerB','13880674722'),('CustomerC','13487759293')GO

新建MNM抓取

打开MNM,点击New Capture,然后Start,启动网络层时间抓取。

连接查询测试

从客户端,连接上对应的SQL Server,执行下面的查询语句,以便观察MNM抓取情况。

USE [TestDb]GOSELECT * FROM dbo.CustomerInfo WITH(NOLOCK)

执行结果如下:

MNM中检查

我们仔细观察MNM中的事件,发现在客户机和SQL Server服务端的网络传输层,使用的明文传输,如下截图:

从图中右下角红色方框中,我们可以清清楚楚的看到了这三个客户的姓名和对应的手机号码,我们使用MNM看到数据在网络传输层以明文传送,并未做任何加密,可能会存在数据被窃听的风险。

动态视图查看连接状态

当然,您也可以从SQL Server的连接动态视图看出,连接并未加密:

从MNM和SQL Server动态视图我们可以得出相同的结论是:客户端和SQL Server服务端数据在网络传输层默认以明文传送,并未加密传输,可能会存在数据被窃听的风险。那么,我们可以启动SSL证书来加密数据传输,以达到更为安全的目的。

启用SSL证书

启动SSL证书,分为以下几个部分:
 证书申请
 强制所有连接使用SSL
 加密特定客户端连接

证书申请

Start –> 输入:mmc.exe -> File -> Add/Remove Snap-ins -> Certificate -> add -> Computer account -> Next -> Local Computer -> Finish -> OK

展开Certificates -> 右键 Personal -> 选择 All Tasks -> 选择Request New Certificate -> 点击 Next -> 选中 Computer -> 点击Enroll -> 点击Finish。
右键点击对应证书 -> 选中All Tasks -> 选择Manage Private Keys… -> 授予 read 权限给本地账号NT ServiceMSSQLSERVER。

强制所有连接使用SSL

强制所有连接加密

在SQL Server服务器上,Start -> Run -> sqlservermanager13.msc -> 右键点击Protocols for MSSQLSERVER -> Flags中将Force Encryption设置为Yes -> Certificate选项卡中选择证书 -> OK

重启SQL Service

强制所有连接设置完毕后,如果想要立即生效,请重启SQL Service。 
注意:
这里需要特别注意,如果是目前线上正常运行的应用,请慎重测试后,打开强制所有连接使用SSL。

加密特定客户端连接

当然,您也可以不用打开强制所有的连接使用SSL,转而使用加密特定的客户端连接,这里以SSMS连接工具为例。

客户端导入证书

Start -> Run -> 输入:certmgr.msc -> 右键选择Trusted Root Certification Authorities -> All Tasks -> Import

选择SQL Server服务端生成的证书文件

Next -> Finish -> OK

SSMS启用加密连接

在SSMS连接服务端界面 -> 选择Options

然后选择Encrypt connection

然后,参照“连接查询测试”中方法进行连接测试。同样在连接管理视图中查看,我们可以看到连接已经加密:

至此,使用SSL证书加密加密客户端和SQL Server服务端连接的实验成功。

注意事项

由于使用了SSL证书来加密客户端和SQL Server服务端连接,在提升数据通信的安全性同时,加密解密操作也会导致网络连接响应时间增加和CPU使用率上升,对业务系统有一定的性能影响。因此,建议您仅在外网链路有加密需求的时候启用SSL加密,内网链路相对较安全,一般无需对链路加密。

最后总结

本期月报我们分享了如何启用SSL证书,来加密客户端和SQL Server服务端连接,提升网络传输层通信安全,使得数据在传输过程中被加密后,以密文传送,最大限度保证了链路安全。

如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:yqgroup@service.aliyun.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
(0)

相关推荐

  • NGINX 配置本地HTTPS(双向认证)

    通常情况下我们只需要实现服务端认证就行,因为浏览器内置了一些受信任的证书颁发机构(CA),服务器端只需要拿到这些机构颁发的证书并配置好,浏览器会自己校验证书的可用性并通过 SSL 进行通讯加密. 但特 ...

  • MsSQL使用加密连接SSL/TLS

    说明 应用程序通过未加密的通道与数据库服务器通信, 这可能会造成重大的安全风险.在这种情况下, 攻击者可以修改用户输入的数据, 甚至对数据库服务器执行任意 SQL 命令. 例如,当您使用以下连接字符串 ...

  • 7种人力资源最佳实践

    什么是人力资源最佳实践? 最佳实践是一套通用的人力资源管理流程和行动.在人力资源管理研究中,有两种关于如何管理人员的思想流派:第一个是最合适的,第二个是最佳实践. 最合适的观点指出,为了增加价值,人力 ...

  • 培训的定义、作用和最佳实践

    一.什么是人力资源开发? 人力资源开发一词最早是在1969年提出的,指的是劳动力的培训,教育和发展.它旨在弥合学校教育和工作场所要求之间的差距. 在早期,HRD会进行严格的动手培训,重点是掌握硬技能. ...

  • 从最佳实践的焦虑中解脱出来

    几乎每天都会出现关于最佳实践的头条新闻.例如: 1.参加一个会议:"XX公司会议创新管理提高效率,我们现在没有." 2.行业文章:"人力资源部即将消失." 3. ...

  • 中国电信MEC最佳实践白皮书

    大数据.云计算.AI 等新一代信息技术的高速发展,在为新兴互联网行业提供强劲驱动之外,也在引领传统行业实施数字化.智能化转型,并催生出智能制造.智慧金融等一系列全新智能产业生态.在中国电信 MEC 平 ...

  • go-zero解读与最佳实践(上)

    本文有『Go开源说』第三期 go-zero 直播内容修改整理而成,视频内容较长,拆分成上下篇,本文内容有所删减和重构. 大家好,很高兴来到"GO开源说" 跟大家分享开源项目背后的一 ...

  • 160页PPT学习华为集成产品研发最佳实践之IPD(附下载)

    华为在整个企业内部改革中最重要的两个项目一个是ISC(集成供应链),另外一个就是IPD.用任正非的话讲,这两项改革关系到华为的生死存亡.其中IPD的项目是先行项目也是重点. 今天我们学习下华为的IPD ...

  • 远程软件工程师的10个最佳实践

    从表面上看,当考虑软件工程师研发效率的时候,我们可能会想到时间管理.沟通和任务完成的有效性.问题是完成任务或者有一个预期的时间表并不一定等同于生产力.对于远程工作的软件工程师而言,正面临着常规思考.责 ...

  • 雇主品牌最佳实践——UPS公益项目赋能雇主品牌创新实践

    能与年轻人产生共鸣的雇主品牌,一定不只有认知上的肯定,还有情感上的喜欢.当争夺优秀年轻人才取得竞争优势成为一种市场共识时,一个有态度的雇主品牌,如何运用差异化和情感上的打法,与同行同业形成区隔,成为了 ...