数据库权限分配和Mysql审计功能

时间:2024-05-23 16:33:18

实验2:数据库安全性定义与检查

实验2.1 自主存取控制实验

(1)实验目的

掌握自主存取控制权限的定义和维护方法。

(2)实验内容和要求

定义用户、角色,分配权限给用户、角色,回收权限,以相应的用户名登录数据库验证权限分配是否正确。选择一个应用场景,使用自主存取控制机制设计权限分配。可以采用两种方案。方案一:采用SYSTEM超级用户登录数据库,完成所有权限分配工作,然后用相应用户名登陆数据库以验证权限分配正确性;方案二:采用SYSTEM用户登陆数据库创建三个部门经理用户,并分配相应的权限,然后分别用三个经理用户名登陆数据库,创建相应部门的USER, ROLE,并分配相应权限。下面的实验报告示例,采用实验方案一。验证权限分配之前,请备份好数据库;针对不同用户所具有的权限,分别设计相应的SQL语句加以验证。

(3)实验重点和难点

实验重点:定义角色,分配权限和回收权限。

实验难点:实验方案二实现权限的再分配和回收。

(1.1)修改配置

数据库权限分配和Mysql审计功能

数据库权限分配和Mysql审计功能

在my.ini配置文件中注释掉“—skip-grant-tables”之后,在mysql/bin目录下直接修改root密码:

数据库权限分配和Mysql审计功能

(1.2)方案一

创建用户p1,p2对security.user的一些权限赋予:

数据库权限分配和Mysql审计功能

 

数据库权限分配和Mysql审计功能

登录p1用户进行数据查询,且仅限于使用数据库  security!

数据库权限分配和Mysql审计功能

 

对p1用户的insert插入测试:

数据库权限分配和Mysql审计功能

(1.3)方案二

 

--  创建用户   with grant option权限表示权限可传递

grant usage on *.* to 'p1'@'localhost' identified by '123';-- 安全部门

grant usage on *.* to 'p2'@'localhost' identified by '123';-- 人力部门

grant usage on *.* to 'p3'@'localhost' identified by '123';-- 财务部门

--  grant all privileges on *.* to [email protected]'%' identified by "root";

--  赋予p1管理security数据库的权利   安全部门

grant all privileges on security.* to 'p1'@'localhost' with grant option;

--  赋予p2管理people数据库的权利    人力部门

grant all privileges on people.* to 'p2'@'localhost' with grant option;

--  赋予p3管理finance数据库的权利    财务部门

grant all privileges on finance.* to 'p3'@'localhost' with grant option;

 

创建p1,p2,p3三个部门经理,并且开放所有对应数据库下所有权限给他们。

 

 

用p1登录mysql创建user表单和role表单:

数据库权限分配和Mysql审计功能

数据库权限分配和Mysql审计功能

验证P1可以对security数据库进行任何操作,那么下面检验能否操作别的数据库:在p1用户下访问人力数据库(people)

数据库权限分配和Mysql审计功能

得到error信息:Access denied for user ‘p1’@’localhost’ to database ‘people’.

 

 

*实验2.2审计实验

(1)实验目的

掌握数据库审计的设置和管理方法,以便监控数据库操作,维护数据库安全。

(2)实验内容和要求

打开数据库审计开关。以具有审计权限的用户登陆数据库,设置审计权限,然后以普通用户登陆数据库,执行相应的数据操纵SQL语句,验证相应审计设置是否生效,最后再以具有审计权限的用户登陆数据库,查看是否存在相应的审计信息。

(3)实验重点和难点

实验重点:数据库对象级审计,数据库语句级审计

实验难点:合理地设置各种审计信息。一方面,为了保护系统重要的敏感数据,需要系统地设置各种审计信息,不能留有漏洞,以便随时监督系统使用情况,一旦出现问题,也便于追查;另一方面,审计信息设置过多,会严重影响数据库的使用性能,因此需要合理设置。

(4)实验步骤

(4.1)从网上下载得到server_audit.ddl后进行安装:(****下载:https://download.****.net/download/keq_keq/11147538

mysql< INSTALL PLUGIN server_audit SONAME 'server_audit.dll';

(4.2)配置my.ini文件来修改server_audit的配置:

数据库权限分配和Mysql审计功能

 

 

(4.3)显示audit的配置:

参数说明:

server_audit_output_type:指定日志输出类型,可为SYSLOG或FILE
server_audit_logging:启动或关闭审计
server_audit_events:指定记录事件的类型,可以用逗号分隔的多个值(connect,query,table),如果开启了查询缓存(query cache),查询直接从查询缓存返回数据,将没有table记录
server_audit_file_path:如server_audit_output_type为FILE,使用该变量设置存储日志的文件,可以指定目录,默认存放在数据目录的server_audit.log文件中
server_audit_file_rotate_size:限制日志文件的大小
server_audit_file_rotations:指定日志文件的数量,如果为0日志将从不轮转
server_audit_file_rotate_now:强制日志文件轮转
server_audit_incl_users:指定哪些用户的活动将记录,connect将不受此变量影响,该变量比server_audit_excl_users优先级高
server_audit_syslog_facility:默认为LOG_USER,指定facility
server_audit_syslog_ident:设置ident,作为每个syslog记录的一部分
server_audit_syslog_info:指定的info字符串将添加到syslog记录
server_audit_syslog_priority:定义记录日志的syslogd priority
server_audit_excl_users:该列表的用户行为将不记录,connect将不受该设置影响
server_audit_mode:标识版本,用于开发测试

数据库权限分配和Mysql审计功能

由于在配置文件中加入了:server_audit=FORCE_PLUS_PERMANENT

保证其不会被卸载:进行卸载验证:

数据库权限分配和Mysql审计功能

重启mysql之后:

数据库权限分配和Mysql审计功能

 

然后进行一些登录和查询修改操作察看是否会存储log文件。

 

存的log文件如下图所示:

数据库权限分配和Mysql审计功能