Jindo AuditLog提供缓存和Block模式的审计功能,记录Namespace端的增加、删除和重命名操作信息。

前提条件

背景信息

AuditLog可以分析Namespace端访问信息、发现异常请求和追踪错误等。JindoFS AuditLog存储日志文件至OSS,单个Log文件不超过5 GB。基于OSS的生命周期策略,您可以自定义日志文件的保留天数和清理策略等。因为JindoFS AuditLog提供分析功能,所以您可以通过Shell命令分析指定的日志文件。

审计信息

Block模式记录的审计信息参数如下所示。
参数 描述
时间 时间格式yyyy-MM-dd hh:mm:ss.SSS。
allowed 本次操作是否被允许,取值如下:
  • true
  • false
ugi 操作用户(包含认证方式信息)。
ip Client IP。
ns Block模式namespace的名称。
cmd 操作命令。
src 源路径。
dest 目标路径,可以为空。
perm 操作文件Permission信息。
审计信息示例。
2020-07-09 18:29:24.689 allowed=true ugi=hadoop (auth:SIMPLE) ip=127.0.0.1 ns=test-block cmd=CreateFileletRequest src=jfs://test-block/test/test.snappy.parquet dst=null perm=::rwxrwxr-x

使用AuditLog

  1. 进入SmartData服务。
    1. 登录阿里云E-MapReduce控制台
    2. 在顶部菜单栏处,根据实际情况选择地域和资源组
    3. 单击上方的集群管理页签。
    4. 集群管理页面,单击相应集群所在行的详情
    5. 在左侧导航栏,选择集群服务 > SmartData
  2. 进入namespace服务配置。
    1. 单击配置页签。
    2. 单击namespace
      namespace
  3. 配置如下参数。
    1. namespace页签,单击右上角的自定义配置
    2. 新增配置项对话框中,新增如下参数。
      参数 描述 是否必填
      jfs.namespaces.{ns}.auditlog.enable 打开指定namespaces的AuditLog开关,取值如下:
      • true:打开AuditLog功能。
      • false:关闭AuditLog功能。
      namespace.sysinfo.oss.uri 存储AuditLog的OSS Bucket。

      请参见oss://<yourbucket>/auditLog格式配置。

      <yourbucket>请替换为待存储的Bucket的名称。

      namespace.sysinfo.oss.access.key 存储OSS的AccessKey ID。
      namespace.sysinfo.oss.access.secret 存储OSS的AccessKey Secret。
      namespace.sysinfo.oss.endpoint 存储OSS的Endpoint。
    3. 单击部署客户端配置
    4. 执行集群操作对话框中,输入执行原因,单击确定
    5. 确认对话框中,单击确定
  4. 重启服务。
    1. 单击右上角的操作 > 重启Jindo Namespace Service
    2. 执行集群操作对话框中,输入执行原因,单击确定
    3. 确认对话框中,单击确定
  5. 配置清理策略。
    OSS提供了lifeCycle功能来管理OSS上文件的生命周期,您可以利用该功能来自定义Log文件的清理或者保存时间。
    1. 登录 OSS管理控制台
    2. 单击创建的存储空间。
    3. 在左侧导航栏,单击基础设置 > 生命周期,在生命周期单击设置
    4. 单击创建规则,在创建生命周期规则配置各项参数。
    5. 单击确定

使用Jindo AuditLog分析功能

JindoFS为存储在OSS上的AuditLog文件提供SQL的分析功能,通过SQL分析相关表,提供Top-N活跃操作命令分析和Top-N活跃IP分析。您可以使用jindo sql命令,使用该功能。

jindo sql使用Spark-SQL语法,内部嵌入了audit_log_source(auditlog原始数据)、audit_log(auditlog清洗后数据)和fs_image(fsimage日志数据)三个表,audit_log_source和fs_image均为分区表。使用方法如下:
  • jindo sql --help查看支持参数的详细信息。常用参数如下。
    参数 描述
    -f 指定运行的SQL文件。
    -i 启动jindo sql后自动运行初始化SQL脚本。
  • show partitions table_name获取所有分区。
  • desc formatted table_name查看表结构。
因为Jindo sql基于Spark的程序,所以初始资源可能较小,您可以通过环境变量JINDO_SPARK_OPTS来修改初始资源Jindo sql的启动参数,修改示例如下。
 export JINDO_SPARK_OPTS="--conf spark.driver.memory=4G --conf spark.executor.instances=20 --conf spark.executor.cores=5 --conf spark.executor.memory=20G"
示例如下:
  • 执行如下命令显示表。
    show tables;
    show_table
  • 执行如下命令显示分区。
    show partitions audit_log_source;
    返回信息类似如下。show_audit_log_source
  • 执行如下查询数据。
    select * from audit_log_source limit 10;
    返回信息类似如下。audit_log_source
    select * from audit_log limit 10;
    返回信息类似如下。audit_log
  • 执行如下命令统计2020-10-20日不同命令的使用频次。rate