当前位置:网站首页>数据库安全的重要性
数据库安全的重要性
2022-07-07 10:32:00 【bisal(Chen Liu)】
上周末,可能有些朋友关注到,暗网有人以十比特币的价格倒卖XX机构几十T个人信息数据的事情。
信息安全、数据安全的问题,一直在强调,但为什么还是会出现?一方面是技术的限制,另一方面就是管理和人的问题了。严重性都知道,但就是会屡犯。
eygle曾写过这篇数据库信息安全的文章,其实不只是数据库领域,在其他的领域,仍可借鉴。
P. S. 原文链接,https://www.modb.pro/db/19105
近日的数据安全事故,引发了很多企业的普遍关注,而不少用户从彻查中确实发现自己的数据库已经被注入,这为大家上了数据安全的重要一课。
甚至有的企业要求停用PL/SQL Developer这一工具,虽然这从制度上关上了一个门,但是我们知道数据库类似的门如此之多,如何能够从根本上提升数据库管理的安全,减少数据运维风险呢?
我曾经在《数据安全警示录》一书中总结了种种数据安全风险,提出了很多预防措施和手段,在此整理其中的一些建议供大家参考。
我在书中提出了数据安全的五个纬度,可以基于这五个纬度来梳理企业的数据安全,并据此建立相应的安全防护措施。
在数据安全的范畴内,我们将安全划分为五大方面,分别是:软件安全、备份安全、访问安全、防护安全、管理安全。
在企业数据安全中,这五大方面是相辅相成、互有交叉、共同存在的,下图是关于安全的一张思维导图,
在这五大安全方向中,可能出现两种性质的安全问题,第一,由于内部管理不善而导致的数据安全问题;第二,由于外部恶意攻击入侵所带来的安全安问题。通常我们把安全问题狭义化为后者,这实际上是片面的,在数据安全问题上,前者造成的数据损失、数据损毁,其发生率和影响度都远远超过后者。
下面我们对数据安全的五大方面做一下简要的分析和探讨,
1. 软件安全是指我们选择的数据库产品、版本是否稳定安全;厂商所能提供的补丁集和BUG修正是否及时、基础硬件与操作系统是否经过认证。很多用户在部署数据库软件时,仅仅选择了最容易获得的初始发布版本,遗漏了可能已经存在的补丁修正,并且在运行维护中并不能够及时跟踪软件更新,也无法获得BUG信息、补丁修正和安全告警,这就使得软件本身的很多风险隐患得不到修正。如果软件安全无法保证,数据库安全的基础也就丧失了。
2. 备份安全是指用户数据能否得到及时有效的备份保全,能否在故障灾难之后获得及时的恢复和挽救。在数据库运行期,最为重要的就是备份安全,如果没有可靠的备份,将数据集中起来就只能是等待数据灾难,所以我们将备份安全提升到核心地位,备份以及随之衍生的容灾安全等,都是企业整体数据架构应该考虑的因素。很多企业在数据灾难之后因为缺乏有效备份而一蹶不振,根据Gartner 2007年的一份调查报告显示,在经历了数据完全丢失而导致系统停运的企业中,有2/5再也没能恢复运营,余下的企业也有1/3在两年内宣告破产,由此可见,由于备份安全问题导致的企业伤害可能远远大于黑客攻击。
3. 访问安全是指用户数据库的访问来源和访问方式是否安全可控。通常数据库系统处于IT系统的核心,其安全架构涉及主机、系统、存储、网络等诸多方面,如果没有明确的访问控制,缺乏足够的访问分析与管理,那么数据库的安全将是混乱和无法控制的。在应用软件使用和访问数据库时,要正确设置权限,控制可靠的访问来源,保证数据库的访问安全,唯有保证访问安全才能够确保数据不被越权使用、不被误操作所损害,通常最基本的访问安全要实现程序控制、网络隔离、来源约束等。
4.安全防范是指通过主动的安全手段对数据库通讯、传输等进行增强、监控、防护、屏蔽或阻断,诸如数据加密、审计、数据防火墙等技术都在这一范畴之内。我们必须认识到,在IT技术高度发展的今天,风险是无处不在、层出不穷的,可能我们从未思考过的安全问题,每天都在不断涌现,所以在数据库环境中采取主动式防护,可以帮助我们监控分析和屏蔽很多未知风险,已经有很多成熟的产品和技术可以用于安全防范。
5. 管理安全是指在企业数据的日常管理维护范畴内,能否充分保证数据安全以及服务的高可用连续提供。诸如DBA的维护、文件的管理、参数或数据结构的变更等等都可能引入数据风险,管理安全要求我们通过规范、制度以及技术手段去确保维护管理安全;另外,基于硬件、电力等基础平台的故障都可能影响数据库服务的高可用性,在管理中要通过监控手段及时预警,通过集群、备库等切换与服务分担保障服务的连续性。
针对最近爆发的安全事故,我抽取书中的观点,总结提升数据库安全的"16条军规"供大家参考,很多朋友向我们询问,如何做才能够彻底防范这类风险,我想你可以从以下建议中找到答案,
备份重于一切
我曾经在总结的DBA四大守则的第一条就指出,『备份重于一切』,有了有效的备份,即使遭遇灾难,也可以从容应对,对于重要的生产环境,适当建立备库进行数据保护,查询分担,也会减少生产库的风险。
唯一会让DBA们从梦中惊醒的就是:没有备份! 所以对于数据库运维来说,第一重要的是做好备份!有备方能无患!
严格管控权限
过度授权即是为数据库埋下安全隐患,在进行用户授权时一定要遵循最小权限授予原则,避免因为过度授权而带来的安全风险。本次安全风险,如果用户只具备最低权限,如不具备DDL权限,那么也不会遭到风险。
明确用户职责
应当明确不同的数据库用户能够用于的工作范围,应当使用普通用户身份的,就绝对不应该使用DBA的用户身份,只有职权相称,才能够避免错误,降低风险。即便是拥有管理员职责的用户,也应当遵循以不同身份执行不同任务的习惯,例如SYS和SYSTEM用户的使用就应当进行区分和界定。
密码策略强化
毫无疑问,数据库用户应当使用强化的密码规则,确保弱口令带来的安全风险,很多数据泄露问题来自弱口令攻击和提权。
限制登录工具
明确限制不同工具的使用场景,明确规定工具的准确来源,或者通过堡垒机等来限制数据库访问。对于工具也可以做出明确规则和限制,如限制仅能通过SQL Developer访问生产,PL/SQL Developer工具仅能访问测试环境,以减少安全风险甚至误操作风险。
禁止远程DDL
可以限制DDL操作仅能在数据库服务器本地进行,禁止远程连接执行DDL操作,这一手段在很多公司被严格执行。
使用绑定变量
在开发过程中,严格使用绑定变量,绑定变量可以防范SQL注入攻击,减少数据库安全风险;这次安全事故,很多用户开始猜测是SQL注入,走了很多分析上的弯路。
监控监听日志
监听日志记录了数据库访问的来源、程序等信息,包括恶意扫描,密码尝试等,一定要重视监听日志的作用,并对其进行分析和监控,以清楚的汇制数据库访问图谱;
数据网络隔离
数据库的网络环境应该一直隐藏在最后端,避免将数据库置于直接的访问连接之下,由此可以减少数据库的访问风险。
测试和生产隔离
互通就意味着同时可以访问,也就可能带来很多意想不到的安全风险,企业应当将测试环境和生产环境部署于不可互通,或者不可同时访问的网络环境中,避免因为错误连接而发生的数据库灾难。分离部署一方面可以降低误操作的可能性,也可以屏蔽一些无关的访问可能,从而从网络链路上保证数据安全。
密码差异设置
有些测试环境或者非产品环境是利用产品环境恢复得到的,DBA在建立了测试环境后,就没有修改数据库用户的登录密码;经常性的,DBA也习惯在所有环境中设置通用的密码;这些习惯为系统带来了很多风险和不确定性。我们建议用户在不同环境中采用不同的密码设置,这是因为一方面产品环境和测试环境面对的访问用户不同,密码设置相同则意味着产品环境的安全性完全得不到保障;另一方面,DBA登录到不同的数据库需要使用不同的密码,这进一步减低了DBA在错误的环境下执行命令的可能性。
重要数据加密
很多重要的数据,需要加密存储,最典型的就是用户和密码信息,大量的泄密事件本质上是因为缺乏最基本的加密防范,对重要数据实施一定的安全防护加密,是应当予以适时考虑的安全方面之一。
适时的软件升级
这里的软件指数据库软件,尤其是当Oracle已经发布了安全补丁,已知的安全漏洞被黑客利用,则更可能对数据库产生致命的伤害。
防范内部风险
不可否认,绝大部分安全问题都来自于企业内部,来自最紧密、最轻易的接触和访问,企业的人员变动,岗位变更,都可能导致数据安全问题的出现,单存依靠对管理员的信任不足以保障数据安全,必须通过规章、制度与规 范的约束才能够规避安全风险。
很多企业为了便利而舍弃规范、规章或者安全限制是得不偿失的做法。安全防范应当从内部做起,从限制约束自我做起,当最紧密相关的访问都遵从守则,那么系统的安全性就能够获得大幅度的提升。
树立安全意识
安全问题最大的敌人是侥幸,很多企业认为安全问题概率极低,不会落到自己的环境中,所以对于安全不做必要的投入,造成了安全疏忽。所以安全问题最大的敌人是我们自己,安全需要一点一滴的加强,逐步完善。
开始安全审计
以Oracle数据库为例,数据库已经提供了很多安全防范的手段和方法,我们建议用户适当展开安全防范措施,开启部分任务审计,定期分析数据库风险,由此逐步完善数据库安全。
数据安全,应该从我们日常工作的一点一滴做起。
近期更新的文章:
近期的热文:
文章分类和索引:
边栏推荐
- Tutorial on the principle and application of database system (011) -- relational database
- Sort out the garbage collection of JVM, and don't involve high-quality things such as performance tuning for the time being
- Completion report of communication software development and Application
- Completion report of communication software development and Application
- Cenos openssh upgrade to version 8.4
- 数据库系统原理与应用教程(007)—— 数据库相关概念
- Solve server returns invalid timezone Go to ‘Advanced’ tab and set ‘serverTimezone’ property manually
- Vxlan 静态集中网关
- 即刻报名|飞桨黑客马拉松第三期盛夏登场,等你挑战
- Upgrade from a tool to a solution, and the new site with praise points to new value
猜你喜欢
Epp+dis learning road (2) -- blink! twinkle!
普乐蛙小型5d电影设备|5d电影动感电影体验馆|VR景区影院设备
Pule frog small 5D movie equipment | 5D movie dynamic movie experience hall | VR scenic area cinema equipment
The IDM server response shows that you do not have permission to download the solution tutorial
IPv6 experiment
关于 Web Content-Security-Policy Directive 通过 meta 元素指定的一些测试用例
Introduction and application of smoothstep in unity: optimization of dissolution effect
"Series after reading" my God! It's so simple to understand throttling and anti shake~
JS to convert array to tree data
【PyTorch实战】用RNN写诗
随机推荐
【统计学习方法】学习笔记——第五章:决策树
Sign up now | oar hacker marathon phase III midsummer debut, waiting for you to challenge
Using stack to convert binary to decimal
Preorder, inorder and postorder traversal of binary tree
SQL lab 1~10 summary (subsequent continuous update)
Realize all, race, allsettled and any of the simple version of promise by yourself
NGUI-UILabel
30. Feed shot named entity recognition with self describing networks reading notes
Typescript interface inheritance
idea 2021中文乱码
Object. Simple implementation of assign()
数据库系统原理与应用教程(008)—— 数据库相关概念练习题
What are the technical differences in source code anti disclosure
千人规模互联网公司研发效能成功之路
【PyTorch实战】用PyTorch实现基于神经网络的图像风格迁移
SQL injection -- Audit of PHP source code (take SQL lab 1~15 as an example) (super detailed)
解密GD32 MCU产品家族,开发板该怎么选?
【PyTorch实战】用RNN写诗
Routing strategy of multi-point republication [Huawei]
[pytorch practice] image description -- let neural network read pictures and tell stories