GaussDB 数据库架构师修炼(十三)安全管理(3)-数据库审计

1 数据库审计作用

数据库审计机制主要通过对SQL操作或其他操作记录审计日志的方式 ,增强数据库系统对非法操作的追溯及举证能力 。高斯数据库提供两种审计特性 :传统审计 ,统一审计。

2 传统审计

传统审计通过GUC参数配置需要对数据库的哪些操作进行审计,并通过将审计记录写入OS文件中(即审 计日志)的方式来保存审计结果 。传统审计特性提供SQL函数接口以供审计管理员查询/删除审计记录。

3 统一审计

统一审计通过定制化审计策略来实现高效安全审计 。管理员可以对数据库中某特定对象(模式//列)打 资源标签,并针对特定资源标签过滤条件创建审计策略DDL/DML)。 当用户执行的任务符合创建的  审计策略时,则数据库会记录下相应的行为并生成审计日志。

  统一审计通过将审计记录发送至本地rsyslogElastic Search服务端来保存审计结果 。管理员可到对应的 日志存储端查看日志。

4 传统审计配置管理-审计配置项开关

传统审计可以记录用户对数据库的启停 连接 DDL DML DCL等操作,通过GUC参数开关控制对哪些操作进行审计。

1) 提供审计总开关参数audit_enabled,参数支持动态加载,在数据库运行期间修改该配置项的值会立即生效 ,无需重启数 据库 。默认值为on,表示开启审计功能。

2) 除了审计总开关,各个审计项也有对应的开关 。只有开关开启,对应的审计功能才能生效。各审计项的开关支持动态加载 。在数据库运行期间修改审计项参数的值,不需要重启数据库便可生效 。提供的审计配置项 开关见下页表格。

3) 审计总开关参数修改:

开启 

gs_guc set -Z coordinator -Z datanode -N all -I all -c "audit_enabled = on"

关闭 

​​​​​​​gs_guc set -Z coordinator -Z datanode -N all -I all -c "audit_enabled = off"

审计项修改 ,以SELECT操作审计项参数audit_dml_state_select为例:

开启SELECT操作审计:

gs_guc set -Z coordinator -Z datanode -N all -I all -c "audit_dml_state_select =  1" 

关闭SELECT操作审计:

gs_guc set -Z coordinator -Z datanode -N all -I all -c "audit_dml_state_select =  0"

 5 传统审计配置管理-审计配置项参

配置项审计开关描述默认值
用户登录、注销审计audit_login_logout表示开启用户登录、退出的审计功能。设置为0   表示关闭用户登录、退出的审计功能。不推荐设 置除0和7之外的值7
数据库启动、停止、恢复和切换审计audit_database_process表示开启数据库启动、停止、恢复和切换的审计 功能1
用户锁定和解锁审计audit_user_locked表示开启审计用户锁定和解锁功能1
用户访问越权审计audit_user_violation表示关闭用户越权操作审计功能0
授权和回收权限审计audit_grant_revoke表示开启审计用户权限授予和回收功能1
对用户操作进行全量审计full_audit_users表示采用默认配置,未配置全量审计用户空字符串
不需要审计的客户端名称及IP地址no_audit_client表示采用默认配置,未将客户端及IP加入审计黑 名单。空字符串
数据库对象的CREATE,ALTER, DROP操作审计audit_system_object表示只对DATABASE 、SCHEMA 、USER 、 DATA SOURCE 、NODE  GROUP这五类数据库对象的    CREATE 、ALTER 、DROP操作进行审计67121159
具体表的INSERT 、 UPDATE和DELETE操 作审计audit_dml_state表示关闭具体表的DML操作(SELECT除外)审计 功能0
SELECT操作审计audit_dml_state_select表示关闭SELECT操作审计功能0
COPY审计audit_copy_exec表示打开COPY操作审计功能1
存储过程和自定义函数的执行 审计audit_function_exec表示不记录存储过程和自定义函数的执行 审计日志0
SET审计audit_set_parameter表示记录SET操作审计日志1
执行白名单内的系统函数审计audit_system_function_ exec表示不记录执行系统函数的审计日志0
事务ID记录audit_xid_info表示关闭审计日志记录事务ID功能0
内部工具连接及操作审计、DN上对来自CN的登入登出审 计audit_internal_event表示不对内部工具cm_agent 、gs_clean 、 WDRXdb的登入登出及操作进行审计、 DN 上不对来自CN的登入登出进行审计off

6 传统审计-SQL函数接口

1) 用户可以通过数据库提供的SQL函数接口查看和删除审计日志。

2)查看、删除审计日志需要具有AUDIT  ADMIN属性(审计管理员)的用户或初始用户进行操作。

