安全问题一直是系统面临的持续性风险,前两天推送过eygle从Oracle数据库角度阐述数据安全方面的知识《数据库安全的重要性》,碰巧看到徐老师写了一篇MySQL安全方面的文章《MySQL的安全解决方案》,其中一些内容,不仅数据库层面,在其他技术栈和技术管理过程中,同样能借鉴。
伴随着MySQL的发展,MySQL的使用场景已经从互联网延伸到金融、制造、交通等传统行业。现代化的IT环境,数据爆发式增长,各种法律法规对于信息保护的要求越来越严格,各种数据的安全性要求越来越高。因此,使用与合规要求匹配的安全性解决方案对于MySQL用户变得十分重要,特别是在接受监管的传统行业。本文将从IT管理者面临的风险、法律法规的要求等方面进行分析,并提供MySQL的相关解决方案。
企业IT管理者面临的挑战
企业的IT管理者在安全性方面面临着来自内外两方面的潜在风险。外部威胁主要来自于对服务器的攻击行为,例如,SQL注入攻击,导致服务器无法继续提供服务。勒索病毒导致文件无法打开等等。内部的威胁来自于员工的情绪管理,商业间谍等方面,例如,一个带有情绪的系统管理员,破坏数据库文件,一个刚刚入职的DBA试图访问敏感数据等等。这些来自外部与内部的潜在风险会导致企业的IT系统瞬间崩溃。
法律法规的要求
2021年11月1日个人信息保护法施行,国家立法保护个人信息,显示了国家对个人信息的保护力度,个人信息滥用将会受到严厉的法律制裁。在全球范围内,多个国家和地区通过法律法规对信息数据进行保护,例如,PCI – DSS(支付款数据)、HIPAA(健康信息数据)、FERPA(学生数据),及欧盟的General Data Protection Directive(个人数据保护)等。具有海外业务的公司,更加需要遵循当地的法律法规。除了法律法规的要求,企业还需要面临其监管组织的要求,例如,在我国实施的信息系统安全等级保护基本要求(经常被各个企业提到的等保要求),里面明确规定了信息系统达到各个等级的要求,按照要求的严格程度,从低到高分为五个等级。
基本安全要求分为基本技术要求和基本管理要求,其中的管理类安全要求与信息系统中各 种角色参与的活动有关,主要通过控制各种角色的活动,从政策、制度、规范、流程以及记录等方面做出规定来实现。技术类安全要求与信息系统提供的技术安全机制有关,主要通过在信息系统中部署软硬件,并正确配置其安全功能来实现。具体的基本技术要求来自物理安全、网络安全、主机安全、应用安全和数据安全几个层面。
以数据安全为例,第一级的基本要求如下:
• 数据完整性应能够检测到重要用户数据在传输过程中完整性受到破坏。
• 备份和恢复应能够对重要信息进行备份和恢复。
第二级的基本要求如下:
• 数据完整性应能够检测到鉴别信息和重要业务数据在传输过程中完整性受到破坏。
• 数据保密性应采用加密或其他保护措施实现鉴别信息的存储保密性。
• 备份和恢复应能够对重要信息进行备份和恢复,并应提供关键网络设备、通信线路和数据处理系统的硬件冗余,保证系统的可用性。
之后的每个等级要求更为严格,在这里不再描述,读者可以从网络检索到详细的内容要求。
总结各种法律法规的要求,不难发现,几乎所有对数据安全的合规要求会覆盖以下4方面的内容:
- 持续的监控(用户、模式,备份)
- 数据保护 (加密,权限管理)
- 数据的保留(备份,用户行为)
- 数据审计(用户行为)
为此,我们可以采用系列的方法去保护我们的数据库安全。这一系列的方法包括:
- 评估
- 定位风险和漏洞,确保必要的安全控件都已经正确安装。
- 预防
- 使用加密算法,用户控制,访问控制等。
- 检测
- 即使做到评估和预防,仍存在数据侵入的可能 ,可以使用审计,监控,警告等手段。
- 恢复
确保出现安全事件后,服务不会中断。
论证– 事后验证– 解决安全漏洞。
基于上述一系列的方法,MySQL提供一系列的产品满足各种需求,包括:
- Authentication/认证
- Encryption/加密
- TDE/透明数据加密
- Firewall/防火墙
- Auditing/审计
- Masking/De-Identification屏蔽/脱敏
- Monitoring/监控
- Backup/备份
各种产品的详细内容如下:
Authentication/认证:认证管理,可将MySQL轻松集成到现有安全基础架构中,包括LDAP和Windows Active Directory。可使用可插拔身份验证模块("PAM")或Windows OS原生服务来验证MySQL用户身份。
Encryption/加密:MySQL企业级加密提供加密、密钥生成、数字签名,非对称加密和其他加密特性,帮助企业保护机密数据和满足法规要求。
TDE/透明数据加密:通过在数据库中启用静态数据加密来保护用户的关键数据。它可以保护信息隐私,防止数据泄露,并有助于满足监管要求。
Firewall/防火墙:防火墙能实时防御针对数据库的特定攻击(如SQL注入),从而消除网络安全威胁。MySQL企业级防火墙能监视数据库威胁,自动创建已批准SQL语句的白名单并阻止未经授权的数据库活动。
Auditing/审计:企业可以快速地在新应用和现有应用中添加基于策略的审计合规性。管理员可以动态启用用户级活动日志、实施基于活动的策略、管理审计日志文件并可以将MySQL审计集成到Oracle和第三方解决方案中。
Masking/De-Identification屏蔽/脱敏:提供了一个易于使用的内置数据库解决方案,通过隐藏和用替代品替换真实值来帮助组织保护敏感数据免受未经授权的使用。使组织能够满足要求数据脱敏的监管和法律要求,例如GDPR、PCI DSS和HIPPA。可以防止未经授权访问机密数据,显著降低数据泄露风险。
Monitoring/监控:执行MySQL安全最佳实践,识别漏洞、评估当前的设置与安全性加强策略、监控用户、监控密码、监控模式变更、监控备份、配置管理并发出警告和配置优化建议。
Backup/备份:提供企业级备份和恢复,在包括Linux、Windows、Mac和Solaris在内的多个平台上提供热、在线、非阻塞备份,并提供备份加密等安全功能。
上述功能均在MySQL的企业版中提供,为企业级的用户提供了足够的安全性保障。对于个人用户而言,对社区版的MySQL中的安全特性十分关心,在MySQL的8.0版本中,对于安全特性进行了一系列的增强。其中包括:
SSL的相关改进:社区版与企业版同样使用OpenSSL,(8.0之前的版本由于GPL协议的问题,无法使用OpenSSL)MySQL 8.0使用OpenSSL 1.1.1支持TLSv1.0,TLSv1.1,TLSv1.2和TLSv1.3协议。
OpenSSL动态链接并支持FIPS模块:动态链接的优势在于使用经过优化的OpenSSL库(AES-NI,英特尔高级加密标准)可以在不升级MySQL的情况下对其打补丁。用户运行OpenSSL FIPS对象模块可以符合FIPS的要求,并能够提供机密性、整合性和信息摘要服务。
管理专用端口:管理员通过在系统启动时时设置admin_address、admin_port端口,可以防止达到最大连接设置时,管理员无法登录服务器。
SYSTEM_USER权限:适用于在云上管理服务时,需要高权限的用户同时不影响其他的人,可以限制命令的范围。"SYSTEM_USER"权限是最高权限的使用者,一般的用户即使授予了DDL权限也无法修改任何SYSTEM_USER的权限。
撤销部分权限:可限制DBA对某些特定schema的DDL/DML操作。主要用于内部MySQL模式。
角色:MySQL在8.0版本引入角色功能,改善MySQL的使用权控制,简化用户和应用程序的权限管理,并尽可能符合SQL标准。
双重密码:该功能可以在设置新密码时让旧密码还能使用一段时间,以解决将更改密码和推送到应用层如何同步进行的问题。
密码策略:提供密码历史管理、双重密码、为全部账户设置密码、执行强密码,以及密码到期/轮用等功能。
以上是MySQL在安全方面所做的全部努力,并且在持续的进行改进。感兴趣的读者可以试用这部分功能,强烈推荐企业级用户采用官方的解决方案。
如果您认为这篇文章有些帮助,还请不吝点下文章末尾的"点赞"和"在看",或者直接转发pyq,