安全计算环境-(五)系统管理软件-6
MySQL
控制点
2.
访问控制
在操作系统中实施访问控制的目的是为了保证系统资源(操作系统和数据库管理系统)受控、合法地被使用。用户只能根据自己的权限来访问系统资源,不得越权访问。
a)
安全要求:应对登录的用户分配账户和权限。
要求解读:应了解数据库用户账户及权限分配情况,对网络管理员、安全管理员、系统管理员、用户账户的权限设置进行测试。有些MySQL数据库的匿名用户的口令为空,任何人都可以连接这些数据库。如果匿名账户grants存在,那么任何人都可以访问数据库,且至少可以使用默认库“test”。因此,应禁用或限制匿名、默认账户的访问权限。
检查方法
1.执行如下语句,核查是否为网络管理员,安全管理员、系统管理员创建了不同的账户。
select user,host FROM mysql.user
2.执行如下语句,查看网络管理员、安全管理员、系统管理员用户账号的权限,权限间是否分离并相互制约。
show grants for 'xxxx'@'localhost'
期望结果
1.创建了不同的账户,并为其分配了相应的权限。
2.已禁用匿名用户、默认账户或已限制匿名用户、默认用户的权限。
b)
安全要求:应重命名或删除默认账户,修改默认账户的默认口令。
要求解读:在Linux操作系统中,root用户拥有对所有数据库的完全访问权限。因此,在安装Linux操作系统的过程中,一定要设置root账户的口令(修改默认的空口令)。
检查方法
1.执行“select user,host FROM mysql.user”命令,在输出结果中查看root账户是否已被重命名或删除。
2.若root账户未被删除,则核查其默认口令是否已更改,以及是否已避免空口令或弱口令。
期望结果
1.数据库管理系统中的默认账户已被删除。
2.数据库管理系统默认账户root虽未被删除,但其口令复杂度已经增强,不存在空口令、弱口令。
c)
安全要求:应及时删除或停用多余的、过期的账户,避免共享账户的存在。
要求解读:在默认安装的MySQL数据库中,匿名用户可以访问test库。因此,移除无用的数据库,可以避免匿名用户在不可预料的情况访问数据库。同时,应删除数据库中多余的、过期的账户。
检查方法
1.在sqlplus中执行如下命令。
select username,account_status from dba_users
2.执行下列语句,依次核查列出的账户中是否存在无关的账户(应为不存在)。
select * from mysql.user where user=' '
select user,host FROM mysql.user
3.访谈网络管理员、安全管理员、系统管理员,了解不同的用户是否使用不同的账户登录系统。
期望结果
1.不存在示例账户。
2.数据库管理系统用户表中不存在无关账户。
3.不存在多人共享账户的情况。
d)
安全要求:应授予管理用户所需的最小权限,实现管理用户的权限分离。
要求解读:有些应用程序是通过一个特定数据库表的用户名和口令与MySQL进行连接的,安全人员不应给予这个用户完全访问权限。如果攻击者获得了这个拥有完全访问权限的用户账号,就相当于拥有了整个数据库。因此,应核查是否进行了用户角色划分;核查访问控制策略,查看管理用户的权限是否已分离;核查管理用户权限是否为其工作任务所需的最小权限。
检查方法
1.核查是否对用户进行了角色划分,是否仅授予账号所需的最小权限。例如,除root外,任何用户不应有msql库user表的存取权限。再如,禁止将file、process、super权限授予管理员以外的用户。
2.查看权限表,验证用户是否具有除自身角色外其他用户的权限(应为否)。
期望结果
管理用户的权限分配情况均被记录下来。分配了网络管理员、安全员、审计员账号。使用root用户身份需向数据库管理员申请。
e)
安全要求:应由授权主体配置访问控制策略,访问控制策略规定体对客体的访问规则。
要求解读:数据库系统的安全策略应明确主体(例如用户)以用户和/或用户组的身份来配置对客体(例如文件或系统设备、目录表和存取控制表等)的访问控制策略,覆盖范围应包括与信息安全直接相关的主体(例如用户)和客体(例如文件,数据库表等)及它们之间的操作(例如读、写、执行)。
检查方法
1.访谈管理员,了解是否制定了访问控制策略。
2.执行如下语句,核查输出的权限列是否与管理员制定的访问控制策略及规则一致。
mysql>select * from mysql.user\G --检查用户权限列
mysql>select * from mysql.db\G --检查数据库权限列
mysql>select * from mysql.tables_priv\G --检查用户表权限列
mysql>select * from mysql.columns_priv\G --检查列权限列管理员
3.以不同的用户身份登录,验证是否存在越权访问的情形。
期望结果
1.已制定数据库访问控制策略,由专门的安全员负责访问控制权限的授权工作。
2.各账户权限配置均是基于安全员的安全策略配置进行访问控制的。
3.不存在越权访问的情形。
f)
安全要求:访问控制的粒度应达到主体为用户级或进程级,客体为文件、数据库表级。
要求解读:明确提出访问控制粒度方面的要求。重点目录的访问控制主体可能是某个用户或某个进程,应能够控制用户或进程对文件、数据库表等客体的访问。
检查方法
1.执行下列语句。
Mysql>select * from mysql.user\G --检查用户权限列
mysql>select * from mysql.db\G --检查数据库权限列
2.访谈管理员,核查访问控制粒度主体是否为用户级,客体是否为数据库表级。
期望结果
由专门的安全员负责访问控制权限的授权工作,授权主体为用户,客体为数据库表。
g)
安全要求:应对重要主体和客体设置安全标记,并控制主体对有安全标记信息资源的访问。
要求解读:MySQL不提供此项功能。
检查方法
访谈管理员,了解是否已采用其他技术手段对主体和客体设置安全标记并控制主体对有安全标记的信息资源的访问。
期望结果
MySQL不提供此项功能。此项功能主要在操作系统层面实现。