数据库所保存的是企业最为核心的资产,所以对于企业而言,必须要将数据库的安全做到位。那么,如何保证云上数据库的安全呢?在本文中,阿里云数据库高级产品专家崔京(花名:乙休)就为大家带来了云数据库的“全链路安全”。
在大家心中,数据库安全到底指什么呢?其实数据库安全可以分为几个方面理解,首先是数据连续可用,保证业务能够持续对外提供服务;二是数据可靠,不会丢失,保证数据的完整性,无论是磁盘故障还是硬件故障还是机房失火,都需要保证数据的完整性;三是需要保证数据隐私性,保证数据不泄露。本次重点则围绕数据隐私不泄露的方面分享。
数据库真的“安全”吗?
回顾近期发生的数据安全事件,首先是有一千多万的快递信息泄露了,上面包括了收货人和发货人的信息。其次,是很多人的生物识别信息泄露,导致一些包括指纹在内的信息泄露。还有一个事件就是某酒店的入住信息泄露。近期还有一种攻击行为是基于数据库本身的安全漏洞进行扫描,进行数据加密和勒索,这种方式是更为严重的攻击大范围攻击手段。
其实对于数据安全而言,最大的风险就是我们不知道风险在哪里。有人觉得自己的数据存在自己的线下机房里就是安全的,但是根据报道和统计,大部分数据泄露都来源于线下。这是因为线下往往缺乏有效的安全管理和技术手段。据不完全统计,超过7成的自建数据库存在风险,比如弱口令或者没有防火墙。
那么在阿里云上,如何对待数据安全呢?首先,阿里云认为数据隐私是第一原则,这一原则根植于阿里云飞天操作系统内核,在这内核之上产生的所有引擎、服务、平台以及产品都必须遵循数据安全和隐私第一这个原则,也就是“Security By Design”的实现,也称之为“未雨绸缪”。同样,外界环境也是充满着不确定性的,那么为了保证数据库能够在不确定的 环境中能够对外提供服务,那么就需要有“居安思危”的思想,这也是阿里云的整体思想。
阿里云的全链路解决方案
在2011年左右,阿里云数据库推出了一款商用数据库——MySQL 5.1版本,从那时到现在已经过去了7年时间,这7年间阿里云数据库形成了一套属于自己的安全解决方案,称之为全链路安全方案。数据库其实是一个云上的资源服务,要想保护好一个数据库,首先需要从控制层面对于访问这件事情进行控制。第二点就是需要审计能力,需要知道谁在什么时间和地点以什么形式访问了数据库。第三点就是加密能力,包括链路、传输以及存储加密。之后一点就是对于风险的预警能力,也就是对于紧急事件的应急处理能力,这就是全链路安全的概况。
对于数据库的访问控制而言,首先需要知道访问路径。其实访问路径无外乎两种,一种是标准的SQL语句的数据链路,另外一种就是通过API,因为云上数据库不同于其他数据库,数据库本身作为云上的资源供用户使用。对于资源本身进行管理其实形成了API的标准,通过API能够创建、删除以及恢复数据库等,这样的方式等同于直接在控制台做操作,也等同于通过一些SDK或者控制台以及CLI进行操作。
具体而言,如何对于这两种访问路径进行控制呢?当我们需要访问云上中心数据的时候需要一层层地认证、授权以及通过每一层的防护网,才能达到所需的数据。数据链路最外层是阿里云大安全所提供的云盾能力,第二层就是金融云的解决方案,提供了符合金融行业监管的标准。第三层就是提供了集中授权访问的功能,这是联合堡垒机产品实现的,其意思就是当有很多用户以及应用程序需要访问很多数据库的时候,有效地管理中间的授权和审计。其次,还有专有网络以及访问来源的ACL。在其下就可以使用内核、数据库引擎提供的ACL。在控制链路上,可以通过资源控制来控制人员和账号允许其在什么时间用什么IP对于哪些数据库进行访问,这样的授权粒度非常细。基于最小授权原则,无论是数据链路还是控制链路,都应该基于这套原则控制用户访问。
数据库安全解决方案案例分享
接下来分享两个案例。第一个案例是某公司拥有100多个数据库,100多个研发人员,研发需要处理数据库问题,因此需要访问数据库,那么如何对于这些数据库进行管理呢?客户提出已经给每个研发提供了AD认证,而阿里云提供的解决方案就是引入堡垒机,堡垒机就是在阿里云VPC内部的服务器,当用户的内网和VPC打通之后,就可以在公司内网直接通过域账号登录堡垒机,因为其是与AD打通的,无论是SSH协议的Linux还是Windows都能够连到堡垒机上,在堡垒机上再为每个用户分配账号和密码,这样一来,研发人员就可以安全地访问到符合自己权限的数据库。同时,对于不同的业务可以做资源组隔离来保证不同业务的ECS不能互相访问彼此的数据库。
第二个案例与第一个类似,但是客户要求每个研发同学都拥有一个RAM子账号,在这样的情况下,可以在中间引入一个DMS产品提供的统一认证功能,这样一来研发同学并不需要知道数据库密码就可以访问。而用户可以授权RAM子账号能够访问哪些数据库。
阿里云数据库全链路安全能力
在审计部分而言,在数据链路部分都是发起SQL,那么如何对于SQL进行审计呢?阿里云会记录完整的登录事件,也就是会记录登录、登出日志。此外,还会进行完整的SQL执行审计,包括查询、更新、修改和删除,还会记录SQL扫描的行数以及返回的数据行数。在控制链路上,可以审计哪个子账号在什么时间从哪个IP通过什么方式访问了哪个实例,做了什么操作,并且这是阿里云的通用服务。
此外,值得一提的就是阿里云近期会对之前的SQL审计功能进行全面升级,新版本提升了基于SQL日志的安全风险以及性能风险的分析洞察能力,所以我们称之为“SQL洞察”。另外,在技术架构设计上做了一次大调整,使用了新的列式存储服务以及压缩、索引技术,使得存储成本整体降低了60%。
具体而言,在SQL洞察上提供了哪些能力。首先,对于搜索功能进行了增强,高级搜索能够帮助用户实现很多功能,这些功能将会逐渐开放API。其次,会提供一些分析诊断的能力,将会与原本的性能诊断服务打通,实现定制化的灵活的诊断能力。比如你可以找出昨天业务系统报错那十分钟,数据库的SQL有没有异常,哪条SQL是“罪魁祸首”。
在加密方面,阿里云对于传输和存储都提供加密能力。在传输这里,提供了像SSL TSL v1.2的支持,并且还可以强制某一用户使用SSL,配置过程也非常简单。同时,除了在访问路径上实现了加密,在数据库备份的时候,以及在传输和存储到OSS的时候,也提供了加密能力,并且加密的Key由用户自己保管。目前提供的表级别的TDE加密,可以在数据库里面直接开启某一张表的加密,未来还可以通过云盘实现数据库实例级别的加密等。
在预警以及应急方面,阿里云提供了免费的产品——Adviser智能顾问,它将会帮助用户发现基础云产品中的安全风险,并将这些风险以建议的方式推送给用户。同时,在应急方面,还会与安全组织进行合作,在重大漏洞爆发之前就能够提前感知,此外基于阿里云安全团队的技术能力能够在漏洞爆发之前将其修复,并且提供了24小时的安全应急响应能力。
总结而言,全链路安全从技术层面到服务层面,无论是数据链路还是控制链路,从事前、事中再到事后,从接入层、网络层再到代理层、存储层,阿里云都提供了立体的全链路安全方案,用户可以按需选择里面可能有帮助的功能,这套安全体系已经支撑云上的MySQL、MariaDB以及全新的下一代云数据库POLARDB等。
但是,仅有这些还远远不够,因为安全是需要持续进化的事情,没有永远的安全,但是云计算技术的进化速度远比线下自身的技术能力进化速度更快。这是因为云有两大特点,第一个就是“在线”,其次是很多人参与,这样就可以获更多的贡献。正如“流水不腐,户枢不蠹”所言的,阿里云希望通过云这种新的形式构建更高的安全能力,帮助大家实现更高的安全建设。