open Gauss 数据库-06 openGauss数据库安全指导手册5.0.0

发文章是为了证明自己真的掌握了一个知识,同时给他人带来帮助,如有问题,欢迎指正,祝大家万事胜意!

目录

前言

openGauss数据库安全指导

1 用户权限控制

1.1 实验介绍

1.1.1 关于本实验

1.1.2 实验目的

1.2 用户

1.2.1 创建、修改、删除用户

1.3 角色

1.3.1 创建、修改、删除角色

1.4 Schema

1.4.1 创建、修改、删除 Schema

1.5 用户权限设置及回收

1.5.1 将系统权限授权给用户或者角色

1.5.2 将数据库对象授权给角色或用户

1.5.4 权限回收

1.6 安全策略设置

1.6.1 设置账户安全策略

1.6.2 设置账号有效期

1.6.3 设置密码安全策略

2 审计

2.1 实验介绍

2.1.1 关于本实验

2.1.2 实验目的

2.2 审计开、关

2.3 查看审计结果

2.4 维护审计日志


前言

本实验主要内容为操作系统参数检查、 openGauss 健康状态检查、数据库性能检查、日志检查

和清理、时间一致性检查、应用连接数检查、例行维护表等

我的环境:

设备名称设备型号软件版本
虚拟机VMwareVMware-workstation-full-17.5.1
操作系统openEuler   openEuler 22.3LTS
数据库openGauss  openGauss 5.0.0

需要的工具,大家不用现在下,后面用到了再下也可以,如果需要相关文件,可以评论,其实大多数都是可以去官网下的哈,因为我只能通过网盘给大家,文件又有点大,网盘的速度大家都是清楚的哈哈,所以还是推荐大家去官网,如果实在找不到可以找我

openGauss数据库安全指导

1 用户权限控制

1.1 实验介绍

1.1.1 关于本实验
本实验主要描述用户的创建管理、角色的创建管理、 Schema 的创建管理、用户权限设置、用
户安全策略设置。
1.1.2 实验目的
掌握用户、角色、 Schema 的创建及管理;
掌握用户权限的授予各回收;
掌握用户安全策略如何设置。

1.2 用户