接口原型参数返回值使用示例
pg_query_audit(timestamptz startime,timestamptz
endtime,audit_log) ;
starttime:查看审计记录的开始时间
endtime:查看审计记录的结束时间
audit_log: 所查看的审计日志信息所在 的物理文件路径
见下表查看2024-03-06 00:00:00至2024-03-06  12:00:00时间段内audit_user用户 的SELECT操作审计记录,并按时间排序:
select * from pg_query_audit('2024-03-06 00:00:00','2024-03-06
12:00:00') where type = 'dml_action_select' and username = 'audit_user' order by time desc;
pg_delete_audit(timestamptz startime,timestamptz
endtime) ;
starttime:删除审计记录的开始时间
endtime:删除审计记录的结束时间
删除2024-03-06 00:00:00至2024-03-06  12:00:00时间段内的审计记录: select * from pg_delete_audit('2024-03-06 00:00:00','2024-03-06
12:00:00');

7 传统审计-日志管理策略

1)数据库提供配置项供用户配置审计日志的管理策略:比如审计日志存放路径等,审计记录占用空 间大小限制,审计文件个数限制,单个审计文件大小限制等,具体见下表。

2)数据库会根据审计日志管理配置项参数,对审计日志进行管理。

配置项

含义

默认值

audit_directory

审计文件的存储目录

$GAUSSLOG/pg_audit

audit_rotation_interval

创建一个新审计日志文件的时间间隔,当距离上次创建一个审计 日志的时间超过了此参数值时,将生成一个新的审计日志文件

1天

audit_rotation_size

审计日志文件的最大容量。当审计日志消息的总量超过此参数值 时,将生成一个新的审计日志文件

10MB

audit_resource_policy

审计日志的保存策略
on:表示采用空间优先策略,最多存储audit_space_limit大小的 日志。
off:表示采用时间优先策略,最少存储audit_file_remain_time 长度时间的日志

on

audit_space_limit

审计文件占用的磁盘空间总量

1GB

audit_file_remain_time

审计日志文件的最小保存时间。

90

audit_file_remain_threshold

审计目录下审计文件的最大数量

1048576

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/93501.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/93501.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言(11)—— 数组(超绝详细总结)

Hi!冒险者😎,欢迎闯入 C 语言的奇幻异世界🌌! 我是 ankleless🧑‍💻,和你一样的闯荡者~ 这是我的冒险笔记打怪升级之路——C语言之路📖,里面有踩过…

【AI生成+补充】高频 hql的面试问题 以及 具体sql

以下是高频HQL面试题及对应SQL示例,涵盖核心语法、优化技巧和典型场景,可直接用于面试准备: 一、基础操作与DDL 1. 创建分区表 & 动态插入分区 sql -- 创建外部分区表(按日期分区) CREATE EXTERNAL TABLE logs…

开源 Arkts 鸿蒙应用 开发(十七)通讯--http多文件下载

文章的目的为了记录使用Arkts 进行Harmony app 开发学习的经历。本职为嵌入式软件开发,公司安排开发app,临时学习,完成app的开发。开发流程和要点有些记忆模糊,赶紧记录,防止忘记。 相关链接: 开源 Arkts …

Cloudflare Tunnel 使用SAAS回源加速配置教程

在使用 Cloudflare Tunnel 时,通过“主域名+加速域名”的联动配置,既能隐藏内网 IP,又能优化访问速度。本文以实际部署场景为例(主域名 zhuyuming.dpdns.org、加速域名 jiasu.dpdns.org),带你一步步完成内网服务穿透(以 192.168.1.6:5555 网页服务为例),实操性强,可直…

C++实战

Ref deepwiki vuecruddllamma.cpp 目标 计划实现一个C项目,前端用vue,后端用C和llama.cpp。实现可以进行逻辑功能和AI推理。

dify 调用本地的 stable diffusion api生成图片的工作流搭建

Dify调用本地Stable Diffusion API的工作流搭建指南 核心架构 #mermaid-svg-ce029i4XFKrDzRgU {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ce029i4XFKrDzRgU .error-icon{fill:#552222;}#mermaid-svg-ce029i4XFK…

【Web后端】Django、flask及其场景——以构建系统原型为例

一、Django 和 Flask 简介 Django 是一个高级 Python Web 框架,提供了完整的“开箱即用”功能,包括 ORM、认证、管理后台等,便于快速开发安全且可维护的网站。Flask 是一个轻量级 Python Web 框架,核心功能比较简单,但…

飞算JavaAI:从智能调度到出行服务的全链路技术升级

