在生产环境中,权力集中是安全的最大隐患。如果一个管理员既管数据库运维又管数据内容又管审计日志,就存在“既当运动员又当裁判员”的风险,无法满足等保合规要求。
达梦数据库采用“三权分立”或“四权分立”的安全机制,将系统权限按职责拆分,实现权力制衡+分工协作:
三权分立下三大管理员:
| 管理员 | 用户名 | 职责 |
|---|---|---|
| 数据库管理员 | SYSDBA |
数据库建设、维护、备份恢复、性能管理 |
| 数据库安全员 | SYSSSO |
安全策略和强制访问控制管理 |
| 数据库审计员 | SYSAUDITOR |
设置审计策略、查看和分析审计记录 |
| 四权分立在三权分立基础上增加 SYSDBO(数据库对象操作员) ,将数据对象的创建和操作职责从SYSDBA中拆分出来,四权分立下,SYSDBA更偏向系统管理与维护,不能对数据内容进行增删改查操作。 | ||
| 配置方式:建库时通过参数 PRIV_FLAG 设置,0表示三权分立,1表示四权分立,此参数仅在DM安全版本下提供。 |
(1)生产环境建议采用四权分立,实现更细粒度的职责分离;
(2)日常运维中,严禁使用SYSDBA进行业务数据的增删改查;
(3)各管理员账号密码应定期更换,且由不同人员保管。
为不同角色(开发、测试、运维、应用)创建独立的数据库账号,对用户进行身份认证,防止非法登录,对用户资源进行限制,防止个别用户耗尽系统资源。
创建用户通常由SYSDBA、SYSSSO或SYSAUDITOR完成,普通用户需具有 CREATE USER 权限,执行以下sql创建普通用户,并指定默认表空间和资源限制:
CREATE USER app_user IDENTIFIED BY App_Pwd_2026;
CREATE USER dev_user
IDENTIFIED BY Dev_Pwd_2026
LIMIT SESSION_PER_USER 5, -- 最多5个并发会话
CONNECT_IDLE_TIME 30, -- 空闲30分钟自动断开
FAILED_LOGIN_ATTEMPS 5, -- 登录失败5次锁定
PASSWORD_LIFE_TIME 90 -- 密码有效期90天
DEFAULT TABLESPACE USERS
QUOTA 100M ON USERS;
用户认证方式主要有以下五种:
| 认证方式 | 适用场景 |
|---|---|
| 数据库身份验证 | 最常用,通过用户名口令登录 |
| 操作系统身份验证 | 本机或远程 OS 认证 |
| LDAP 认证 | 企业统一身份认证 |
| SSL 双因子认证 | 高安全场景 |
| KERBEROS 认证 | 域环境集成 |
当用户账号被攻击或员工离职等情况,需要及时锁定用户,避免数据泄露等安全风险,执行sql语句锁定用户:
ALTER USER app_user ACCOUNT LOCK;
执行sql解锁用户:
ALTER USER app_user ACCOUNT UNLOCK;
设置IP白名单只允许特定IP访问,或设置IP黑名单禁止特定IP访问,执行sql语句:
ALTER USER app_user ALLOW_IP "10.32.29.27","192.168.141.1";
ALTER USER app_user NOT_ALLOW_IP "192.168.138.132";
设置允许登录时间段,执行sql语句:
ALTER USER app_user ALLOW_DATETIME "2026-08-19" "09:00:00" TO "2026-08-19" "10:00:00";
执行sql取消限制:
ALTER USER app_user ALLOW_DATETIME NULL;
(1)最小权限原则:用户只授予完成任务所需的最小权限;
(2)强密码策略:密码不低于9位,包含大写字母、数字、特殊字符;
(3)IP白名单:对重要业务用户设置IP白名单;
(4)定期审计:通过 DBA_USERS 视图定期检查用户状态。
控制用户能对数据库系统做什么操作,对具体对象数据做什么操作,能够灵活授予和回收权限。
达梦数据库权限分为两大类:
(1)系统权限、数据库权限 :针对数据库本身的操作,如创建、删除、修改数据库对象,备份数据库等
| 常用系统权限 | 说明 |
|---|---|
CREATE USER |
创建用户 |
CREATE TABLE |
在自己的模式中创建表 |
CREATE VIEW |
在自己的模式中创建视图 |
CREATE ROLE |
创建角色 |
SELECT ANY TABLE |
查询任意模式中的表 |
BACKUP DATABASE |
备份数据库 |
ALTER DATABASE |
修改数据库 |
(2)对象权限:对特定数据库对象,例如表、视图、存储过程等的操作权限
| 对象权限 | 说明 |
|---|---|
SELECT |
查询表、视图数据 |
INSERT |
插入数据 |
UPDATE |
更新数据 |
DELETE |
删除数据 |
EXECUTE |
执行存储过程、函数 |
REFERENCES |
创建外键约束 |
授予系统权限:
GRANT CREATE TABLE, CREATE VIEW TO dev_user;
授予系统权限并允许转授:
GRANT CREATE USER TO admin_user WITH ADMIN OPTION;
授予对象权限(表级):
GRANT SELECT, INSERT, UPDATE ON TYLOO_DB.GAME TO app_user;
授予对象权限(模式级),达梦数据库默认没有开启按模式授权的功能,修改静态参数GRANT_SCHEMA 为1,重启服务之后进行授权:
GRANT SELECT ON SCHEMA TYLOO_DB TO dev_user;
回收系统权限:
REVOKE CREATE TABLE FROM dev_user;
回收对象权限:
REVOKE SELECT, INSERT ON TYLOO_DB.GAME FROM app_user;
回收模式级权限:
REVOKE SELECT ON SCHEMA TYLOO_DB FROM dev_user;
查询用户拥有的系统权限:
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'APP_USER';
查询用户拥有的对象权限:
SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'APP_USER';
查询当前用户权限:
SELECT * FROM USER_SYS_PRIVS;
(1)按模式授权:开启 GRANT_SCHEMA=1 参数可实现按模式批量授权;
(2)避免使用 ANY 权限:SELECT ANY TABLE 等权限范围过大,应尽量使用具体对象授权;
(3)定期权限审计:定期导出权限清单,review是否存在过度授权。
满足等保合规要求,必须开启审计日志,方便追踪敏感操作,例如谁在什么时间做了什么,并为安全事故调查提供依据。
达梦审计分为三个层次,所有审计开关启停、审计策略配置、日志查看,仅审计管理员 SYSAUDITOR 可操作:
| 审计级别 | 说明 |
|---|---|
| 系统审计 | 对数据库系统级操作的审计 |
| 语句级审计 | 对特定 SQL 语句类型的全局审计 |
| 对象级审计 | 对特定数据库对象的操作审计 |
首先以审计员SYSAUDITOR登录,然后开启审计功能(1=普通审计,2=普通审计+实时审计)执行
SP_SET_ENABLE_AUDIT(1);
(1)语句级审计
审计所有表的创建、修改和删除操作
SP_AUDIT_STMT('TABLE', 'SYSDBA', 'ALL');
审计SYSDBA创建用户的成功操作
SP_AUDIT_STMT('USER', 'SYSDBA', 'SUCCESSFUL');
审计SYSDBA对表的修改和删除(无论成功失败)
SP_AUDIT_STMT('UPDATE TABLE', 'SYSDBA', 'ALL');
SP_AUDIT_STMT('DELETE TABLE', 'SYSDBA', 'ALL');
(2)对象级审计
审计SYSDBA对表PERSON.ADDRESS的插入和更新操作(仅成功)
SP_AUDIT_OBJECT('INSERT', 'SYSDBA', 'TYLOO_DB', 'GAME', 'SUCCESSFUL');
SP_AUDIT_OBJECT('UPDATE', 'SYSDBA', 'TYLOO_DB', 'GAME', 'SUCCESSFUL');
审计对特定列的更新操作
SP_AUDIT_OBJECT('UPDATE', 'SYSDBA', 'TYLOO_DB', 'GAME', 'GAME_DATE', 'SUCCESSFUL');
通过视图查看审计日志:
SELECT * FROM SYSAUDITOR.V$AUDITRECORDS;
(1)必须开启审计:等保合规基本要求;
(2)审计重要操作:用户创建/删除、权限变更、表结构变更、敏感表的DML操作;
(3)审计日志保护:审计日志应单独存储,防止被篡改或删除;
(4)定期归档:审计日志应定期归档并保留至少180天。
文章
阅读量
获赞