通过 CREATE USER 创建的用户,默认具有 LOGIN 权限;
通过 CREATE USER 创建用户的同时系统会在执行该命令的数据库中,为该用户创建一个同名
SCHEMA ;其他数据库中,则不自动创建同名的 SCHEMA ;用户可使用 CREATE SCHEMA
命令,分别在其他数据库中,为该用户创建同名 SCHEMA
1.2.1 创建、修改、删除用户
步骤 1 启动服务器,再使用 gsql 客户端以管理员用户身份连接 postgres 数据库,假设端口号为
15400
[omm@node0 ~]$ gsql -d postgres -p 26000 -r
failed to connect /opt/huawei/tmp:26000.
[omm@node0 ~]$ gsql -d postgres -p 15400 -r
gsql ((openGauss 5.0.0 build a07d57c3) compiled at 2023-03-29 03:37:13 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
步骤 2 连接数据库后,进入 SQL 命令界面。创建用户 jim ,登录密码为 Bigdata@123
openGauss=# CREATE USER jim PASSWORD 'Bigdata@123';
CREATE ROLE
openGauss=# 
说明:密码规则如下:
密码默认不少于 8 个字符;
不能与用户名及用户名倒序相同;
至少包含大写字母( A-Z ),小写字母( a-z ),数字( 0-9 ),非字母数字字符(限定为
~!@#$%^&*()-_=+\|[{}];:,<.>/? )四类字符中的三类字符;
创建用户时,应当使用双引号或单引号将用户密码括起来。
步骤 3 查看用户列表。
openGauss=#  SELECT * FROM pg_user;usename | usesysid | usecreatedb | usesuper | usecatupd | userepl |  passwd  | valbegin | valuntil |   respool    | parent | spacelimit | useconfig | nodegroup | tempspacelimit | 
spillspacelimit | usemonitoradmin | useoperatoradmin | usepolicyadmin 
---------+----------+-------------+----------+-----------+---------+----------+----------+----------+--------------+--------+------------+-----------+-----------+----------------+-
----------------+-----------------+------------------+----------------omm     |       10 | t           | t        | t         | t       | ******** |          |          | default_pool |      0 |            |           |           |                | | t               | t                | tlucy    |    49478 | f           | f        | f         | f       | ******** |          |          | default_pool |      0 |            |           |           |                | | f               | f                | fjim     |    82240 | f           | f        | f         | f       | ******** |          |          | default_pool |      0 |            |           |           |                | | f               | f                | f
(3 rows)
步骤 4 创建有 创建数据库 权限的用户,则需要加 CREATEDB 关键字。
openGauss=# CREATE USER dim CREATEDB PASSWORD 'Bigdata@123';
CREATE ROLE
openGauss=# 
步骤 5 将用户 jim 的登录密码由 Bigdata@123 修改为 Abcd@123
openGauss=#  ALTER USER jim IDENTIFIED BY 'Abcd@123' REPLACE 'Bigdata@123';
ALTER ROLE
openGauss=# 
步骤 6 为用户 jim 追加有创建角色的 CREATEROLE 权限。
openGauss=#  ALTER USER jim CREATEROLE;
ALTER ROLE
openGauss=# 
步骤 7 锁定 jim 帐户。
openGauss=# ALTER USER jim ACCOUNT LOCK;
ALTER ROLE
openGauss=# 
步骤 8 解锁 jim 帐户。
openGauss=#  ALTER USER jim ACCOUNT UNLOCK;
ALTER ROLE
openGauss=# 
步骤 9 删除用户.
openGauss=# DROP USER jim CASCADE;
DROP ROLE
openGauss=# 

1.3 角色

角色是拥有数据库对象和权限的实体。在不同的环境中角色可以认为是一个用户,一个组或者
兼顾两者。
在数据库中添加一个新角色,角色无登录权限。
创建角色的用户必须具备 CREATE ROLE 的权限或者是系统管理员。
1.3.1 创建、修改、删除角色
步骤 1 启动服务器,再使用 gsql 客户端以管理员用户身份连接 postgres 数据库,假设端口号为
15400
[omm@node0 ~]$ gsql -d postgres -p 15400 -r
gsql ((openGauss 5.0.0 build a07d57c3) compiled at 2023-03-29 03:37:13 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.openGauss=# 
步骤 2 创建一个角色,名为 manager ,密码为 Bigdata@123
openGauss=# CREATE ROLE manager IDENTIFIED BY 'Bigdata@123';
CREATE ROLE
openGauss=# 
步骤 3 创建一个角色,从 2020 7 1 日开始生效,到 2020 12 1 日失效。
openGauss=# CREATE ROLE miriam WITH LOGIN PASSWORD 'Bigdata@123' VALID BEGIN '2020-07-01' VALID UNTIL '2020-12-01';
CREATE ROLE
openGauss=# 
步骤 4 修改角色 manager 的密码为 abcd@123
openGauss=# ALTER ROLE manager IDENTIFIED BY 'abcd@123' REPLACE 'Bigdata@123';
ALTER ROLE
openGauss=# 
步骤 5 修改角色 manager 为系统管理员。
openGauss=#  ALTER ROLE manager SYSADMIN;
ALTER ROLE

步骤 6 删除角色 manager

openGauss=# DROP ROLE manager;
DROP ROLE
步骤 7 查看角色。
openGauss=#  SELECT * FROM PG_ROLES;rolname          | rolsuper | rolinherit | rolcreaterole | rolcreatedb | rolcatupdate | rolcanlogin | rolreplication | rolauditadmin | rolsystemadmin | rolconnlimit | rolp
assword |     rolvalidbegin      |     rolvaliduntil      |  rolrespool  | rolparentid | roltabspace | rolconfig |  oid  | roluseft | rolkind | nodegroup | roltempspace | rolspills
pace | rolmonitoradmin | roloperatoradmin | rolpolicyadmin 
--------------------------+----------+------------+---------------+-------------+--------------+-------------+----------------+---------------+----------------+--------------+-----
--------+------------------------+------------------------+--------------+-------------+-------------+-----------+-------+----------+---------+-----------+--------------+----------
-----+-----------------+------------------+----------------dim                      | f        | t          | f             | t           | f            | t           | f              | f             | f              |           -1 | ****
****    |                        |                        | default_pool |           0 |             |           | 82244 | f        | n       |           |              |          | f               | f                | flucy                     | f        | t          | f             | f           | f            | t           | f              | f             | f              |           -1 | ****
****    |                        |                        | default_pool |           0 |             |           | 49478 | f        | n       |           |              |          | f               | f                | fmiriam                   | f        | t          | f             | f           | f            | t           | f              | f             | f              |           -1 | ****
****    | 2020-07-01 00:00:00+08 | 2020-12-01 00:00:00+08 | default_pool |           0 |             |           | 82252 | f        | n       |           |              |          | f               | f                | fomm                      | t        | t          | t             | t           | t            | t           | t              | t             | t              |           -1 | ****
****    |                        |                        | default_pool |           0 |             |           |    10 | t        | n       |           |              |          | t               | t                | tgs_role_directory_drop   | f        | t          | f             | f           | f            | f           | f              | f             | f              |           -1 | ****
****    |                        |                        | default_pool |           0 |             |           |  1059 | f        | n       |           |              |          | f               | f                | fgs_role_directory_create | f        | t          | f             | f           | f            | f           | f              | f             | f              |           -1 | ****
****    |                        |                        | default_pool |           0 |             |           |  1056 | f        | n       |           |              |          | f               | f                | fgs_role_pldebugger       | f        | t          | f             | f           | f            | f           | f              | f             | f              |           -1 | ****
****    |                        |                        | default_pool |           0 |             |           |  1055 | f        | n       |           |              |          | f               | f                | fgs_role_account_lock     | f        | t          | f             | f           | f            | f           | f              | f             | f              |           -1 | ****
****    |                        |                        | default_pool |           0 |             |           |  1048 | f        | n       |           |              |          | f               | f                | fgs_role_replication      | f        | t          | f             | f           | f            | f           | f              | f             | f              |           -1 | ****
****    |                        |                        | default_pool |           0 |             |           |  1047 | f        | n       |           |              |          | f               | f                | fgs_role_tablespace       | f        | t          | f             | f           | f            | f           | f              | f             | f              |           -1 | ****
****    |                        |                        | default_pool |           0 |             |           |  1046 | f        | n       |           |              |          | f               | f                | fgs_role_signal_backend   | f        | t          | f             | f           | f            | f           | f              | f             | f              |           -1 | ****
****    |                        |                        | default_pool |           0 |             |           |  1045 | f        | n       |           |              |          | f               | f                | fgs_role_copy_files       | f        | t          | f             | f           | f            | f           | f              | f             | f              |           -1 | ****
****    |                        |                        | default_pool |           0 |             |           |  1044 | f        | n       |           |              |          | f               | f                | f
(12 rows)

1.4 Schema

Schema 又称作模式。通过管理 Schema ,允许多个用户使用同一数据库而不相互干扰。
每个数据库包含一个或多个 Schema
在数据库创建用户时,系统会自动帮助用户创建一个同名 Schema
1.4.1 创建、修改、删除 Schema
步骤 1 启动服务器,再使用 gsql 客户端以管理员用户身份连接 postgres 数据库,假设端口号为
15400
步骤 2 创建模式 ds
openGauss=# CREATE SCHEMA ds;
CREATE SCHEMA
openGauss=# 
步骤 3 将当前模式 ds 更名为 ds_new
openGauss=#  ALTER SCHEMA ds RENAME TO ds_new;
ALTER SCHEMA
openGauss=# 
步骤 4 创建用户 jack
步骤 5 将 DS_NEW 的所有者修改为 jack。

步骤 5 DS_NEW 的所有者修改为 jack

openGauss=# ALTER SCHEMA ds_new OWNER TO jack;
ALTER SCHEMA
步骤 6 查看 Schema 所有者。
openGauss=# SELECT s.nspname,u.usename AS nspowner FROM pg_namespace s, pg_user u WHERE s.nspowner = u.usesysid;nspname       | nspowner 
--------------------+----------pg_toast           | ommcstore             | ommpkg_service        | ommdbe_perf           | ommsnapshot           | ommblockchain         | ommpg_catalog         | ommsqladvisor         | ommdbe_pldebugger     | ommdbe_pldeveloper    | ommdbe_sql_util       | omminformation_schema | ommdb4ai              | ommpublic             | ommtpcds              | ommpmk                | ommlucy               | lucydim                | dimjack               | jackds_new             | jack
步骤 7 删除用户 jack 和模式 ds_new
openGauss=# DROP SCHEMA ds_new;
DROP SCHEMA
openGauss=#  DROP USER jack;
DROP ROLE

1.5 用户权限设置及回收

使用 GRANT 命令进行用户授权包括以下三种场景:
  将系统权限授权给角色或用户。
  将数据库对象授权给角色或用户。
 将角色或用户的权限授权给其他角色或用户。
1.5.1 将系统权限授权给用户或者角色
步骤 1 启动服务器,再使用 gsql 客户端以管理员用户身份连接 postgres 数据库,假设端口号
15400
[omm@node0 ~]$ gsql -d postgres -p 15400 -r
gsql ((openGauss 5.0.0 build a07d57c3) compiled at 2023-03-29 03:37:13 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
步骤 2 创建名为 joe 的用户,并将 sysadmin 权限授权给 joe
openGauss=# CREATE USER joe PASSWORD 'Bigdata@123';
CREATE ROLE
openGauss=# GRANT ALL PRIVILEGES TO joe;
ALTER ROLE
1.5.2 将数据库对象授权给角色或用户
步骤 1 撤销 joe 用户的 sysadmin 权限,然后创建 tpcds 模式,并给 tpcds 模式下创建一张 reason
表。
openGauss=# REVOKE ALL PRIVILEGES FROM joe;
ALTER ROLE
openGauss=# CREATE SCHEMA tpcds;
CREATE SCHEMA
openGauss=#  CREATE TABLE tpcds.reason 
openGauss-# ( 
openGauss(#  r_reason_sk INTEGER NOT NULL, 
openGauss(#  r_reason_id CHAR(16) NOT NULL, 
openGauss(#  r_reason_desc VARCHAR(20) 
openGauss(# );
CREATE TABLE
openGauss=# 
步骤 2 将模式 tpcds 的使用权限和表 tpcds.reason 的所有权限授权给用户 joe
openGauss=# GRANT USAGE ON SCHEMA tpcds TO joe;
GRANT
openGauss=# GRANT ALL PRIVILEGES ON tpcds.reason TO joe;
GRANT
openGauss=# 
授权成功后, joe 用户就拥有了 tpcds.reason 表的所有权限,包括增删改查等权限。
步骤 3 tpcds.reason 表中 r_reason_sk r_reason_id r_reason_desc 列的查询权限,
r_reason_desc 的更新权限授权给 joe
openGauss=# GRANT select (r_reason_sk,r_reason_id,r_reason_desc),update (r_reason_desc) ON tpcds.reason TO joe;
GRANT
openGauss=# 
步骤 4 将数据库 postgres 的连接权限授权给用户 joe ,并给予其在 postgres 中创建 schema 的权限, 而且允许 joe 将此权限授权给其他用户。
openGauss=# GRANT create,connect on database postgres TO joe WITH GRANT OPTION;
GRANT
openGauss=# 
步骤 5 创建角色 tpcds_manager ,将模式 tpcds 的访问权限授权给角色 tpcds_manager ,并授予
该角色在 tpcds 下创建对象的权限,不允许该角色中的用户将权限授权给其人。
openGauss=# CREATE ROLE tpcds_manager PASSWORD 'Bigdata@123';
CREATE ROLE
openGauss=#  GRANT USAGE,CREATE ON SCHEMA tpcds TO tpcds_manager;
GRANT
openGauss=# 
1.5.3 将用户或者角色的权限授权给其他用户或角色
步骤 1 创建角色 manager ,将 joe 的权限授权给 manager ,并允许该角色将权限授权给其他人。
openGauss=# CREATE ROLE manager PASSWORD 'Bigdata@123';
CREATE ROLE
openGauss=#  GRANT joe TO manager WITH ADMIN OPTION;
GRANT ROLE
openGauss=# 
步骤 2 创建用户 senior_manager ,将用户 manager 的权限授权给该用户。
openGauss=#  CREATE ROLE senior_manager PASSWORD 'Bigdata@123';
CREATE ROLE
openGauss=# 
1.5.4 权限回收
步骤 1 撤销权限,并清理用户。
openGauss=# REVOKE joe FROM manager;
REVOKE ROLE
openGauss=# REVOKE manager FROM senior_manager;
WARNING:  role "senior_manager" is not a member of role "manager"
REVOKE ROLE
openGauss=# DROP USER manager;
DROP ROLE
openGauss=# REVOKE ALL PRIVILEGES ON tpcds.reason FROM joe;
REVOKE
openGauss=# REVOKE ALL PRIVILEGES ON SCHEMA tpcds FROM joe;
REVOKE
openGauss=# REVOKE USAGE,CREATE ON SCHEMA tpcds FROM tpcds_manager;
REVOKE
openGauss=# DROP ROLE tpcds_manager;
DROP ROLE
openGauss=# DROP ROLE senior_manager;
DROP ROLE
openGauss=# DROP USER joe CASCADE;
DROP ROLE
注意:实验完成后请尽量清理本实验的对象,以免影响与其它实验产生冲突。

1.6 安全策略设置

为了保证帐户安全,如果用户输入密码次数超过一定次数( failed_login_attempts ),系统将
自动锁定该帐户,默认值为 10 。次数设置越小越安全,但是在使用过程中会带来不便。
当帐户被锁定时间超过设定值( password_lock_time ),则当前帐户自动解锁,默认值为 1 天。
时间设置越长越安全,但是在使用过程中会带来不便。
1.6.1 设置账户安全策略
步骤 1 启动服务器,再使用 gsql 客户端以管理员用户身份连接 postgres 数据库,假设端口号为
15400
[omm@node0 ~]$ gsql -d postgres -p 15400 -r
gsql ((openGauss 5.0.0 build a07d57c3) compiled at 2023-03-29 03:37:13 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
步骤 2 配置 failed_login_attempts 参数。
查看已配置的参数。
openGauss=# SHOW failed_login_attempts;failed_login_attempts 
-----------------------10
(1 row)
如果显示结果不为 10 ,执行 \q 命令退出数据库。
然后在操作系统 omm 用户下执行如下命令设置成默认值 10
gs_guc reload -D /gaussdb/data/dbnode -c "failed_login_attempts=10"
注意: /gaussdb/data/dbnode 指的是数据目录,要根据自己实际情况调整。
(在omm用户下使用 gs_om -t status --detail 可以查询到数据目录)
比如数据目录 /opt/huawei/install/data/dn ,执行结果如下。
openGauss=# SHOW failed_login_attempts;failed_login_attempts 
-----------------------10
(1 row)openGauss=# \q
[omm@node0 ~]$ gs_om -t status --detail;
[   Cluster State   ]cluster_state   : Normal
redistributing  : No
current_az      : AZ_ALL[  Datanode State   ]node node_ip         port      instance                            state
--------------------------------------------------------------------------------------------
1  node0 192.168.28.131  15400      6001 /opt/huawei/install/data/dn   P Primary Normal
[omm@node0 ~]$ gs_guc reload -D /opt/huawei/install/data/dn -c "failed_login_attempts=10" ;
The gs_guc run with the following arguments: [gs_guc -D /opt/huawei/install/data/dn -c failed_login_attempts=10 reload ].
expected instance path: [/opt/huawei/install/data/dn/postgresql.conf]
gs_guc reload: failed_login_attempts=10: [/opt/huawei/install/data/dn/postgresql.conf]
server signaledTotal instances: 1. Failed instances: 0.
Success to perform gs_guc!
步骤 3 配置 password_lock_time 参数。
查看已配置的参数。
[omm@node0 ~]$ gsql -d postgres -p 15400 -r
gsql ((openGauss 5.0.0 build a07d57c3) compiled at 2023-03-29 03:37:13 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.openGauss=# SHOW password_lock_time;password_lock_time 
--------------------1d
(1 row)
如果显示结果不为 1 ,执行 \q 命令退出数据库。
然后在操作系统 omm 用户下执行如下命令设置成默认值 1
openGauss=# \q
[omm@node0 ~]$ gs_guc reload -N all -I all -c "password_lock_time=1"
The gs_guc run with the following arguments: [gs_guc -N all -I all -c password_lock_time=1 reload ].
NOTICE: password_lock_time and failed_login_attempts must have positive for lock and unlock functions to work as.
Begin to perform the total nodes: 1.
Popen count is 1, Popen success count is 1, Popen failure count is 0.
Begin to perform gs_guc for datanodes.
Command count is 1, Command success count is 1, Command failure count is 0.Total instances: 1. Failed instances: 0.
ALL: Success to perform gs_guc!
1.6.2 设置账号有效期
创建新用户时,需要限制用户的操作期限(有效开始时间和有效结束时间)。
不在有效操作期内的用户需要重新设定帐号的有效操作期。
步骤 1 启动服务器,再使用 gsql 客户端以管理员用户身份连接 postgres 数据库,假设端口号为
15400
[omm@node0 ~]$ gsql -d postgres -p 15400 -r
gsql ((openGauss 5.0.0 build a07d57c3) compiled at 2023-03-29 03:37:13 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
步骤 2 创建用户并制定用户的有效开始时间和有效结束时间。
openGauss=#  CREATE USER joe WITH PASSWORD 'Bigdata@123' VALID BEGIN '2020-07-10 08:00:00' VALID UNTIL '2022-10-10 08:00:00';
CREATE ROLE
步骤 3 重新设定帐号的有效期。
openGauss=# ALTER USER joe WITH VALID BEGIN '2020-11-10 08:00:00' VALID UNTIL '2021-11-10 08:00:00';
ALTER ROLE
1.6.3 设置密码安全策略
用户密码存储在系统表 pg_authid 中,为防止用户密码泄露, openGauss 对用户密码可进行加
密存储、密码复杂度设置、密码重用天数设置、密码有效期限设置等。
步骤 1 启动服务器,再使用 gsql 客户端以管理员用户身份连接 postgres 数据库,假设端口号为
15400
[omm@node0 ~]$ gsql -d postgres -p 15400 -r
gsql ((openGauss 5.0.0 build a07d57c3) compiled at 2023-03-29 03:37:13 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
步骤 2 配置的加密算法。
查看已配置的参数。
openGauss=#  SHOW password_encryption_type;password_encryption_type 
--------------------------2
(1 row)
如果显示结果为 0 1 ,执行 \q 命令退出数据库。
然后在操作系统 omm 用户下执行如下命令将其设置为安全的加密算法。
openGauss=#  SHOW password_encryption_type;password_encryption_type 
--------------------------2
(1 row)openGauss=# \q
[omm@node0 ~]$ gs_guc reload -N all -I all -c "password_encryption_type=2"
The gs_guc run with the following arguments: [gs_guc -N all -I all -c password_encryption_type=2 reload ].
Begin to perform the total nodes: 1.
Popen count is 1, Popen success count is 1, Popen failure count is 0.
Begin to perform gs_guc for datanodes.
Command count is 1, Command success count is 1, Command failure count is 0.Total instances: 1. Failed instances: 0.
ALL: Success to perform gs_guc!
注意说明:
  当参数 password_encryption_type 设置为 0 时,表示采用 md5 方式对密码加密。 md5
不安全的加密算法,不建议使用。
  当参数 password_encryption_type 设置为 1 时,表示采用 sha256 md5 方式对密码加
密。其中包含 md5 为不安全的加密算法,不建议使用。
  当参数 password_encryption_type 设置为 2 时,表示采用 sha256 方式对密码加密,为默
认配置。
步骤 3 配置密码安全参数。
查看已配置的参数。
[omm@node0 ~]$ gsql -d postgres -p 15400 -r
gsql ((openGauss 5.0.0 build a07d57c3) compiled at 2023-03-29 03:37:13 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.openGauss=#  SHOW password_policy;password_policy 
-----------------1
(1 row)
如果显示结果不为 1 ,执行 \q 命令退出数据库。
然后在操作系统 omm 下执行如下命令设置成默认值 1

openGauss=# \q
[omm@node0 ~]$ gs_guc reload -N all -I all -c "password_policy=1"
The gs_guc run with the following arguments: [gs_guc -N all -I all -c password_policy=1 reload ].
Begin to perform the total nodes: 1.
Popen count is 1, Popen success count is 1, Popen failure count is 0.
Begin to perform gs_guc for datanodes.
Command count is 1, Command success count is 1, Command failure count is 0.Total instances: 1. Failed instances: 0.
ALL: Success to perform gs_guc!
注意说明:
  参数 password_policy 设置为 1 时表示采用密码复杂度校验,默认值;
  参数 password_policy 设置为 0 时表示不采用任何密码复杂度校验,设置为 0 会存在安全
风险,不建议设置为 0 ,即使需要设置也要将所有 openGauss 节点中的 password_policy
都设置为 0 才能生效。
步骤 4 配置密码重用。
查看不可重用天数已配置的参数。
[omm@node0 ~]$ gsql -d postgres -p 15400 -r
gsql ((openGauss 5.0.0 build a07d57c3) compiled at 2023-03-29 03:37:13 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.openGauss=# SHOW password_reuse_time;password_reuse_time 
---------------------60
(1 row)
如果显示结果不为 60 ,执行 \q 命令退出数据库。
然后在操作系统 omm 下执行如下命令设置成默认值 60
openGauss=# \q
[omm@node0 ~]$ gs_guc reload -N all -I all -c "password_reuse_time=60"
The gs_guc run with the following arguments: [gs_guc -N all -I all -c password_reuse_time=60 reload ].
NOTICE: Checks the configuration parameters password_reuse_time and password_reuse_max when modifying password, as long as either one, can be considered the password can be reused.
Begin to perform the total nodes: 1.
Popen count is 1, Popen success count is 1, Popen failure count is 0.
Begin to perform gs_guc for datanodes.
Command count is 1, Command success count is 1, Command failure count is 0.Total instances: 1. Failed instances: 0.
ALL: Success to perform gs_guc!
查看不可重用次数已配置的参数。
[omm@node0 ~]$ gsql -d postgres -p 15400 -r;
gsql ((openGauss 5.0.0 build a07d57c3) compiled at 2023-03-29 03:37:13 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.openGauss=# SHOW password_reuse_max;password_reuse_max 
--------------------0
(1 row)
如果显示结果不为 0 ,执行 \q 命令退出数据库。
然后在操作系统 omm 下执行如下命令设置成默认值 0
openGauss=# \q
[omm@node0 ~]$ gs_guc reload -N all -I all -c "password_reuse_max = 0"
The gs_guc run with the following arguments: [gs_guc -N all -I all -c password_reuse_max = 0 reload ].
Begin to perform the total nodes: 1.
Popen count is 1, Popen success count is 1, Popen failure count is 0.
Begin to perform gs_guc for datanodes.
Command count is 1, Command success count is 1, Command failure count is 0.Total instances: 1. Failed instances: 0.
ALL: Success to perform gs_guc!
注意说明:
  不可重用天数默认值为 60 天,不可重用次数默认值是 0
  这两个参数值越大越安全,但是在使用过程中会带来不便,其默认值符合安全标准,用户
可以根据需要重新设置参数,提高安全等级。
步骤 5 配置密码有效期限。
数据库用户的密码都有密码有效期( password_effect_time ),当达到密码到期提醒天数
password_notify_time )时,系统会在用户登录数据库时提示用户修改密码。
配置 password_effect_time 参数。
查看已配置的参数。
openGauss=# SHOW password_effect_time;password_effect_time 
----------------------90
(1 row)openGauss=# 
如果显示结果不为 90 ,执行 \q 命令退出数据库。
然后在操作系统 omm 下执行如下命令设置成默认值 90 (不建议设置为 0 )。
openGauss=# \q
[omm@node0 ~]$ gs_guc reload -N all -I all -c "password_effect_time = 90"
The gs_guc run with the following arguments: [gs_guc -N all -I all -c password_effect_time = 90 reload ].
Begin to perform the total nodes: 1.
Popen count is 1, Popen success count is 1, Popen failure count is 0.
Begin to perform gs_guc for datanodes.
Command count is 1, Command success count is 1, Command failure count is 0.Total instances: 1. Failed instances: 0.
ALL: Success to perform gs_guc!
步骤 6 配置 password_notify_time 参数。
查看已配置的参数。

[omm@node0 ~]$ gsql -d postgres -p 15400 -r;
gsql ((openGauss 5.0.0 build a07d57c3) compiled at 2023-03-29 03:37:13 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.openGauss=# SHOW password_notify_time;password_notify_time 
----------------------7
(1 row)
如果显示结果不为 7 ,执行 \q 命令退出数据库。
然后在操作系统 omm 下执行如下命令设置成默认值 7 (不建议设置为 0 )。
openGauss=# \q
[omm@node0 ~]$ gs_guc reload -N all -I all -c "password_notify_time = 7"
The gs_guc run with the following arguments: [gs_guc -N all -I all -c password_notify_time = 7 reload ].
Begin to perform the total nodes: 1.
Popen count is 1, Popen success count is 1, Popen failure count is 0.
Begin to perform gs_guc for datanodes.
Command count is 1, Command success count is 1, Command failure count is 0.Total instances: 1. Failed instances: 0.
ALL: Success to perform gs_guc!

用户权限控制实验结束。

2 审计

2.1 实验介绍

2.1.1 关于本实验
数据库安全对数据库系统来说至关重要, openGauss 将用户对数据库的所有操作写入审计日志,
数据库安全管理员可以利用这些日志信息,重现导致数据库现状的一系列事件,找出非法操作
的用户、时间和内容等。
本实验主要描述如何来设置数据库审计,主要包括审计开关、查看审计结果、维护审计日志。
2.1.2 实验目的
掌握如何设置数据库审计及审计日志的查看。

2.2 审计开、关

审计总开关 audit_enabled 支持动态加载。在数据库运行期间修改该配置项的值会立即生效,
无需重启数据库。默认值为 on ,表示开启审计功能。
除了审计总开关,各个审计项也有对应的开关。只有开关开启,对应的审计功能才能生效。
各审计项的开关支持动态加载。在数据库运行期间修改审计开关的值,不需要重启数据库便可
生效。
步骤 1 审计总开关设置。
启动服务器,再使用 gsql 客户端以管理员用户身份连接 postgres 数据库,假设端口号为 15400
[omm@node0 ~]$ gsql -d postgres -p 15400 -r
gsql ((openGauss 5.0.0 build a07d57c3) compiled at 2023-03-29 03:37:13 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
查看已配置审计总开关参数。
openGauss=# show audit_enabled;audit_enabled 
---------------on
(1 row)
如果显示结果不为 on ,执行 “\q” 命令退出数据库。
然后在操作系统 omm 下执行如下命令设置成默认值 on (不建议设置为 off )。
openGauss=# \q
[omm@node0 ~]$ gs_guc reload -N all -I all -c "audit_enabled = on"The gs_guc run with the following arguments: [gs_guc -N all -I all -c audit_enabled = on reload ].
Begin to perform the total nodes: 1.
Popen count is 1, Popen success count is 1, Popen failure count is 0.
Begin to perform gs_guc for datanodes.
Command count is 1, Command success count is 1, Command failure count is 0.Total instances: 1. Failed instances: 0.
ALL: Success to perform gs_guc!
步骤 2 审计项开关设置。
查看已配置审计项参数。
以下以数据库启动、停止、恢复和切换审计项为例。

openGauss=# show audit_database_process;audit_database_process 
------------------------1
(1 row)
如果显示结果不为 1 ,执行 “\q” 命令退出数据库。
然后在操作系统 omm 下执行如下命令设置成默认值 1
openGauss=# \q
[omm@node0 ~]$ gs_guc reload -N all -I all -c " audit_database_process = 1"
The gs_guc run with the following arguments: [gs_guc -N all -I all -c  audit_database_process = 1 reload ].
Begin to perform the total nodes: 1.
Popen count is 1, Popen success count is 1, Popen failure count is 0.
Begin to perform gs_guc for datanodes.
Command count is 1, Command success count is 1, Command failure count is 0.Total instances: 1. Failed instances: 0.
ALL: Success to perform gs_guc!

注意说明:
 用户登录、注销审计。
参数: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 这四类数据库对
象的 CREATE、ALTER、DROP 操作进行审计。
 具体表的 INSERT、UPDATE 和 DELETE 操作审计。
参数:audit_dml_state。
默认值为 0,表示关闭具体表的 DML 操作(SELECT 除外)审计功能。
 SELECT 操作审计。
参数:audit_dml_state_select。
默认值为 0,表示关闭 SELECT 操作审计功能。
 COPY 审计。
参数:audit_copy_exec。
默认值为 0,表示关闭 copy 操作审计功能。
 存储过程和自定义函数的执行审计。
参数:audit_function_exec。
默认值为 0,表示不记录存储过程和自定义函数的执行审计日志。
 SET 审计 参数:audit_set_parameter。
默认值为 1,表示记录 set 操作审计日志。

2.3 查看审计结果

步骤 1 启动服务器,再使用 gsql 客户端以管理员用户身份连接 postgres 数据库,假设端口号为15400。


[omm@node0 ~]$ gsql -d postgres -p 15400 -r
gsql ((openGauss 5.0.0 build a07d57c3) compiled at 2023-03-29 03:37:13 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
步骤 2 查询审计记录
openGauss=# SELECT time,type,result,username,object_name FROM pg_query_audit('2020-07-10 10:00:00','2020-08-15 09:47:33');time | type | result | username | object_name 
------+------+--------+----------+-------------
(0 rows)openGauss=# 

2.4 维护审计日志

设置自动删除审计日志。
步骤 1 启动服务器,再使用 gsql 客户端以管理员用户身份连接 postgres 数据库,假设端口号为
15400
[omm@node0 ~]$ gsql -d postgres -p 15400 -r
gsql ((openGauss 5.0.0 build a07d57c3) compiled at 2023-03-29 03:37:13 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
步骤 2 配置审计文件占用磁盘空间的大小( audit_space_limit )。
查看已配置的参数。
openGauss=# SHOW audit_space_limit;audit_space_limit 
-------------------1GB
(1 row)
如果显示结果不为 1GB 1024MB ),执行 “\q” 命令退出数据库。
然后在操作系统 omm 用户下执行如下命令设置成默认值 1024MB
openGauss=# \q
[omm@node0 ~]$ gs_guc reload -N all -I all -c "audit_space_limit=1024MB"
The gs_guc run with the following arguments: [gs_guc -N all -I all -c audit_space_limit=1024MB reload ].
Begin to perform the total nodes: 1.
Popen count is 1, Popen success count is 1, Popen failure count is 0.
Begin to perform gs_guc for datanodes.
Command count is 1, Command success count is 1, Command failure count is 0.Total instances: 1. Failed instances: 0.
ALL: Success to perform gs_guc!
步骤 3 配置审计文件个数的最大值( audit_file_remain_threshold )。
查看已配置的参数。
openGauss=# SHOW audit_file_remain_threshold;audit_file_remain_threshold 
-----------------------------1048576
(1 row)

如果显示结果不为 1048576,执行“\q”命令退出数据库。

然后在操作系统 omm 用户执行如下命令设置成默认值 1048576
openGauss=# \q
[omm@node0 ~]$ gs_guc reload -N all -I all -c "audit_file_remain_threshold=1048576"
The gs_guc run with the following arguments: [gs_guc -N all -I all -c audit_file_remain_threshold=1048576 reload ].
Begin to perform the total nodes: 1.
Popen count is 1, Popen success count is 1, Popen failure count is 0.
Begin to perform gs_guc for datanodes.
Command count is 1, Command success count is 1, Command failure count is 0.Total instances: 1. Failed instances: 0.
ALL: Success to perform gs_guc!
步骤 4 手动删除审计日志。
当不再需要某时段的审计记录时,可以使用审计接口命令 pg_delete_audit 进行手动删除。
以删除 2020/7/10 2020/7/20 之间的审计记录为例:
[omm@node0 ~]$ gsql -d postgres -p 15400 -r
gsql ((openGauss 5.0.0 build a07d57c3) compiled at 2023-03-29 03:37:13 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.openGauss=# ^C
openGauss=# SELECT pg_delete_audit('2020-07-10 ','2020-07-20');pg_delete_audit 
-----------------(1 row)
审计实验结束。

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

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

相关文章

富文本编辑器(wangEdit)+(jquery.wordexport)实现web版在线编辑导出

小插曲&#xff1a;最开始的方向是Html5的contenteditable"true"的文档可编辑属性。只能修改文档文字内容&#xff0c;不能修改样式&#xff0c;如修改字体&#xff0c;字号&#xff0c;颜色等。于是用了第一款&#xff08;quil&#xff09;富文本插件。只能说一般&a…

IEEE PDF eXpress Validating Pdf..之后Error in converting file

在将自己写好的pdf论文转化为IEEE出版的pdf论文格式的时候&#xff0c;错误如下图&#xff1a; 解决办法如下&#xff1a;失败之后&#xff0c;那里有一个选项按钮&#xff0c;叫做manual request&#xff0c;也就是人工转换&#xff0c;点那个申请就可以了&#xff0c;然后也挺…

jdk keytool.exe生成keystore https证书,利用jks2pfx转换nginx证书,nginx配置证书

jdk keytool.exe生成keystore https证书,利用jks2pfx转换nginx证书,nginx配置证书 由于项目需要https访问,使用ngigx配置https证书,在用nginx代理到 各个tomcat,比tomcat直接配置https证书方便,记录下自己制作nginx https证书文件,以及配置的过程. 由于证书不是证书机构颁…

我与C++的爱恋:类和对象(四)

​ ​ &#x1f525;个人主页&#xff1a;guoguoqiang. &#x1f525;专栏&#xff1a;我与C的爱恋 ​ 朋友们大家好&#xff01;本篇是类和对象的最后一个部分。 一、static成员 声明为static的类成员称为类的静态成员&#xff0c;用static修饰的成员变量&#xff0c;称之…

Ctrl + B 复制图片Base64

简介 这是一个专为Windows系统设计的工具&#xff0c;用于快速获取资源管理器&#xff08;文件夹&#xff09;中选中图片文件的Base64编码。 背景 由于工作需求经常需要获取图片的Base64并粘贴到postman中调用接口。最开始的做法是使用在线工具将图片转换为Base64编码&#…

DBUnit增强:填充随机数据和相对时间数据

痛点 测试环境验证时&#xff0c;遇到与当前相对时间相关的测试吗&#xff1f;准备一份SQL&#xff1f;隔一段时间就不能用了。每过一段时间去更新脚本或重置系统时间&#xff1f;看上去也不是很合适的解决方案。依赖数据测试时要重新做&#xff0c;演示时候得全部改&#xff…

Mini-Gemini: 探索多模态视觉语言模型的新境界

一、背景 在数字化时代&#xff0c;人工智能的发展正以前所未有的速度推进。特别是在多模态学习领域&#xff0c;结合视觉和语言的能力已成为研究的热点。最近&#xff0c;一篇名为“Mini-Gemini: Mining the Potential of Multi-modality Vision Language Models”的文章在arX…

05 MySQL--字段约束、事务、视图

1. CONSTRAINT 约束 创建表时&#xff0c;可以给表的字段添加约束&#xff0c;可以保证数据的完整性、有效性。比如大家上网注册用户时常见的&#xff1a;用户名不能为空。对不起&#xff0c;用户名已存在。等提示信息。 约束包括&#xff1a; 非空约束&#xff1a;not null检…

【C++类和对象】const成员函数及流插入提取

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…

Elasticsearch 开放 inference API 增加了对 OpenAI chat completions 的支持

作者&#xff1a;Tim Grein 我们很高兴地宣布在 Elasticsearch 中推出的最新创新&#xff1a;在 Elastic 的 inference API 中集成了 OpenAI Chat Completions 功能。这一新特性标志着我们在整合尖端人工智能能力至 Elasticsearch 的旅程中又迈出了一步&#xff0c;提供了生成类…

凭证自动拆分

凭证自动拆分 一、设置拆分中间科目 OBX2配置凭证拆分的中间科目 二、销售开票凭证拆分 SE18创建BADI "FI_BILL_ISSUE_SPLIT"的实施 修改实施类&#xff1a;ZCL_FI_BILL_ISSUE_SPLIT中IF_EX_FI_BILL_ISSUE_SPLIT~ACTIVATE_AUTOMATIC_SPLIT方法&#xff0c;代码…

ruoyi-vue前端的一些自定义插件介绍

文章目录 自定义列表$tab对象打开页签关闭页签刷新页签 $modal对象提供成功、警告和错误等反馈信息&#xff08;无需点击确认&#xff09;提供成功、警告和错误等提示信息&#xff08;类似于alert&#xff0c;需要点确认&#xff09;提供成功、警告和错误等提示信息&#xff08…

vue 的生命周期--图解

生命周期函数中的this指向是vm 或 组件实例对象。 常用的生命周期钩子&#xff1a; mounted: 发送ajax请求、启动定时器、绑定自定义事件、订阅消息等【初始化操作】。beforeDestroy: 清除定时器、解绑自定义事件、取消订阅消息等【收尾工作】。 关于销毁Vue实例 销毁后借助Vu…

常见排序算法(插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序,计数排序,基数排序,桶排序)

一.排序的概念 1.排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作 2.稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录&#xff0c;若经过排…

MATLAB设置变量

您可以通过简单的方式分配变量。例如&#xff0c; 示例 x 3 %定义x并用值初始化它 MATLAB将执行上述语句并返回以下结果- x 3 它创建一个名为x的1乘1矩阵&#xff0c;并将值3存储在其元素中。再举一个实例&#xff0c; 示例 x sqrt(16) %定义x并用表达式初始化它 MATLAB将…

自动化测试Selenium(3)

目录 WebDriver相关API 打印信息 打印title 打印url 浏览器的操作 浏览器最大化 设置浏览器的宽,高 操作浏览器的前进, 后退, 刷新 控制浏览器滚动条 键盘事件 键盘单键用法 键盘组合按键用法 鼠标事件 WebDriver相关API 打印信息 打印title 即打印该网址的标题.…

在PostgreSQL中,如何创建一个触发器并在特定事件发生时执行自定义操作?

文章目录 解决方案示例代码1. 创建自定义函数2. 创建触发器 解释 在PostgreSQL中&#xff0c;触发器&#xff08;trigger&#xff09;是一种数据库对象&#xff0c;它能在特定的事件&#xff08;如INSERT、UPDATE或DELETE&#xff09;发生时自动执行一系列的操作。这些操作可以…

css-Echarts图表初始显示异常非完全显示

1.echarts图表初始加载异常 2.问题原因 初次加载时&#xff0c;由于外层使用%比 echarts dom元素没有完全加载完成&#xff0c;canvas绘画继承本身宽高&#xff0c;造成Echarts图表初始显示异常非完全显示。 3.使用echarts图表可参考以下代码&#xff08;实现一定的自适应&am…

MyBatis 核心配置讲解(上)

大家好&#xff0c;我是王有志&#xff0c;一个分享硬核 Java 技术的互金摸鱼侠。 前两篇的文章中我们分别介绍了 MyBatis 和 MyBaits 的应用组成&#xff0c;到这里基础篇的内容就结束了。 从今天开始&#xff0c;我们正式进入 MyBatis 学习的第二阶段&#xff1a;MyBatis 的…

【Qt 学习笔记】Qt常用控件 | 显示类控件LCD Number的使用及说明

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt常用控件 | 显示类控件LCD Number的使用及说明 文章编号&#xff1a…