免责声明:此文章所有内容都是实验测试数据 目录一、智慧交通核心场景的技术突破1.1 交通态势感知与智能预警系统1.2 公共交通智能调度系统1.3 一体化出行服务系统二、智慧交通系统效能升级实践2.1 交通数据中台构建结语:重新定义智慧交通技术边界一、智慧…

vscode的wsl环境,ESP32驱动0.96寸oled屏幕

注意大小写,wsl(也就是linux环境)严格区分大小写。有帮助记得订阅专栏点赞,当前不定期持续更新。 一、文件夹格式: project/ # 项目根目录 ├─ main/ # 主程序文件夹 │ ├─ mai…

CodeBuddy AI Coding 企业场景落地实践与思考

👉目录1 引言2 诊断团队研发流程3 选择合适的 AI CODING 工具4 团队 AI 研发流程落地实践5 全面 CodeBuddy ,深入 CodeBuddy6 诚邀共建在 AI 浪潮席卷全球的今天,AI CODING 已经不是企业研发团队的可选项,而是必选项。如果你是企业…

windows下hashcat使用gpu破解execl打开密码

需要的软件 1.hashcat :https://hashcat.net 2.john the ripper :https://www.openwall.com 获取execl加密文件的Hash PS G:\dl\john-1.9.0-jumbo-1-win64\john-1.9.0-jumbo-1-win64\run> python .\office2john.py .\test6.xlsx test6.xlsx:$office$*…

SpringCloud -- Nacos详细介绍

5. Nacos 5.1 Nacos介绍 Nacos 可以理解为微服务的“电话簿 遥控器”。它是阿里巴巴开源的一个核心工具,主要解决微服务架构中的两大问题: 5.1.1 服务注册与发现(电话簿) 服务注册:当某个微服务(比如“订单…

【狂热算法篇】探寻图论幽径之SPFA算法:图论迷宫里的闪电寻径者(通俗易懂版)

​​​​​本篇带大家探究的是SPFA算法;从基本理解,画图分析展示,再到最后的代码实现,以及为何要这样实现代码,等一些细节问题做解释,相关题型应用,非常值得哟,尤其是刚入门的小白学…

webrtc网页一对一通话

基于flutter-webrtc-server做的更改,只使用网页实现语音和视频一对一通话,不支持多对多。 项目地址: https://github.com/chging/rtc-server

Java调用bat执行python脚本

1、问题概述?在windows环境中可以通过Java调用bat执行文件,从而调用python脚本,使用起来方便。2、实现方式?2.1、核心代码bat文件可以在任意位置//获取文件在项目中的文职 String batFilePathSystem.getProperty("user.dir&q…

JavaWeb 欢迎页设置详解

JavaWeb 欢迎页设置详解 欢迎页&#xff08;Welcome Page&#xff09;是用户访问 Web 应用根目录时自动展示的默认页面。在 JavaWeb 中有多种配置方式&#xff1a;一、配置方式 1. 通过 web.xml 配置&#xff08;传统方式&#xff09; <web-app><!-- 配置欢迎页列表 -…

反射和类加载机制

一 类加载机制 1.1 加载机制简介 Java程序从编写到运行这个过程大致可以分为两个阶段&#xff1a;编译阶段和运行阶段。 编译阶段指的是&#xff0c;java源代码文件**(*.java)被java编译器&#xff08;javac&#xff09;编译成字节码文件(*.class)**的过程。这个过程不需要直接…

在CentOS 7 上安装 MySQL 数据库

文章目录前言一、使用官方 MySQL 仓库安装 MySQL1.1 下载并安装 MySQL 官方 YUM 仓库1.2 安装 MySQL YUM 仓库1.3 安装 MySQL1.3.1 补充&#xff1a;1.4 启动 MySQL 服务1.5 设置 MySQL 服务开机启动1.6 获取临时 root 密码1.7 配置 MySQL1.7.1 注意事项1.8 完成安装二、使用默…

Linux:套接字

从进程的视角来看&#xff0c;网络通信就是一个主机上的进程和另外一个主机上的进程进行信息传递&#xff0c;因此对于操作系统而言&#xff0c;网络通信就是一种进程间通信的方式。不过这种进程间通信有特殊之处&#xff1a;同一台主机下可以通过进程ID来标识一个唯一的进程&a…

Android init.rc详解3

关于Android Init的详解&#xff0c;关于Action&#xff0c;Service&#xff0c;Trigger的请参考Android init.rc详解1&#xff0c;关于Options的请参考Android init.rc详解2&#xff0c;本章将介绍常见的Commands。 1 Commands bootchart [start|stop] 启动或停止bootcharti…