数据安全典型实践
概览
本文主要介绍如何通过数据容灾、DB防火墙、备份恢复、网络隔离方式保障数据安全。
需求场景
数据是企业的重要资产,因此数据安全是企业最重视的问题之一。如何保障数据安全是每个云上RDS用户都关注的问题。
方案概述
数据容灾
数据容灾对于每个存储系统来说,都是不可缺少的,数据库也不例外。对于数据可用性有强需求的业务场景如金融、游戏业务等场景尤其如此。数据库容灾主要通过多副本架构来保证,同时可以通过定时备份数据、主从同步数据方法来保障数据高可用。在复杂网络情况,用户往往还会需要能有跨机房、跨可用区、跨地域的数据容灾能力。
下面介绍百度智能云RDS数据容灾的几种实现方案。
数据库多副本—主从架构
RDS-for-MySQL目前为用户提供一主一备的双机高可用版。主从架构的目的是——主库发生故障或灾难时,RDS自动第一时间将备库提升为主库,并将业务流量切换到新主库,同时建立新的备库,保障业务的畅通。
数据备份
数据备份可以帮助您在发现误操作后,尽快将数据库恢复到误操作之前的指定时刻,从而最大化地避免损失。
备节点自动备份
备节点上的数据每天自动备份一次,这里的备份对用户透明,备节点上的自动备份无需您的任何操作。
用户自动备份创建
RDS支持通过设置自定义备份周期全面满足用户不同的备份需求,从而减轻用户自运维的负担。您可以设置自动备份周期为一周1天至一周7天,并且设置备份的时间点。
具体操作方法详见:自动创建备份
用户手动备份创建
当有特殊数据备份需求时,如数据进行重大更改后,用户可以手动触发备份。
具体操作方法详见:手动创建备份
DTS数据同步
DTS 同步服务可以实现跨地域RDS实例间的实时数据同步,从而实现异地灾备,帮助用户提高数据安全性、高可用架构。
DTS数据同步可以打通跨地域实例网络的障碍,对于用户是透明的。用户无论是想做同地域还是跨地域的数据灾备,只需在DTS上配置主实例和灾备实例的访问入口即可。
DTS数据同步见:数据同步
Mysql跨实例主从同步
为了保障用户数据高可用,用户可以购买一个新的RDS实例,来同步在线服务的RDS主实例,这样当服务的实例全部挂掉之后,可以使用备份节点的RDS实例。
使用方法:
- 在同地域购买一个RDS实例,可以是同一可用区,也可以是不同可用区,作为灾备实例。
- 将数据导入,并申请灾备实例的Super权限,在灾备实例上执行change master与主实例建立同步关系。
DB防火墙
在什么情况下需要使用DB防火墙?
DB防火墙部署在百度智能云RDS服务的代理实例上,能够有效拦截SQL注入攻击,提高用户数据的安全性。用户在使用百度智能云的RDS服务部署业务时,若直接连接RDS,则黑客可以利用Web应用漏洞进行SQL注入攻击,用户需要在业务层对SQL注入攻击进行识别与处理,增加了业务层开发的复杂度。在部署了百度智能云的代理实例并开启防火墙功能后,DB防火墙能够对SQL进行解析,匹配注入特征,在业务无感知的条件下对注入SQL进行报警或阻断,有效的拦截注入攻击,保护用户的数据安全。同时,系统将汇总5分钟注入详情向用户发送报警邮件及短信通知(如无注入则不发送),用户可以第一时间获得报警信息以采取安全措施。
注意:
(1) 由于DB防火墙部署在代理实例上,由于目前仅RDS-for-MySQL支持创建代理实例,因此只有MySQL实例能够使用DB防火墙。
(2) DB防火墙目前只支持实例级别的防御粒度,库、表、用户级别的防御暂不支持。
DB防火墙模式说明
用户在创建MySQL实例并获取代理实例后,在代理实例管理页面中开启DB防火墙功能。DB防火墙开启后,有两个安全级别供用户选择:告警和阻断。
- 告警:DB防火墙输出SQL注入告警日志,但不会阻断SQL的正常执行。在该级别下,DB防火墙会对SQL进行解析,被识别出的注入攻击会记录到日志中,SQL会继续发往MySQL实例执行。用户可以在SQL注入查询页面查询被识别出的SQL注入。用户可以梳理SQL注入,将用户认为的误报SQL加入到SQL白名单中。
- 阻断:DB防火墙输出SQL注入阻断日志,被识别为注入的SQL将被阻断,无法发送到MySQL实例。用户同样可以通过SQL注入查询页面查询被拦截的SQL。
- 注意:
(1)在使用DB防火墙时,建议先选择告警级别,运行一段时间,确认是否有误报的情况,并将误报SQL加入到白名单中。待稳定后,切换至阻断模式,拦截SQL注入攻击。
(2)被添加到白名单的SQL将被DB防火墙识别放行。同时,与该SQL签名相同的一类SQL也将不再被拦截,请谨慎添加。而删除白名单中的SQL后,被放行的SQL将重新被拦截。
(3)当出现误拦截时,若无法及时将误拦截的SQL加入白名单,可以将DB防火墙防御级别修改为告警,从而不再阻断SQL的正常执行。
备份与恢复
备份创建
备份创建有系统自动创建、用户手动创建两种方式。这些数据备份快照可以被用于数据恢复和实例克隆。
- 系统自动创建备份:为了充分保证用户数据的可用性与可靠性,目前RDS每天都会在热备节点上自动生成数据快照,无论您是否选择当日进行备份。
- 用户自动创建备份:您可以根据业务需要,在一周的七天内选择某些天的某一个时间点,定时生成自动数据备份快照。
- 用户手动创建备份:您可以随时手动创建新的备份,建议您在每次重要的数据变更后手动创建备份。
-
备份空间管理:
- 系统默认赠送与RDS实例磁盘大小相同的备份存储空间来存储自动创建和手动创建的备份,超出此大小后将会产生额外的存储费用),存储计费请参见备份存储计费。
- 您可以根据业务需要选择是否允许数据快照总大小超过赠送的空间,并设置自动备份保留天数。备份自定义的保留天数可以被设定为7天到730天中的任意值。如果不设置保留天数则默认保留的数据快照总大小不会超过赠送的空间并且数量不会超过30个。
备份恢复
备份恢复有快照恢复、克隆实例快照恢复、克隆实例时间点恢复。借助克隆实例您可在确认数据无误后再进行数据恢复,降低数据丢失风险。
- 快照恢复:
您可以随时使用已有的数据快照进行数据恢复。需要注意数据恢复一旦执行,原实例的现有数据将全部丢失并且无法找回。因此建议您请谨慎执行恢复操作,并保证在恢复前生成一份数据快照以备回滚使用。 - 克隆实例快照恢复:
除了直接在当前RDS实例上执行数据恢复外,您还可以使用数据克隆功能进行数据恢复。您可以指定一份数据快照,创建RDS克隆实例,系统会将该数据快照中的数据导入到该克隆实例中。因此您可以在确认导入克隆的数据无误后,再通过DTS服务将对应数据导入原RDS中完成数据恢复,并在完成数据恢复后随时释放克隆实例。 - 克隆实例时间点恢复:
利用克隆实例,您还可将数据恢复到任意一个时间点。您只需在创建克隆实例时选择倒入数据的时间点,系统系统会将当前RDS实例在该时间点的数据导入到该克隆实例中。您仍可以在确认导入克隆的数据无误后,再通过DTS服务将对应数据导入原RDS中完成数据恢复,并在完成数据恢复后随时释放克隆实例。
网络隔离
通过IP白名单实现网络访问控制
百度智能云RDS提供的IP白名单功能实现了用户对网络访问的控制。IP白名单对RDS实例的所有连接方式(VPC内连接、公网连接)生效,建议在申请公网IP前先设置相应白名单规则,保证RDS实例的安全。
通过私有网络VPC实现网络隔离
RDS实例默认置于VPC内,最大程度地提升了RDS实例的安全性。VPC是百度智能云为用户提供的一个私有的网络环境,通过底层的网络协议严格地对用户的网络包进行隔离,在网络层完成访问控制。使用VPC自定义的RDS IP段还可帮助用户解决IP资源冲突的问题。默认情况下,VPC中的RDS实例可被同一个VPC中的BCC实例通过IP白名单访问。
通过VPN实现Internet安全连接
通常用户可以通过为RDS申请公网IP并将对方IP加入白名单的方式,使RDS接受来自公网IP的访问,如来自其它私有网络出口EIP(弹性公网IP)的访问、来自用户自建IDC公网出口的访问。
为保证用户自有服务器对百度智能云RDS的安全访问,用户可通过VPN将自建IDC的服务器接入百度智能云RDS。百度智能云VPN网关隶属于私有网络VPC服务,具体的搭建流程参考VPN网关。