网络安全 频道

MYSQL数据库服务器的安全应用

三、外部安全性-保证网络访问的安全:
  原本这套系统就是为了完成各个分公司远程的销售数据的采集和管理,因此来此远程的TCP/IP访问是不可避免的。
  如果用户与服务器间的数据交互是以纯文本形式发生,黑客就非常容易地“嗅出”这些在网络上传送的数据包,从而获得这些机密的数据信息。可以激活MySQL数据库配置中的SSL,或者应用一个OpenSSH安全应用,来为传送的数据建立一个安全的加密“通道”,从而关闭这个漏洞。通过这样加密用户与服务器之间的连接,可使未经过授权的用户极难破解网络传输的往来数据。通过这个漏洞的关闭,使得我们在网络上传送数据的安全性得到极大的提高。
  MySQL的安全系统是比较灵活的,它允许用户以多种不同的方式设置用户权限。一般地,用户可使用标准的SQL语句GRANT、REVOKE语句做,可以用此语句修改控制客户访问的授权表。但是,老版本的MySQL(3.22.11之前)是不支持这些语句的。或者发觉用户权限不是以你预计的方式工作。对于这种情况,了解MySQL授权表的结构和服务器如何利用它们决定访问权限是有帮助的,这样的了解允许你通过直接修改授权表增加、删除或修改用户权限,它也允许你在检查这些表时确定权限问题。
对GRANT和REVOKE语句详细描述,见《MySQL参考手册》,这里不再详述。
  通过网络连接服务器的用户对MySQL数据库的访问由授权表的内容来得到控制。这些表位于mysql数据库中,并在第一次安装MySQL的过程中初始化(运行 mysql_install_db脚本)。授权表共有5个表:user、host 、db、columns_priv和tables_priv。具体的MySQL授权表的结构和内容见《MySQL的用户管理》。
  每当用户发出一个查询时,服务器首先检查user表,匹配用户开始连接的记录,以查看用户有何全局权限。如果用户有此权限,并且它们对查询的权限足够,服务器则执行此查询。如果用户的全局权限不够,服务器将为用户在db表中寻找,并将该记录中的权限加到用户的全局权限中。如果结果对查询足够,服务器执行此查询。如果用户的全局和数据库级组合的权限不够,服务器将继续查找,首先是tables_priv表,然后是columns_priv表。如果服务器为用户检查过所有表之后仍无足够权限,服务器最终将拒绝用户执行此查询的请求。
  接下来介绍一些在用户授权时的一些预防措施,以及不明智的选择可能会带来的风险。要尽量少地授予超级用户权限,即不要启用user表中条目中的权限,而使用其它授权表,以将用户权限限制于数据库、表、列。在user表中的权限允许将影响到用户的服务器操作可能访问所有数据库中的任何表。其中FILE权限尤其危险,不要轻易授权用户这个权限。FILE权限也能会危及到没有设置足够文件访问权限的系统和运行于此系统上的数据库。最好是设置数据目录只能由服务器自身读取。服务器上任何公开可读文件的内容都可能被拥有FILE权限的用户通过网络访问。
    最后可使用压缩协议(MySQL3.22以上版本才有此功能)对网络上传输的信息进行压缩。甚至为了传输的信息更加安全,大家可以考虑安装ssh(详见http://www.cs.hut.fi/ssh)。使用此协议,我们能在一个MySQL服务器与一个MySQL用户之间得到一个经过加密的TCP/IP连接。

0
相关文章