这篇文章是4月9日网络研讨会——MySQL安全性解决方案的图文版内容。

主要包括三方面的内容:

  1. 面临安全性的挑战。

  2. MySQL的安全功能。

  3. 部分功能演示。

随着数据爆发式的增长,安全性已经是用户头等重要的工作,数据已经成为其最重要的资产。


这一页包含了数据库所面临的各个方面的风险:

缺乏配置:指的是数据库的安全相关配置没有进行重新设定,使用默认值或者不当的配置。解决方法为更改默认的配置和控制。

特权账户:数据库里面存在多个特权账户,该账户权限过多,误操作会照成巨大影响。解决方法为制定权限策略,权限最小化原则,为用户匹配适当的权限。

访问控制薄弱:没有设置专用的管理账户,账户属性模糊,执行查询工作的同时,有执行管理工作。解决方法为设置专用的管理账户,为管理账户和应用账户设置不同的权限。

认证薄弱:登录账户的密码简单,长时间不更换等等。解决方法为强制实施“强密码”,并定期进行轮换。

审计薄弱:不符合规章制度的要求,没有设置审计或相关的审计策略。解决方法为,按照合规要求和审计策略配置相关审计记录。

缺少加密:在涉及数据、备份及网络传输等环节缺乏加密,导致数据泄露。解决方法为在数据传输的各个环节使用加密。

正确的凭据和密钥管理:加密使用的凭据和密钥没有按照要求进行保管,会致使密钥丢失或者不可用。解决方法为使用专门的密钥保管工具存放密钥和凭据。

备份不安全:备份没有使用加密等措施,导致备份数据泄露。解决方法为对备份数据进行加密。

无监控:对系统不采取监控措施,完全等待事后发现。解决方法为采用正确的监控系统对安全、用户、对象等等进行监控。

应用程序编码薄弱:应用程序编码经验不足,不对查询语句进行严格限制,导致意外的查询语句进入数据库。解决方法为使用防火墙拦截白名单之外的查询语句。

除了数据库的安全风险之外,持有数据的组织需要对应不断加强的数据信息保护法律法规的要求。全球范围已经对数据保护,尤其是个人数据保护增强了法规的要求,例如,2018年底推出的GDRP,中国的网络信息安全法近年来不断补充安全规范和指南,人大常委会于2019年12月宣布,制定有关个人数据保护和安全的立法是下一个立法年度的优先事项,说明不远的将来,中国即将出台相关法律。

这一页显示的是目前国际上普遍存在的合规要求,如果有国际业务的组织请留意相关法规要求,避免违规操作。

上面的内容是数据库面临的挑战与合规要求,那么应该如何确保数据库的安全呢?

通过评估、预防、检测及恢复四个方面来确保数据库的安全性。这是一个通用的方法论。评估意味着需要定位风险和漏洞,确保必要的安全控件都已经正确安装。预防意味着使用加密算法、用户控制、访问控制等手段尽可能的防止***。检测意味着使用审计、监控、警告灯手段对仍然可能存在的数据侵入进行检测。恢复意味着万一出现了安全事件,也可以保证服务不会中断。并且需要对安全事件进行论证、事后验证已解决安全漏洞。

针对这个方法论,MySQL提供了下面的安全性功能。

下图是企业版MySQL安全性架构整体一览:

接下来将对这个架构里面的详细内容逐一介绍。

从MySQL8.0开始社区版与企业版同样使用OpenSSL,之前由于许可的问题,社区版无法使用OpenSSL,这个问题在8.0得以解决(8.0.18全部版本开始使用OpenSSL)。使用OpenSSL可以支持TLS从1.0到1.3版本的各种协议。并且基于Facebook的贡献,SLL的动态选项可以支持不重启服务器进行更新证书。


8.0使用OpenSSL的优势包括:使用经过优化的OpenSSL库,支持在不升级的情况下对其打补丁。另外,使用基于OpenSSL的FIPS对象模块来提供机密性、整合性和信息摘要服务来满足FIPS(美国联邦信息处理标准)的要求。

TDE加密源于5.7版本,5.7版本只适用于表空间文件的加密,8.0将其扩展到日志的加密。下面放一个关于TDE功能的演示:

点我看视频


8.0增加了一个管理专用的端口,有了这个端口以后,DBA可以不受最大连接的限制,登录到服务器对连接进行管理。

增加了一组system_user权限,主要目的是为了将权限更细化,防止一般用户拥有过度的权限。拥有该权限的用户复制管理以下的需求:

8.0.16增加了撤销部分权限的功能,该功能可以更加精细管理MySQL的权限。

角色功能可以改善MySQL的使用权控制:

从MySQL8.0开始,密码默认使用SHA2 Caching,使用它连接更加迅速。

并且,为了解决更改密码与推送到应用层同步的问题,增加了一个双重密码功能。

MySQL的密码策略可以包含如下内容:

接下来再介绍一下Keyring API

包括企业版TDE功能在内,都是基于这个API实现的,使用这个API可以将密钥保管在主机或者专用的密钥保管库里面。最新的Keyring API支持HashiCop Vault


使用Keyring可以对密钥进行管理,适用于如下场景:

使用Keyring可以对存于磁盘的数据进行加密,表空间,日志等等,可以将密钥以加密文件形式保存(企业版)或使用专用的密钥保管库。

数据屏蔽和反识别功能,可以对敏感数据进行屏蔽和去识别,脱去敏感信息,符合法律法规的要求。

除了可以对敏感数据进行屏蔽,还可以生成随机数据供测试使用,并且随机数据支持使用自定义的字典。

MySQL企业版的审计功能,支持开箱即用,记录连接、登录和查询日志等相关内容。

MySQL企业版认证功能可以集中化认证,整合管理基础架构。

支持LDAP认证。

最后介绍一下,MySQL的防火墙。防火墙通过白名单的形式,将为记录在名单内的语句阻挡在服务器之外,可以防止SQL注入***。并且可以作为一个***检测系统使用,检测SQL并发出警告。

下面放上一个关于防火墙的演示:

点我看视频

MySQL企业版和安全相关的全部功能如上图所示,感兴趣的可以通过https://edelivery.oracle.com/下载试用版试用。

©著作权归作者所有:来自51CTO博客作者mb5ff97fc6948e0的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 生产系统数据丢失恢复案例
  2. 2021-2-28
  3. PHP实战: 实现数据的分页显示和编辑,删除功能.(无刷新,基于ajax)
  4. FreeRTOS例程3-串口中断接收不定长的数据与二值信号量的使用
  5. 嵌入式开发,各类存储方式知多少?
  6. FreeRTOS例程4-串口DMA收发不定长数据
  7. 从IIC实测波形入手,搞懂IIC通信
  8. C语言打印数据的二进制格式-原理解析与编程实现
  9. 大家好我是破壳数据技术研究者,多多指教

随机推荐

  1. android MK文件简介
  2. android:layout_gravity和android:gravit
  3. [Android] 基于 Linux 命令行构建 Androi
  4. Android 4层框架
  5. Android(安卓)打造RxBus2.x的全面详解
  6. 【Monkey】Android(安卓)Monkey autotest
  7. android中的文本框
  8. android:padding和android:margin的区别
  9. Handler&Looper
  10. Android 创建服务器 NanoHttpd