详细分析一下MySQL数据库系统安全相关因素

时间:2021-04-16

对于任何一个企业来说,其数据库系统中所保存数据的安全性无疑是非常重要的,尤其是公司的某些商业数据,可能就是公司的根本,失去了数据的安全性,可能就是失去了公司的一切。既然数据库系统安全是如此的重要,那么我们就有必要了解一下数据库系统安全相关因素有哪些。

  1、外围网络

  MySQL的大部分应用场景都是基于网络环境的,而网络本身是一个充满各种入侵危险的环境,所以要保证安全,在条件允许的情况下,就应该从最外围的网络环境开始“布防”,因为这一层防线可以最大范围阻止可能存在的威胁。

  在网络环境中,任意两点之间都可能存在无数的“道路”,是一个真正“条条道路通罗马”的环境。在那许许多多的道路中,重要有一条道路不够安全,就可能被入侵者利用。当然,由于所处的环境不同,潜在威胁的来源也会不一样。有些MySQL所处环境暴露在整个广域网中,可以说是完全“裸露”在任何可以接入网络的潜在威胁者前面。而有些MySQL是在一个相对小一些的局域网里,相对来说,潜在威胁者也会少很多。处在局域网之内的MySQL,由于有局域网出入口网络设备的基本保护,相对于暴露在广域网中的要安全不少,主要威胁对象基本上控制为可以接入局域网的内部潜在威胁者和极少数能够突破最外围防线的入侵者。所以,尽可能地让MySQL处在一个有保护的局域网之中,是非常必要的。

  2、主机

  有了网络设备的保护,MySQL就足够安全了么?我想大家肯定都会给出否定的回答。因为即使局域网出入口的安全设备足够强大,可以拦截住外围试图入侵的所有威胁者,但如果威胁来自局域网内部呢?比如局域网中被控制的设备,某些被控制的有权限接入局域网的设备,以及内部入侵者等。它们仍然是威胁者。所以说,即使有了第一层防线的保护,仍然存在安全风险,局域网内部仍然会有不少的潜在威胁存在。

  这个时候就需要我们部署第二道防线“主机层防线”了。“主机层防线”主要拦截网络(包括局域网内)或直接的未授权用户试图入侵主机的行为。因为一个恶意入侵者在登录到主机之后,可能通过某些软件程序窃取那些自身安全设置不够健壮的数据库系统的登入口令,从而达到窃取或破坏数据的目的。如一个主机用户可以通过一个未删除且未设置密码的无用户名本地账户轻易登入数据库,也可以通过MySQL初始安装好后就存在的无密码的“root@localhost”用户登录数据库并获得数据库最高控制权限。

  非法用户除了通过登入数据库获取或破坏数据之外,还可以通过主机上面相关权限设置的漏洞,跳过数据库而直接获取MySQL数据(或者日志)文件达到窃取数据的目的,或者直接删除数据(或者日志)文件达到破坏数据的目的。

  3、数据库

  通过第二道防线“主机层防线”的把守,我们又可以挡住很大一部分安全威胁者。但仍然可能会存在极少数突破防线的入侵者。而且即使没有任何“漏网之鱼”,那些有主机登入权限的使用者呢?是否真的就是完全可信任对象?No,不能轻易冒这个潜在风险。对于一个有足够安全意识的管理员来说,是不会轻易放任任何一个潜在风险存在的。

  这个时候,第三道防线“数据库防线”就需要发挥它的作用了。“数据库防线”也就是MySQL数据库系统自身的访问控制授权管理模块。这道防线基本上可以说是MySQL的最后一道防线了,也是最核心最重要的防线。它首先需要抵挡住之前的两层防线都没有能够阻拦住的所有入侵威胁,同时还要限制住拥有之前二层防线自由出入但不具备数据库访问权限的潜在威胁者,以确保数据库自身的安全及保存数据的安全。

  之前的两层防线对于所有数据库系统来说区别不大,都存在着基本相同的各种威胁,不论是Oracle还是MySQL,以及任何其他的数据库管理系统,都需要基本一致的“布防”策略。但是这第三层防线,也就是自身的“数据库防线”对于每个数据库系统来说就存在较大的差异了,因为每种数据库都有各自不太一样的专门负责访问授权相关功能的模块,不论是权限划分还是实现方式都可能不太一样。

  对于MySQL来说,其访问授权相关模块主要由两部分组成。一是基本的用户管理模块,另一个是访问授权控制模块。用户管理模块的功能相对简单,主要是负责用户登录连接相关的基本权限控制,但其在安全控制方面的作用却不比任何环节小。它就像MySQL的一个“大门门卫”一样,通过校验每一位敲门者所给的进门“暗号”(登入口令),决定是否给敲门者开门。而访问授权控制模块则随时随地检查已经进门的访问者,校验他们是否有访问“请求访问数据”的权限。通过了校验的可顺利拿到数据,而未通过校验的访问者,只能收到“访问越权了”的相关反馈。

  上面的三道防线组成了三道坚固的安全保护壁垒,就像三道坚固的城墙一样保护着MySQL数据库中的数据。只要保障足够,基本很难有人能够攻破这三道防线。

  4、代码

  1)Query语句相关安全因素

  “SQL注入攻击”这个术语我想大部分读者都听说过了。指的就是攻击者根据数据库Query语句解析器的原理,利用程序中对客户端所提交数据的校验漏洞,通过程序动态提交数据接口来提交非法数据,达到入侵目的。

  “SQL注入攻击”的破坏性非常大,轻者造成数据被窃取,重者数据遭到破坏,甚至可能丢失全部的数据。“SQL注入攻击”漏洞的产生主要是编码不够严谨造成的,所以这里就不做介绍了,如果读者还不是太清楚何为“SQL注入攻击”建议通过互联网搜索一下,可以得到非常多且详细的介绍及案例分析。

  2)程序代码相关安全因素

  如果程序代码权限校验不够仔细且存在安全漏洞,则同样可能会被入侵者利用,窃取数据等。比如,一个存在安全漏洞的信息管理系统,很容易就可能被入侵,入侵者进而从此系统中窃取到其他一些系统的登入口令。之后,就能堂而皇之地轻松登陆相关系统达到窃取数据的目的。甚至还可能通过应用系统中保存不善的数据系统连接登录口令,从而带来更大的损失。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章