gaussdb 主备 8 数据库安全学习

发布于:2024-10-16 ⋅ 阅读:(10) ⋅ 点赞:(0)

在这里插入图片描述

1 用户及权限

1.1 默认权限机制-未开启三权分立
1.1.1 数据库系统管理员具有与对象所有者相同的权限。也就是说对象创建后,默认只有对象所有者或者系统管理员可以查询、修改和销毁对象,以及通过GRANT将对象的权限授予其他用户。
1.1.2 GaussDB支持以下的权限:SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES、CREATE、CONNECT、EXECUTE、USAGE、ALTER、DROP、COMMENT、INDEX和VACUUM
1.1.3 系统表和系统视图要么只对系统管理员可见,要么对所有用户可见
1.1.4 数据库提供对象隔离的特性,对象隔离特性开启时,用户只能查看有权限访问的对象(表、视图、字段、函数),系统管理员不受影响
1.1.5 不建议用户修改系统表和系统视图的权限。
1.2 管理员
1.2.1 初始用户
数据库安装过程中自动生成的账户称为初始用户。初始用户也是系统管理员、监控管理员、运维管理员和安全策略管理员,拥有系统的最高权限,能够执行所有的操作。
1.2.2 系统管理员
系统管理员是指具有SYSADMIN属性的账户,默认安装情况下具有与对象所有者相同的权限,但不包括dbe_perf模式的对象权限
CREATE USER sysadmin WITH SYSADMIN password “";
ALTER USER joe SYSADMIN;
1.2.3 安全管理员
安全管理员是指具有CREATEROLE属性的账户,具有创建、修改、删除用户或角色的权限,和授予或者撤销任何非系统管理员、内置角色、永久用户、运维管理员的权限。
要创建新的安全管理员,三权分立关闭时,请以系统管理员或者安全管理员身份连接数据库。三权分立打开时,请以安全管理员身份连接数据库
ALTER USER joe CREATEROLE;
CREATE USER createrole WITH CREATEROLE password "
”;
1.2.4 审计管理员
审计管理员是指具有AUDITADMIN属性的账户,具有查看和删除审计日志的权限。
要创建新的审计管理员,三权分立关闭时,请以系统管理员或者安全管理员身份连接数据库。三权分立打开时,只能以初始用户身份连接数据库
gaussdb=# CREATE USER auditadmin WITH AUDITADMIN password “";
gaussdb=# ALTER USER joe AUDITADMIN;
1.2.5 监控管理员
监控管理员是指具有MONADMIN属性的账户,具有查看dbe_perf模式下视图和函数的权限,亦可以对dbe_perf模式的对象权限进行授予或收回。
要创建新的监控管理员,请以系统管理员身份连接数据库,并使用带MONADMIN选项的CREATE USER语句或ALTER USER语句进行设置。
CREATE USER monadmin WITH MONADMIN password "
”;
ALTER USER joe MONADMIN;
1.2.6 运维管理员
运维管理员是指具有OPRADMIN属性的账户,具有使用Roach工具执行备份恢复的权限。
要创建新的运维管理员,请以初始用户身份连接数据库,并使用带OPRADMIN选项的CREATE USER语句或ALTER USER语句进行设置。
1.2.7 安全策略管理员
安全策略管理员是指具有POLADMIN属性的账户,具有创建资源标签、脱敏策略和统一审计策略的权限。
要创建新的安全策略管理员,请以系统管理员用户身份连接数据库,并使用带POLADMIN选项的CREATE USER语句或ALTER USER语句进行设置。
1.3 三权分立-削减系统管理员权限
1.3.1 系统管理员将不再具有CREATEROLE属性(安全管理员)和AUDITADMIN属性(审计管理员),即不再拥有创建角色和用户的权限,也不再拥有查看和维护数据库审计日志的权限
1.3.2 初始用户的权限不受三权分立设置影响。因此建议仅将此初始用户作为DBA管理用途,而非业务应用。
1.3.3 三权分立的设置方法为:将GUC参数enableSeparationOfDuty设置为on。
1.4 用户
1.4.1 普通用户
1.4.2 永久用户
创建具有PERSISTENCE属性,可用使用保留连接额连接数据库
gaussdb=# CREATE USER user_persistence WITH PERSISTENCE IDENTIFIED BY “********”;
service_reserved_connections
https://support.huaweicloud.com/distributed-devg-v3-gaussdb/gaussdb-10-0259.html#section8
为后台运维用户(带有persistence属性)预留的最少连接数,不建议设置过大。该参数和max_connections参数配合使用,运维用户的最大连接数等于max_connections + service_reserved_connections。
1.5 角色
1.5.1 SELECT * FROM PG_ROLES;
1.5.2 非三权分立时,只有系统管理员和具有CREATEROLE属性的用户才能创建、修改或删除角色。三权分立下,只有初始用户和具有CREATEROLE属性的用户才能创建、修改或删除角色。
1.6 Schema
1.6.1 每个数据库都包含一个pg_catalog Schema,它包含系统表和所有内置数据类型、函数和操作符
1.7 行级访问控制
1.7.1 行级访问控制的目的是控制表中行级数据可见性,通过在数据表上预定义Filter,在查询优化阶段将满足条件的表达式应用到执行计划上,影响最终的执行结果。当前受影响的SQL语句包括SELECT、UPDATE和DELETE。

2 VACUUM

2.1 VACUUM的本质就是一个“吸尘器”,用于吸收“尘埃”。而尘埃其实就是旧版本数据,如果这些数据没有及时清理,那么将会导致数据库空间膨胀,性能下降,更严重的情况会导致宕机

3 数据库审计

3.1 审计总开关audit_enabled支持动态加载。在数据库运行期间修改该配置项的值会立即生效,无需重启数据库。默认值为on,表示开启审计功能。
3.2 除了审计总开关,各个审计项也有对应的开关。只有开关开启,对应的审计功能才能生效。
3.3 各审计项的开关支持动态加载。在数据库运行期间修改审计开关的值,会立即生效,无需重启数据库。
3.4 配置审计项
3.4.1 用户登录、注销审计
参数:audit_login_logout
3.4.2 数据库启动、停止、恢复和切换审计
参数:audit_database_process
3.4.3 用户锁定和解锁审计
参数:audit_user_locked
3.4.4 用户访问越权审计
参数:audit_user_violation
3.4.5 授权和回收权限审计
参数:audit_grant_revoke
3.4.6 对用户操作进行全量审计
参数:full_audit_users
3.4.7 不需要审计的客户端名称及IP地址
参数:no_audit_client
3.4.8 数据库对象的CREATE,ALTER,DROP操作审计
参数:audit_system_object
3.4.9 具体表的INSERT、UPDATE和DELETE操作审计
参数:audit_dml_state
3.4.10 SELECT操作审计
参数:audit_dml_state_select
3.4.11 COPY审计
参数:audit_copy_exec
3.4.12 执行存储过程和自定义函数的审计
参数:audit_function_exec
3.4.13 执行白名单内的系统函数审计
参数:audit_system_function_exec
3.4.14 SET
参数:audit_set_parameter
3.4.15 事务ID记录
参数:audit_xid_info
3.4.16 内部工具连接及操作审计
参数:audit_internal_event