文档编写目的
CDH集群中有数据管理的组件Cloudera Navigator,本文档主要介绍这个组件的其中一个功能:审计,Cloudera Navigator审计可以从选定的集群服务收集一些事件,用户可以在控制台查看这些审计的日志,可以使用可配置的过滤器进行搜索,快速得到相关的信息,并且可以将这些信息导出为CSV或JSON文件。下面会对审计功能的使用进行一些测试。
测试环境
集群的环境为CDH6.2.0
集群服务器的OS版本为RedHat7.2
1.集群已启用Kerberos
2.集群已安装Sentry
3.Hive的用户模拟已关闭
4.HDFS ACL已开启
创建用户进行操作
1.在OS和Kerberos中创建几个用户用于测试
2.使用不同的用户访问服务,用于测试审计日志中用户的区分
使用test_hdfs_audit用户操作HDFS
- 登陆Kerberos
- 上传文件到HDFS
- 查看文件
- 删除文件
使用test_hive_audit操作Hive
- 登陆Kerberos
- beeline登陆Hive
- 建表
- 插入数据
- 查看数据
- 删除表
使用test_impala_audit操作Impala
- 登陆Kerberos
- 登陆Impala
- 建表
- 插入数据
- 查看数据
- 删除表
使用test_spark_audit操作spark
- 登陆Kerberos
- 登陆Spark
- 使用Spark
使用test_hue_audit用户登陆Hue进行操作
- 在Hue中使用Hive
建表
插入数据
查询
- 在Hue中使用Impala
更新元数据
查询
在Navigator中查看操作的审计日志
查看test_hdfs_audit用户的操作
查看test_hive_audit用户的操作
查看test_impala_audit用户的操作
查看test_spark_audit用户的操作
查看test_hue_audit用户的操作
基于Navigator的审计日志验证一些问题
5.1 HIVE/HUE查询的数据量信息的记录
例如返回行数(1000行),返回数据量(100M)等类似信息
- 在beeline命令行执行语句select * from web_returns limit 100;
- 在Navigator中查看审计日志,只能看到执行的语句,并没有返回结果的信息
- 在beeline命令行执行语句select count(*) from web_returns;
- 查看审计日志,同样的也只能查看到执行的语句,而无法查看到返回的数据信息
在Hue中使用Hive查询
查看操作对应的审计日志,与在beeline命令行操作的审计日志一致
由上面的测试可以得知,在Navigator的审计日志中无法获取Hive中查询返回的数据的详细信息,只能看到查询执行的语句以及涉及的HDFS上的目录
5.2 是否有HDFS文件操作(如上传文件),涉及到的文件的大小的记录
是否能够在日志中查看操作文件的大小
- 准备一个测试用的文件,大小为1.1G,上传到HDFS上
- 在Navigator中查看审计日志,无法查看到操作涉及到的文件的详细信息
审计日志中只记录了对文件的操作,涉及到的目录,并没有记录文件的大小等详细信息
5.3 对于越权访问是否记录
比如A用户不能访问HDFS中的security.txt,从而导致操作失败
- 使用用户test_hdfs_audit用户查看Hive的数据目录,没有权限,查看失败
- 在Navigator中查看对应的审计日志,可以看到这一步操作被记录了下来
在审计日志中用户越权访问没有权限访问的文件,这个失败的操作会被记录下来,但是无法看到该用户越权访问的目录或文件的详细信息,只能看到要访问的文件或目录名。
5.4 对于HIVE/HUE,用户越权操作是否记录
比如仅有查询权限的用户尝试创建表、低权限用户查询没有访问权限数据、查询权限的用户尝试插入数据等,是否有对应的日志
- 测试只有查询权限的用户建表
授予test_hdfs_audit组查询权限
使用test_hdfs_audit用户登陆Hive,然后建表,建表失败
查看审计日志,能够看到操作失败的日志
- 测试低权限用户查询没有访问权限的数据
授予test_hdfs_audit用户组对test库的所有权限
使用test_hdfs_audit用户登陆Hive,然后查询default库下的表web_returns,查询失败,没有权限
查看审计日志,能够看到操作失败的日志
- 测试查询权限的用户插入数据
授予test_hdfs_audit用户组查询权限
对test表插入数据,插入失败,没有权限
查看审计日志,能够查看到失败的操作的日志信息
由上面的三个测试可以看出,Navigator的审计日志里能够看到越权操作的信息,但是和之前的日志信息一样,无法看出详细的信息,只能看到当前的用户执行的语句失败了,但是并不能看到失败的原因,以及任何关于权限的信息。
5.5 日志的导出
在Navigator的Audits页面可以直接将审计日志导出
可以选择JSON和CSV两种格式,对于导出哪些属性也可以选择
CSV文件如下:
JSON文件如下:
5.6 通过API接口查询审计日志
进入API界面http://cdh1.hadoop.com:7187/api-console/index.html
填入三个必须的参数,参数query用于过滤条件,该参数支持过滤多个条件,使用分号连接,例如service=hive;table=test这样的形式,两个时间参数都是时间的毫秒数
查询结果如下:
查询的API为:
代码语言:javascript复制http://cdh1.hadoop.com:7187/api/v14/audits?query=service==hive&startTime=1567058400000&endTime=1567072581000&limit=100&offset=0&format=JSON&attachment=false
官网的Navigator API相关介绍如下:
代码语言:javascript复制http://fqdn-n.example.com:port/api/vn/operation
http://fqdn-n.example.com:port/api-console/index.html
http://fqdn-n.example.com:port/api-console/tutorial.html
将路径中的主机名换成安装Navigator服务的主机名即可
总结
1.在Navigator的审计功能中,能够记录CDH集群所有服务的信息,包括一些因为各种原因失败的操作,以及非人工即服务自身进行的操作也会被记录。
2.在文档的整个测试过程看来,除了在Spark中的操作,审计日志看不到详细的操作过程,只能看到对HDFS上的文件进行了操作,但是在其他服务中,整个操作的过程都可以完整的在审计日志中查看到。例如在HDFS上的操作,在审计日志中可以看到查看文件信息、将文件移动到回收站;在Hive上的操作,可以看到审计日志中显示的操作名称,建表、查询、删除表等;在Impala上的操作与Hive中类似,对表的操作都能够在审计日志中看到;在Hue中操作时,可以在审计日志中看到Hue中使用了哪些服务,分别做了什么操作。同时日志也支持API导出为JSON或者CSV格式。