二、审计可以分为3类。
成都创新互联是一家专注于网站设计制作、成都做网站与策划设计,沙河网站建设哪家好?成都创新互联做网站,专注于网站建设10余年,网设计领域的专业建站公司;建站业务涵盖:沙河等地区。沙河做网站价格咨询:13518219792
或者说,可以从3种角度去启用审计。
1、语句审计(Statement Auditing)。
对预先指定的某些SQL语句进行审计。这里从SQL语句的角度出发,进行指定。审计只关心执行的语句。
例如,audit CREATE TABLE;命令,就表明对"create table"语句的执行进行记录。 不管这语句是否是针对某个对象的操作
2、权限审计(Privilege Auditing)
对涉及某些权限的操作进行审计。这里强调“涉及权限”
例如,audit CREATE TABLE;命令,又可以表明对涉及“CREATE TABLE”权限的操作进行审计。
所以说,在这种命令的情况下,既产生一个语句审计,又产生了一个权限审计。
有时候“语句审计”和“敞氦搬教植寄邦犀鲍篓权限审计”的相互重复的。这一点可以后面证明。
3、对象审计(Object Auditing)。 记录作用在指定对象上的操作。
将audit_enabled参数设置为on,即可开启审计功能。该审计总开关持动态加载。在数据库运行期间修改该配置项的值会立即生效,无需重启数据库。
mysql服务器自身没有提供审计功能,但是我们可以使用init-connect+binlog的方法进行mysql的操作审计。由于mysqlbinlog记录了所有对数据库长生实际修改的sql语句,及其执行时间,和connection_id但是却没有记录connection_id对应的详细用户信息。在后期审计进行行为追踪时,根据binlog记录的行为及对应的connection-id结合之前连接日志记录进行分析,得出最后的结论。1.设置init-connect1.1创建用于存放连接日志的数据库和表createdatabaseaccesslog;CREATETABLEaccesslog.accesslog(`id`int(11)primarykeyauto_increment,`time`timestamp,`localname`varchar(30),`matchname`varchar(30))1.2创建用户权限可用现成的root用户用于信息的读取grantselectonaccesslog.*toroot;如果存在具有to*.*权限的用户需要进行限制。这里还需要注意用户必须对accesslog表具有insert权限grantselectonaccesslog.*touser@’%’;1.3设置init-connect在[mysqld]下添加以下设置:init-connect=’insertintoaccesslog.accesslog(id,time,localname,matchname)values(connection_id(),now(),user(),current_user());’------注意user()和current_user()的区别log-bin=xxx这里必须开启binlog1.4重启数据库生效shell/etc/init.d/mysqlrestart2.记录追踪2.1thread_id确认可以用以下语句定位语句执行人Tencent:~#mysqlbinlog--start-datetime='2011-01-2616:00:00'--stop-datetime='2011-01-2617:00:00'/var/lib/mysql/mysql-bin.000010|grep-B5'wsj'COMMIT/*!*/;#at767#11012616:16:43serverid1end_log_pos872Querythread_id=19exec_time=0error_code=0usetest/*!*/;SETTIMESTAMP=1296029803/*!*/;createtablewsj(idintunsignednotnull)--BEGIN/*!*/;#at940#11012616:16:57serverid1end_log_pos1033Querythread_id=19exec_time=0error_code=0SETTIMESTAMP=1296029817/*!*/;insertintowsj(id)values(1)--BEGIN/*!*/;#at1128#11012616:16:58serverid1end_log_pos1221Querythread_id=19exec_time=0error_code=0SETTIMESTAMP=1296029818/*!*/;insertintowsj(id)values(2)2.2用户确认thread_id确认以后,找到元凶就只是一条sql语句的问题了。mysqlselect*fromaccesslogwhereid=19;+----+---------------------+---------------------+-----------+|id|time|localname|matchname|+----+---------------------+---------------------+-----------+|19|2011-01-2616:15:54|test@10.163.164.216|test@%|+----+---------------------+---------------------+-----------+1rowinset(0.00sec)
sql ser2005怎么开启用户操作审计
: 语法 create server audit [Audit_Name] to file (filepath=N'c:\aa\') 必须是在master数据库执行
多记录,通过modifydate来记录操作时间,然后原记录保留,增加新记录
比如
2014-01-01 001 张三 未婚
2014-03-01 001 张三 已婚
2014-02-01 002 李四 未婚
或者干脆再弄一个表记log
在kubernetes集群中,API Server是操作集群资源的入口,API server的审计功能可以记录每个到达的请求,进而可以帮助集群管理人员记录或者追溯不同用户的日常操作。记录的信息可以包括但不限于以下信息。
API Server的处理包括很多个步骤,认证、限流、鉴权、跨域处理、webhook、审计处理,真正的处理单元、回复响应等等。审计功能是API Server请求处理流水线上的一环,是对API Sever能力的扩展。
如上图所示,审计可以发生在三个位置,其中RequestReceived表示审计单元接受到请求,未将请求下发到下一级流水线单元之前;ResponseComplete表示API Server已经回复了响应body之后; ResponseStarted表示回复了响应头,但未回复响应body之前,只用于long-runtime的请求,如log,watch,exec等。
审计可以通过两种方式记录请求,log和webhook,log是指将请求记录到本地的文件系统,webhook是指将请求记录发送到外部api去处理。
在生产实践中,请求也是可以分优先级的,如configmap的list请求,显然是没有必要将configmap的所有内容都记录下来的。所以对于每一个请求,可以配置不同的审计策略,如None表示不记录该请求,Metadata表示只记录该请求的元信息,其中元信息是指请求的User,URI,类型等等。
审计功能的特性在API Server中默认是开启的,但不配置审计后端,则无法进行日志记录。
审计相关的配置项是直接配置在API Server的命令行参数中的,多达28项。因此这里需要先将功能梳理请求,才能理解这28个配置项。这里以后端日志记录log为例,首先日志要记录到什么地方,随着日志的写入,日志文件的大小逐渐增大,是否要将文件进行拆分,保留多少份拆分日志文件,拆分的日志文件是否要压缩,为了日志文件不占用过多的磁盘资源,需要对旧的日志文件进行清理,这就涉及到日志文件最多保留多少天。 审计单元的处理是否要处理完成后,再将请求移交到到下一步的流水线单元中进行处理,这个就涉及到是否阻塞API Server。
假如log模式设置为batch,就表示要积累一定数量的请求,然后一次性写入,这就涉及到batch相关的配置
假如单个请求的大小过大,是否要对请求进行拆分,这就涉及到truncate相关的配置。
在下图中,将配置项分为3类,通用配置,batch类配置和truncate类配置(未写出webhook类型的配置)。
审计策略
审计功能提供了非常灵活的策略项配置。配置策略的目的就是要精细化得对请求做日志记录,重要的请求,记录的信息要全一些,如create,delete请求,非关键性的请求,可以少记录一些,如leases请求。
审计策略中重要的字段如下 :
下面的配置是在官方审计示例策略的基础上增加了一些配置。
以下是阿里产品文档给的一些示例配置信息
经过上面的分析,审计功能是API Server处理请求流水线的一环,增加审计功能,会增加API Server的内存消耗(官方文档明确写出的),另外log模式配置为默认值blocking的话,会略微增加API Server的响应延迟,所以这里建议使用batch模式。