云服务器内容精选

  • 背景信息 只有拥有AUDITADMIN属性的用户才可以查看审计记录。有关数据库用户及创建用户的办法请参见用户。 审计查询命令是数据库提供的sql函数pg_query_audit,其原型为: pg_query_audit(timestamptz startime,timestamptz endtime,audit_log) 参数startime和endtime分别表示审计记录的开始时间和结束时间,audit_log表示所查看的审计日志信息所在的物理文件路径,当不指定audit_log时,默认查看连接当前实例的审计日志信息。 通过sql函数pgxc_query_audit可以查询所有CN节点的审计日志,其原型为: pgxc_query_audit(timestamptz startime,timestamptz endtime) startime和endtime的差值代表要查询的时间段,其有效值为从startime日期中的00:00:00开始到endtime日期中的23:59:59之间的任何值。请正确指定这两个参数,否则将查不到需要的审计信息。
  • 操作步骤 连接数据库。 查询审计记录。 1 postgres=# SELECT * FROM pg_query_audit('2021-03-03 21:30:00', '2021-03-03 22:00:00') where type = 'login_success' and username = 'user1'; 查询结果如下: time | type | result | userid | username | database | client_conninfo | object_name | detail_info | node_name | thread_id | local_port | remote_port ------------------------+---------------+--------+--------+----------+----------+-----------------+-------------+------------------------------------------------------+-----------+-- -------------------------------+------------+------------- 2021-03-03 21:30:31+08 | login_success | ok | 16398 | user1 | postgres | gsql@[local] | postgres | login db(postgres) success,the current user is:user1 | cn_5001 | 1 39634608699136@668093431256149 | 18000 | null (1 row) 该条记录表明,用户user1在2021-03-03 21:30:31+08登录数据库postgres。其中client_conninfo字段在log_hostname启动且IP连接时,字符@后显示反向DNS查找得到的主机名。 查询所有CN节点审计记录。 1 postgres=# SELECT * FROM pgxc_query_audit('2021-03-03 21:30:00', '2021-03-03 22:00:00') where type = 'login_success' and username = 'user1'; 查询结果如下: time | type | result | userid | username | database | client_conninfo | object_name | detail_info | node_name | thread_id | local_port | remote_port ------------------------+---------------+--------+--------+----------+----------+-----------------+-------------+------------------------------------------------------+-----------+-- -------------------------------+------------+------------- 2021-03-03 21:30:31+08 | login_success | ok | 16398 | user1 | postgres | gsql@[local] | postgres | login db(postgres) success,the current user is:user1 | cn_5001 | 1 39634608699136@668093431256149 | 18000 | null 2021-03-03 21:36:09+08 | login_success | ok | 16398 | user1 | postgres | gsql@[local] | postgres | login db(postgres) success,the current user is:user1 | cn_5003 | 1 39779716937472@668093769836394 | 18000 | null (2 rows) 查询结果显示,用户user1在cn_5001和cn_5003的成功登录记录。
  • 操作步骤 连接数据库。 检查审计总开关状态。 用show命令显示审计总开关audit_enabled的值。 1 postgres=# SHOW audit_enabled; on表示开启审计,off表示关闭审计。 配置具体的审计项。 只有开启审计功能,用户的操作才会被记录到审计文件中。 各审计项的默认参数都符合安全标准,用户可以根据需要开启其他审计功能,但会对性能有一定影响。 可以参考用户指南修改audit_system_object的参数值,其中audit_system_object代表审计项开关,12295为该审计开关的值。不当修改该参数会导致丢失DDL审计日志,请在客服人员指导下进行修改。
  • 背景信息 数据库安全对数据库系统来说至关重要。 GaussDB 将用户对数据库的所有操作写入审计日志。数据库安全管理员可以利用这些日志信息,重现导致数据库现状的一系列事件,找出非法操作的用户、时间和内容等。 关于审计功能,用户需要了解以下几点内容: 审计总开关audit_enabled支持动态加载。在数据库运行期间修改该配置项的值会立即生效,无需重启数据库。默认值为on,表示开启审计功能。 除了审计总开关,各个审计项也有对应的开关。只有开关开启,对应的审计功能才能生效。 各审计项的开关支持动态加载。在数据库运行期间修改审计开关的值,不需要重启数据库便可生效。 目前,GaussDB支持以下审计项如表1所示,详细说明请参见链接中GUC参数说明章节的具体参数。 表1 配置审计 项 配置项 描述 用户登录、注销审计 参数:audit_login_logout 默认值为7,表示开启用户登录、退出的审计功能。设置为0表示关闭用户登录、退出的审计功能。不推荐设置除0和7之外的值。 数据库启动、停止、恢复和切换审计 参数:audit_database_process 默认值为1,表示开启数据库启动、停止、恢复和切换的审计功能。 用户锁定和解锁审计 参数:audit_user_locked 默认值为1,表示开启审计用户锁定和解锁功能。 用户访问越权审计 参数:audit_user_violation 默认值为0,表示关闭用户越权操作审计功能。 授权和回收权限审计 参数:audit_grant_revoke 默认值为1,表示开启审计用户权限授予和回收功能。 数据库对象的CREATE,ALTER,DROP操作审计 参数:audit_system_object 默认值为12295,表示只对DATABASE、SCHEMA、USER、DATA SOURCE、NODE GROUP这五类数据库对象的CREATE、ALTER、DROP操作进行审计。 具体表的INSERT、UPDATE和DELETE操作审计 参数:audit_dml_state 默认值为0,表示关闭具体表的DML操作(SELECT除外)审计功能。 SELECT操作审计 参数:audit_dml_state_select 默认值为0,表示关闭SELECT操作审计功能。 COPY审计 参数:audit_copy_exec 默认值为1,表示打开copy操作审计功能。 存储过程和自定义函数的执行审计 参数:audit_function_exec 默认值为0,表示不记录存储过程和自定义函数的执行审计日志。 SET审计 参数:audit_set_parameter 默认值为1,表示记录set操作审计日志 安全相关参数及默认值请参见表2。 表2 安全相关参数及默认值 参数名 默认值 说明 ssl on 指定是否启用SSL连接。 require_ssl off 指定服务器端是否强制要求SSL连接。 ssl_ciphers ALL 指定SSL支持的加密算法列表。 ssl_cert_file server.crt 指定包含SSL服务器证书的文件的名称。 ssl_key_file server.key 指定包含SSL私钥的文件名称。 ssl_ca_file cacert.pem 指定包含CA信息的文件的名称。 ssl_crl_file NULL 指定包含CRL信息的文件的名称。 ssl_cert_notify_time 90 SSL服务器证书到期前提醒的天数。 password_policy 1 指定是否进行密码复杂度检查。 password_reuse_time 0 指定是否对新密码进行可重用天数检查。 password_reuse_max 0 指定是否对新密码进行可重用次数检查。 password_lock_time 1 指定帐户被锁定后自动解锁的时间。 failed_login_attempts 10 如果输入密码错误的次数达到此参数值时,当前帐户被锁定。 password_encryption_type 2 指定采用何种加密方式对用户密码进行加密存储。 password_min_uppercase 0 密码中至少需要包含大写字母的个数。 password_min_lowercase 0 密码中至少需要包含小写字母的个数。 password_min_digital 0 密码中至少需要包含数字的个数。 password_min_special 0 密码中至少需要包含特殊字符的个数。 password_min_length 8 密码的最小长度。 说明: 在设置此参数时,请将其设置成不大于password_max_length,否则进行涉及密码的操作会一直出现密码长度错误的提示 password_max_length 32 密码的最大长度。 说明: 在设置此参数时,请将其设置成不小于password_min_length,否则进行涉及密码的操作会一直出现密码长度错误的提示。 password_effect_time 90 密码的有效期限。 password_notify_time 7 密码到期提醒的天数。 audit_enabled on 控制审计进程的开启和关闭。 audit_directory pg_audit 审计文件的存储目录。 audit_data_format binary 审计日志文件的格式,当前仅支持二进制格式(binary)。 audit_rotation_interval 1d 指定创建一个新审计日志文件的时间间隔。当现在的时间减去上次创建一个审计日志的时间超过了此参数值时,服务器将生成一个新的审计日志文件。 audit_rotation_size 10MB 指定审计日志文件的最大容量。当审计日志消息的总量超过此参数值时,服务器将生成一个新的审计日志文件。 audit_resource_policy on 控制审计日志的保存策略,以空间还是时间限制为优先策略,on表示以空间为优先策略。 audit_file_remain_time 90 表示需记录审计日志的最短时间要求,该参数在audit_resource_policy为off时生效。 audit_space_limit 1GB 审计文件占用磁盘空间的最大值。 audit_file_remain_threshold 1048576 审计目录下审计文件的最大数量。 audit_login_logout 7 指定是否审计数据库用户的登录(包括登录成功和登录失败)、注销。 audit_database_process 1 指定是否审计数据库启动、停止、切换和恢复的操作。 audit_user_locked 1 指定是否审计数据库用户的锁定和解锁。 audit_user_violation 0 指定是否审计数据库用户的越权访问操作。 audit_grant_revoke 1 指定是否审计数据库用户权限授予和回收的操作。 audit_system_object 12295 指定是否审计数据库对象的CREATE、DROP、ALTER操作。 audit_dml_state 0 指定是否审计具体表的INSERT、UPDATE、DELETE操作。 audit_dml_state_select 0 指定是否审计SELECT操作。 audit_copy_exec 1 指定是否审计COPY操作。 audit_function_exec 0 指定在执行存储过程、匿名块或自定义函数(不包括系统自带函数)时是否记录审计信息。 audit_set_parameter 1 指定是否审计SET操作。 enableSeparationOfDuty off 指定是否开启三权分立。 session_timeout 10min 建立连接会话后,如果超过此参数的设置时间,则会自动断开连接。 auth_iteration_count 10000 认证加密信息生成过程中使用的迭代次数。
  • 操作步骤 参考连接数据库,连接数据库。 选择日志维护方式进行维护。 设置自动删除审计日志 审计文件占用的磁盘空间或者审计文件的个数超过指定的最大值时,系统将删除最早的审计文件,并记录审计文件删除信息到审计日志中。 审计文件占用的磁盘空间大小默认值为1024MB,用户可以根据磁盘空间大小重新设置参数。 配置审计文件占用磁盘空间的大小(audit_space_limit)。 配置审计文件个数的最大值(audit_file_remain_threshold)。 手动备份审计文件 当审计文件占用的磁盘空间或者审计文件的个数超过配置文件指定的值时,系统将会自动删除较早的审计文件,因此建议用户周期性地对比较重要的审计日志进行保存。 使用show命令获得审计文件所在目录(audit_directory)。 1 openGauss=# SHOW audit_directory; 将审计目录整个拷贝出来进行保存。 手动删除审计日志 当不再需要某时段的审计记录时,可以使用审计接口命令pg_delete_audit进行手动删除。 以删除2012/9/20到2012/9/21之间的审计记录为例: 1 openGauss=# SELECT pg_delete_audit('2012-09-20 00:00:00','2012-09-21 23:59:59');
  • 背景信息 与审计日志相关的配置参数及其含义请参见表1。 表1 审计日志相关配置参数 配置项 含义 默认值 audit_directory 审计文件的存储目录。 $GAUSS LOG /pg_audit audit_resource_policy 审计日志的保存策略。 on(表示使用空间配置策略) audit_space_limit 审计文件占用的磁盘空间总量。 1GB audit_file_remain_time 审计日志文件的最小保存时间。 90 audit_file_remain_threshold 审计目录下审计文件的最大数量。 1048576 审计日志删除命令为数据库提供的sql函数pg_delete_audit,其原型为: pg_delete_audit(timestamp startime,timestamp endtime) 其中参数startime和endtime分别表示审计记录的开始时间和结束时间。 目前常用的记录审计内容的方式有两种:记录到数据库的表中、记录到OS文件中。这两种方式的优缺点比较如表2所示。 表2 审计日志保存方式比较 方式 优点 缺点 记录到表中 不需要用户维护审计日志。 由于表是数据库的对象,如果一个数据库用户具有一定的权限,就能够访问到审计表。如果该用户非法操作审计表,审计记录的准确性难以得到保证。 记录到OS文件中 比较安全,即使一个帐户可以访问数据库,但不一定有访问OS这个文件的权限。 需要用户维护审计日志。 从数据库安全角度出发,GaussDB采用记录到OS文件的方式来保存审计结果,保证了审计结果的可靠性。
  • 背景信息 与审计日志相关的配置参数及其含义请参见表1。 表1 审计日志相关配置参数 配置项 含义 默认值 audit_directory 审计文件的存储目录。 $GAUSSLOG/pg_audit audit_resource_policy 审计日志的保存策略。 on(表示使用空间配置策略) audit_space_limit 审计文件占用的磁盘空间总量。 1GB audit_file_remain_time 审计日志文件的最小保存时间。 90 audit_file_remain_threshold 审计目录下审计文件的最大数量。 1048576 如果使用gs_om工具部署集群,则审计日志路径为“$GAUSSLOG/pg_audit”。 审计日志删除命令为数据库提供的sql函数pg_delete_audit,其原型为: pg_delete_audit(timestamp startime,timestamp endtime) 其中参数startime和endtime分别表示审计记录的开始时间和结束时间。 目前常用的记录审计内容的方式有两种:记录到数据库的表中、记录到OS文件中。这两种方式的优缺点比较如表2所示。 表2 审计日志保存方式比较 方式 优点 缺点 记录到表中 不需要用户维护审计日志。 由于表是数据库的对象,如果一个数据库用户具有一定的权限,就能够访问到审计表。如果该用户非法操作审计表,审计记录的准确性难以得到保证。 记录到OS文件中 比较安全,即使一个帐户可以访问数据库,但不一定有访问OS这个文件的权限。 需要用户维护审计日志。 从数据库安全角度出发,GaussDB采用记录到OS文件的方式来保存审计结果,保证了审计结果的可靠性。
  • 操作步骤 参考连接数据库,连接数据库。 选择日志维护方式进行维护。 设置自动删除审计日志 审计文件占用的磁盘空间或者审计文件的个数超过指定的最大值时,系统将删除最早的审计文件,并记录审计文件删除信息到审计日志中。 审计文件占用的磁盘空间大小默认值为1024MB,用户可以根据磁盘空间大小重新设置参数。 配置审计文件占用磁盘空间的大小(audit_space_limit)。 配置审计文件个数的最大值(audit_file_remain_threshold)。 手动备份审计文件 当审计文件占用的磁盘空间或者审计文件的个数超过配置文件指定的值时,系统将会自动删除较早的审计文件,因此建议用户周期性地对比较重要的审计日志进行保存。 使用show命令获得审计文件所在目录(audit_directory)。 1 openGauss=# SHOW audit_directory; 将审计目录整个拷贝出来进行保存。 手动删除审计日志 当不再需要某时段的审计记录时,可以使用审计接口命令pg_delete_audit进行手动删除。 以删除2020/9/20到2020/9/21之间的审计记录为例: 1 openGauss=# SELECT pg_delete_audit('2020-09-20 00:00:00','2020-09-21 23:59:59');
  • 背景信息 数据库安全对数据库系统来说至关重要。GaussDB将用户对数据库的所有操作写入审计日志。数据库安全管理员可以利用这些日志信息,重现导致数据库现状的一系列事件,找出非法操作的用户、时间和内容等。 关于审计功能,用户需要了解以下几点内容: 审计总开关audit_enabled支持动态加载。在数据库运行期间修改该配置项的值会立即生效,无需重启数据库。默认值为on,表示开启审计功能。 除了审计总开关,各个审计项也有对应的开关。只有开关开启,对应的审计功能才能生效。 各审计项的开关支持动态加载。在数据库运行期间修改审计开关的值,不需要重启数据库便可生效。 目前,GaussDB支持以下审计项如表1所示,详细说明请参见链接中GUC参数说明章节的具体参数。 表1 配置审计项 配置项 描述 用户登录、注销审计 参数:audit_login_logout 默认值为7,表示开启用户登录、退出的审计功能。设置为0表示关闭用户登录、退出的审计功能。不推荐设置除0和7之外的值。 数据库启动、停止、恢复和切换审计 参数:audit_database_process 默认值为1,表示开启数据库启动、停止、恢复和切换的审计功能。 用户锁定和解锁审计 参数:audit_user_locked 默认值为1,表示开启审计用户锁定和解锁功能。 用户访问越权审计 参数:audit_user_violation 默认值为0,表示关闭用户越权操作审计功能。 授权和回收权限审计 参数:audit_grant_revoke 默认值为1,表示开启审计用户权限授予和回收功能。 数据库对象的CREATE,ALTER,DROP操作审计 参数:audit_system_object 默认值为67121159,表示只对DATABASE、SCHEMA、USER、DATA SOURCE、NODE GROUP这五类数据库对象的CREATE、ALTER、DROP操作进行审计。 具体表的INSERT、UPDATE和DELETE操作审计 参数:audit_dml_state 默认值为0,表示关闭具体表的DML操作(SELECT除外)审计功能。 SELECT操作审计 参数:audit_dml_state_select 默认值为0,表示关闭SELECT操作审计功能。 COPY审计 参数:audit_copy_exec 默认值为1,表示打开copy操作审计功能。 存储过程和自定义函数的执行审计 参数:audit_function_exec 默认值为0,表示不记录存储过程和自定义函数的执行审计日志。 SET审计 参数:audit_set_parameter 默认值为0,表示不记录set操作审计日志 事务ID记录 参数:audit_xid_info 默认值为0,表示关闭审计日志记录事务ID功能。 安全相关参数及说明请参见表2。 表2 安全相关参数及说明 参数名 说明 ssl 指定是否启用SSL连接。 require_ssl 指定服务器端是否强制要求SSL连接。 ssl_ciphers 指定SSL支持的加密算法列表。 ssl_cert_file 指定包含SSL服务器证书的文件的名称。 ssl_key_file 指定包含SSL私钥的文件名称。 ssl_ca_file 指定包含CA信息的文件的名称。 ssl_crl_file 指定包含CRL信息的文件的名称。 ssl_cert_notify_time SSL服务器证书到期前提醒的天数。 password_policy 指定是否进行密码复杂度检查。 password_reuse_time 指定是否对新密码进行可重用天数检查。 password_reuse_max 指定是否对新密码进行可重用次数检查。 password_lock_time 指定帐户被锁定后自动解锁的时间。 failed_login_attempts 如果输入密码错误的次数达到此参数值时,当前帐户被锁定。 password_encryption_type 指定采用何种加密方式对用户密码进行加密存储。 password_min_uppercase 密码中至少需要包含大写字母的个数。 password_min_lowercase 密码中至少需要包含小写字母的个数。 password_min_digital 密码中至少需要包含数字的个数。 password_min_special 密码中至少需要包含特殊字符的个数。 password_min_length 密码的最小长度。 说明: 在设置此参数时,请将其设置成不大于password_max_length,否则进行涉及密码的操作会一直出现密码长度错误的提示 password_max_length 密码的最大长度。 说明: 在设置此参数时,请将其设置成不小于password_min_length,否则进行涉及密码的操作会一直出现密码长度错误的提示。 password_effect_time 密码的有效期限。 password_notify_time 密码到期提醒的天数。 audit_enabled 控制审计进程的开启和关闭。 audit_directory 审计文件的存储目录。 audit_data_format 审计日志文件的格式,当前仅支持二进制格式(binary)。 audit_rotation_interval 指定创建一个新审计日志文件的时间间隔。当现在的时间减去上次创建一个审计日志的时间超过了此参数值时,服务器将生成一个新的审计日志文件。 audit_rotation_size 指定审计日志文件的最大容量。当审计日志消息的总量超过此参数值时,服务器将生成一个新的审计日志文件。 audit_resource_policy 控制审计日志的保存策略,以空间还是时间限制为优先策略,on表示以空间为优先策略。 audit_file_remain_time 表示需记录审计日志的最短时间要求,该参数在audit_resource_policy为off时生效。 audit_space_limit 审计文件占用磁盘空间的最大值。 audit_file_remain_threshold 审计目录下审计文件的最大数量。 audit_login_logout 指定是否审计数据库用户的登录(包括登录成功和登录失败)、注销。 audit_database_process 指定是否审计数据库启动、停止、切换和恢复的操作。 audit_user_locked 指定是否审计数据库用户的锁定和解锁。 audit_user_violation 指定是否审计数据库用户的越权访问操作。 audit_grant_revoke 指定是否审计数据库用户权限授予和回收的操作。 audit_system_object 指定是否审计数据库对象的CREATE、DROP、ALTER操作。 audit_dml_state 指定是否审计具体表的INSERT、UPDATE、DELETE操作。 audit_dml_state_select 指定是否审计SELECT操作。 audit_copy_exec 指定是否审计COPY操作。 audit_function_exec 指定在执行存储过程、匿名块或自定义函数(不包括系统自带函数)时是否记录审计信息。 audit_set_parameter 指定是否审计SET操作。 enableSeparationOfDuty 指定是否开启三权分立。 session_timeout 建立连接会话后,如果超过此参数的设置时间,则会自动断开连接。 auth_iteration_count 认证加密信息生成过程中使用的迭代次数。
  • 背景信息 只有拥有AUDITADMIN属性的用户才可以查看审计记录。有关数据库用户及创建用户的办法请参见用户。 审计查询命令是数据库提供的sql函数pg_query_audit,其原型为: pg_query_audit(timestamptz startime,timestamptz endtime,audit_log) 参数startime和endtime分别表示审计记录的开始时间和结束时间,audit_log表示所查看的审计日志信息所在的物理文件路径,当不指定audit_log时,默认查看连接当前实例的审计日志信息。 startime和endtime的差值代表要查询的时间段,其有效值为从startime日期中的00:00:00开始到endtime日期中的23:59:59之间的任何值。请正确指定这两个参数,否则将查不到需要的审计信息。
  • 操作步骤 参考连接数据库,连接数据库。 查询审计记录。 1 openGauss=# select * from pg_query_audit('2021-03-04 08:00:00','2021-03-04 17:00:00'); 查询结果如下: time | type | result | userid | username | database | client_conninfo | object_name |detail_info| node_name | thread_id | local_port | remote_port------------------------+----------------+--------+--------+-----------+-----------+-------------------------+-------------------+--------------+-------------------+---------------------------------+------------+-------------2021-03-04 08:00:08+08 | login_success | ok | 10 | omm | postgres | gsql@::1 | postgres | login db(postgres) success, SSL=off | dn_6001_6002_6003 | 140477687527168@668131208211425 |17778 | 46946 该条记录表明,用户omm在time字段标识的时间点登录数据库postgres。其中client_conninfo字段在log_hostname启动且IP连接时,字符@后显示反向DNS查找得到的主机名。 对于登录操作的记录,审计日志detail_info结尾会记录SSL信息,SSL=on表示客户端通过SSL连接,SSL=off表示客户端没有通过SSL连接。