在Hive中,我们可以使用以下方式进行数据审计操作:
- 配置审计日志:
- 在Hive-site.xml中配置hive.server2.logging.operation.level参数开启OPERATION日志。
- 这可以记录用户在Hive中执行的SQL语句及操作,实现数据访问审计。
例如:
在Hive-site.xml中设置:
<property>
<name>hive.server2.logging.operation.level</name>
<value>EXECUTION</value>
</property>
开启OPERATION日志审计。
- 查看历史SQL:
- 使用HISTORY命令可以查看当前会话的历史SQL语句。
- 这可以查看某个用户访问Hive的完整SQL记录,实现数据访问审计。
例如: 在Hive CLI中输入
HISTORY;
可以查看当前会话执行的全部历史SQL语句。
- 配置审计事件:
- 使用HIVE_AUDIT_EVENT表记录指定事件类型的审计日志。
- 这需要在Hive创建HIVE_AUDIT_EVENT表,并设置hive.exec.post.hooks 属性指定审计事件。
例如:
CREATE TABLE HIVE_AUDIT_EVENT(
...
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'; -- 设置日志格式
在Hive-site.xml中设置:
<property>
<name>hive.exec.post.hooks</name>
<value>org.apache.hadoop.hive.ql.hooks.HiveEventLogger</value>
</property>
启动指定事件类型的审计日志记录到HIVE_AUDIT_EVENT表。
- 配置SQL标准验证:
- 使用SQL 标准验证可以拒绝不规范的SQL访问,实现SQL注入防护。
- 这需要设置 hive.server2.enable.doAs 和 hive.server2.session.check.schema.whitelist 属性启用SQL标准验证。
例如:
在Hive-site.xml中设置:
<property>
<name>hive.server2.enable.doAs</name>
<value>true</value>
</property>
<property>
<name>hive.server2.session.check.schema.whitelist</name>
<value>db1,db2</value>
</property>
只允许db1和db2数据库的SCHEMA访问,拒绝不在白名单的SQL访问。