« 上一篇下一篇 »

MySQL访问授权策略

我想,每个人心里都清楚,想要授权最简单方便,维护工作量少,那自然是将所有权限都授予所有的用户了。但是,大家肯定也都知道一个用户所拥有的权限越大,那么它给系统带来的潜在威胁也就越大。所以,从安全方面来考虑,权限自然是授予得越小越好。一个有足够安全意识的管理员在授权的时候,都会只授予必要的权限,而不会授予任何多余的权限。现在,我们就从安全的角度来考虑如何设计一个更为安全合理的授权策略。

    首先,了解来访主机。

    由于MySQL数据库登录验证用户的时候除了用户名和密码之外,还要验证来源主机。所以我们还需要了解每个用户可能从哪些主机发起连接。当然,也可以在授权的时候直接通过“%”通配符给所有主机访问的权限,但是这样做就违背了安全策略的原则,带来了潜在的风险,所以并不可取。尤其是在没有局域网防火墙保护的情况下,更不能轻易允许可以从任何主机登录的用户存在。能通过具体主机名或IP地址指定的尽量通过使用具体的主机名和IP地址来限定来访主机,不能用具体的主机名或IP地址限定的也需要用尽可能小的通配范围来限定。

    其次,了解用户需求。

    既然要做到仅授予必要的权限,那么必须了解每个用户所担当的角色,也就是说,我们必须要充分了解每个用户连接数据库是为了完成什么工作。了解该用户是一个只读的用户,还是一个读写都有的账户;是一个备份作业的用户还是一个日常管理的账户;是只需要访问特定的某个(或者几个)数据库,还是需要访问所有的数据库。只有了解了需要做什么,才能准确地了解需要授予什么样的权限。因为如果权限过低,会造成工作无法正常完成,而权限过高,则存在潜在的安全风险。

    再次,要为工作分类。

    为了做到各司其职,我们需要将要做的工作分门别类,不同类别的工作应用于不同的用户,做好用户分离。虽然这样可能会带来管理成本增加,但是基于安全方面的考虑,这部分管理工作量的增加是非常值得的。而且需要做的也只是适度的分离。比如将执行备份工作、复制工作、常规应用访问、只读应用访问和日常管理工作分别理出单独的账户来授予各自所需权限。这样,既可以让安全风险尽量降低,也可以让同类同级别的相似权限合并在一起,不互相交织。对于PROCESS、FILE和SUPER这样的特殊权限,仅仅管理类账号才需要,不应该授予其他非管理账号。

    最后,确保只有绝对必要者拥有GRANT OPTION权限。

    为了安全考虑,拥有GRANT OPTION权限的用户是越少越好,尽可能只让拥有超级权限的用户才能拥有GRANT OPTION权限。

« 上一篇下一篇 »