暂无图片
暂无图片
5
暂无图片
暂无图片
暂无图片

12.达梦DCP认证课程-安全管理

原创 让世界为你转身 2024-10-29
103

1.安全标准

CC 标准-国际标准:

Common criteria
达梦为 EL4

TCSEC 美国国防部的数据库安全标准:

达梦安全版可以达到 B1 标记安全保护

国家标准–GB/T 20273-2006:

达梦安全四级

2.用户安全

2.1 口令策略

用户口令最长为 48 字节,创建用户语句中的 PASSWORD Y POLICY 子句用来指定该用户的口令策略,系统支持的口令策略有:

0 无策略 1 禁止与用户名相同 2 口令长度不小于 9 4 至少包含一个大写字母(A-Z) 8 至少包含一个数字(0-9) 16 至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号)
复制

口令策略可单独应用,也可组合应用。组合应用时,如需要应用策略 2 和 4,则设置口令策略为 2+4=6 即可。

除了在创建用户语句中指定该用户的口令策略,隐含参数 PWD_POLICY(不在dm.ini中) 可以指定系统的默认口令策略,其参数值的设置规则与 PASSWORD POLICY 子句一致,缺省值为2。若在创建用户时没有使用 PASSWORD POLICY 子句指定用户的口令策略,则使用系统的默认口令策略。

查询系统默认口令策略:

--PWD_POLICY是隐含参数,只能通过函数或者sql语句修改 SQL> select name,type,value,sys_value,file_value from v$parameter where name='PWD_POLICY'; 行号 NAME TYPE VALUE SYS_VALUE FILE_VALUE ---------- ---------- ---- ----- --------- ---------- 1 PWD_POLICY SYS 0 0 0
复制

查询用户当前的口令策略:

SQL> select username,account_status,password_versions from dba_users; 行号 USERNAME ACCOUNT_STATUS PASSWORD_VERSIONS ---------- ---------- -------------- ----------------- 1 SYSAUDITOR OPEN 0 2 SYSSSO OPEN 0 3 SYSDBA OPEN 0 4 SYS OPEN 0 --修改用户口令策略 alter user sysdba password_policy 31; SQL> select username,account_status,password_versions from dba_users where username='SYSDBA'; 行号 USERNAME ACCOUNT_STATUS PASSWORD_VERSIONS ---------- -------- -------------- ----------------- 1 SYSDBA OPEN 31
复制

修改系统默认口令策略:

  • 方法1:通过alter system
select name,type,value from v$parameter where name='PWD_POLICY'; alter system set 'pwd_policy'=6 both;
复制
  • 方法2:通过console工具

console为脱机工具,对参数值的修改是通过修改dm.ini文件中的参数值来进行,无论参数是静态还是动态,都需要重启DM数据库才能使新设置的参数值生效。

[dmdba@dmserver tool]$ pwd /home/dmdba/dmdbms/tool [dmdba@dmserver tool]$ ./console
复制
  • 方法3:使用系统过程

使用系统过程 SP_SET_PARA_VALUE 来配置 PWD_POLICY 参数值。

SQL> SP_SET_PARA_VALUE(1, 'PWD_POLICY',2); DMSQL 过程已成功完成 已用时间: 2.139(毫秒). 执行号:56607. SQL> select name,value from v$parameter where name='PWD_POLICY'; 行号 NAME VALUE ---------- ---------- ----- 1 PWD_POLICY 2 已用时间: 34.398(毫秒). 执行号:56608.
复制

2.2 资源限制

可以通过管理工具 manager---> 用户---> 修改来设置密码和资源的安全

可以单独创建资源限制 Profile。

create PROFILE pro1 limit PASSWORD_LIFE_TIME 180;
复制

2.3 权限控制

查看数据库中的用户

Select username from dba_users; USERNAME SYSSSO :安全员(安全策略,安全版商密可信版)--->可以用来做强制访问策略 SYSDBA :管理员 SYS : 内置管理账户 SYSAUDITOR Sysdbo : 操作员(安全版才会有)
复制

2.4 操作系统认证

基 于 OS 的身份验证需首先将操作系统用户加入到操作系统的 dmdba|dmsso|dmauditor 用户组,分别对应数据库的SYSDBA|SYSSSO|SYSAUDITOR 用户。也可以将操作系统用户加入到操作系统的 dmusers 用户组来进行基于 OS 的身份验证,对应数据库的同名用户,即此时数据库中需要存在一个与操作系统用户同名的用户。

  • sysdba身份登录

1.设置参数并重启数据库

--ENABLE_LOCAL_OSAUTH为隐含参数,参数修改写入system.dbf,不在dm.ini文件中 select name,type,value from v$parameter where name='ENABLE_LOCAL_OSAUTH'; --设置为1,支持操作系统认证 alter system set ENABLE_LOCAL_OSAUTH=1 spfile; --重启数据库 [dmdba@localhost ~]$ DmServiceDMSERVER stop [dmdba@localhost ~]$ DmServiceDMSERVER start
复制

2.创建dmdba组,把dmdba添加到dmdba组

groupadd dmdba usermod -G dmdba dmdba id dmdba
复制

3.使用操作系统认证登录

disql / as sysdba
复制
  • 普通用户身份登录

以普通用户身份登录,需要在数据库中创建同名用户,操作系统中创建该用户,并且将用户加入到 dmusers 用户组(重点)。

[root@localhost ~]# useradd dmtest [root@localhost ~]# usermod -G dmusers dmtest [root@localhost ~]# su - dmtest [dmtest@localhost ~]$ cd /dm8/bin #登录用户为dmtest [dmtest@localhost bin]$ ./disql / as users [root@localhost ~]# su - hr [hr@localhost ~]$ cd /dm8/bin #登录用户为hr [hr@localhost bin]$ ./disql / as users
复制

3.审计

执行审计需要的权限:

  • 只有数据库审计员才能进行审计操作,数据库管理员和安全员不能参与审计活动
  • 达梦预定义系统审计管理员:sysauditor

3.1 审计分类

数据库审计包含:系统级、语句级、对象级。

系统审计: 系统的启动与关闭,此级别的审计记录在任何情况下都会强制产生,无法也无需由用户进行设置。(启动关闭数据库)信息记录到 /dm8/data/DAMENG/AUDIT_DMSERVER*.log,相当于 oracle 中的 alert trace 文件,包含报错信息。

语句审计: 审计具体的语句,补丁某个对象,如create table,alter table。使用 SP_AUDIT_STMT 进行语句审计的设置。

对象审计: 审计对对象的操作,如person表上的insert语句。使用 SP_AUDIT_OBJECT 进行对象审计,可以是针对某个对象(表、过程、视图等)也可以精确到某张表的某列。

3.2 审计管理

3.2.1 审计开关

审计开关:

审计开关由SP_SET_ENABLE_AUDIT(param int)控制, 过程执行完后会立即生效, param 有三种取值:

0:关闭审计,缺省值为0
1:打开普通审计
2:打开普通审计和实时审计

复制

查询是否开启审计:

--0表示关闭审计,1 表示打开审计,2 表示普通+实时审计 select para_name,para_value,para_type from v$dm_ini where para_name='ENABLE_AUDIT';
复制

打开审计: 审计打开后,才能配置审计,否则会报” [-5301]:审计开关关闭或当前环境不支持“ 错误

--需要sysauditor用户登录操作 SP_SET_ENABLE_AUDIT(1)
复制

关闭审计:

--需要sysauditor用户登录操作 SP_SET_ENABLE_AUDIT(0)
复制

3.2.2 审计相关过程

SQL> select name,id from v$ifun where name like 'SP_AUDIT%'; 行号 NAME ID ---------- --------------------- ----------- 1 SP_AUDIT_SQLSEQ_ADD 1345 2 SP_AUDIT_SQLSEQ_END 1346 3 SP_AUDIT_SQLSEQ_DEL 1347 4 SP_AUDIT_SQLSEQ_START 1344 5 SP_AUDIT_STMT 596 6 SP_AUDIT_SET_ENC 1207 7 SP_AUDIT_OBJECT 1340 8 SP_AUDIT_OBJECT 598 8 rows got 已用时间: 12.065(毫秒). 执行号:500. --Whenenver 表示审计时机,有三个取值:ALL\SUCCESSFUL\FAIL SQL> select * from v$ifun_arg t where id=596; 行号 ID NAME SEQ DATA_TYPE LEN PREC IO_TYPE COMMENT$ ---------- ----------- -------- ----------- ---------------- ----------- ----------- ------- -------- 1 596 RVAL -1 UNKNOWN DATATYPE 0 0 RETURN NULL 2 596 TYPE 0 VARCHAR2 30 0 IN NULL 3 596 LUNAME 1 VARCHAR2 128 0 IN NULL 4 596 WHENEVER 2 VARCHAR2 20 0 IN NULL 已用时间: 10.096(毫秒). 执行号:501.
复制

3.2.3 审计相关参数

SQL> select name,value,description from v$parameter where name like '%AUDIT%'; 行号 NAME VALUE DESCRIPTION ---------- -------------------- ----- ----------------------------------------------------------------------------------------------- 1 ENABLE_AUDIT 1 Flag For Allowing Audit, 0: no audit 1: normal audit 2:normal audit and realtime audit 2 AUDIT_FILE_FULL_MODE 1 operation mode when audit file is full, 1: delete old file; 2: no longer to write audit records 3 AUDIT_SPACE_LIMIT 8192 audit space limit in Megabytes 4 AUDIT_MAX_FILE_SIZE 100 maximum audit file size in Megabytes 5 AUDIT_IP_STYLE 0 IP style in audit record, 0: IP, 1: IP(hostname), default 0 已用时间: 12.167(毫秒). 执行号:502. SQL> select name,value,description from v$parameter where name like 'AUD_PATH%'; 行号 NAME VALUE DESCRIPTION ---------- -------- ----- -------------- 1 AUD_PATH NULL audit log path SQL> select name,value,description from v$parameter where name like 'SYSTEM_PATH'; 行号 NAME VALUE DESCRIPTION ---------- ----------- ---------------- ----------- 1 SYSTEM_PATH /dm8/data/DAMENG system path 已用时间: 2.874(毫秒). 执行号:503.
复制

审计日志文件目录,默认使用的是 SYSTEM_PATH(dm.ini 中),也可以 dm.ini 在增加AUD_PATH 参数指定审计日志文件的存放目录。

3.2.4 审计相关函数

SQL> select name,id from v$ifun where name like 'SF_GET_AUDIT%'; 行号 NAME ID ---------- -------------------------- ----------- 1 SF_GET_AUDIT_TYPENAME 2249 2 SF_GET_AUDIT_LEVELNAME 2250 3 SF_GET_AUDIT_OPERATION 594 4 SF_GET_AUDIT_OPERATIONNAME 2251 5 SF_GET_AUDIT_WHENEVERNAME 2252 6 SF_GET_AUDIT_TYPE 593 6 rows got 已用时间: 1.952(毫秒). 执行号:505.
复制

3.2 语句级审计

语句级审计的动作是全局的,不对应具体的数据库对象,粗粒度审计。

3.2.1 设置语法

语法: stmt为statements 语句的简写

sp_audit_stmt(type,username,whenever)
复制

语法说明:

TYPE: 审计对象(表,视图,存储过程),有很多类型,具体参考官方手册。 Username: 用户,null 表示不限制 Whenever: 审计时机 ALL: 不管成功或是失败都审计 SUCCESSFUL: 操作成功的时候审计 FAIL: 操作失败的时候审计
复制

3.2.1 使用用例

针对表的 DDL 操作审计:

--stmt为statements 语句的简写 sp_audit_stmt('TABLE','NULL','ALL');
复制

针对表的插入操作审计:

sp_audit_stmt('INSERT TABLE','NULL','SUCCESSFUL'); 

复制

删除审计:

sp_noaudit_stmt('TABLE','NULL','ALL')
复制

审计查询:

--查询所有配置的审计类型 SQL> select * from sysaudit; 行号 LEVEL UID TVPID COLID TYPE WHENEVER ---------- ----------- ----------- ----------- ----------- ----------- ----------- 1 1 -1 -1 -1 15 3 --通过type获取typename SQL> select SF_GET_AUDIT_TYPENAME(15); 行号 SF_GET_AUDIT_TYPENAME(15) ---------- ------------------------- 1 TABLE --查询审计日志 select * from sysauditor.v$auditrecords;
复制

3.3 对象级审计

对象级审计发生在具体的对象上,需要指定模式名以及对象名,细粒度审计。

3.3.1 设置语法

语法:

sp_audit_object(type,username,schname,tvname,colname,whenever)
复制

语法说明:

TYPE: 对象级审计选项 USERNAME:用户名 SCHNAME: 模式名,为空时设置null TVNAME: 表、视图、存储过程名不能为空 COLNAME:列名 WHENEVER: 审计时机,可选的取值为: ALL: 不管成功或是失败都审计 SUCCESSFUL: 操作成功的时候审计 FAIL: 操作失败的时候审计
复制

sp_audit_object过程参数定义:

SQL> select * from v$ifun_arg t where id in(598,1340); 行号 ID NAME SEQ DATA_TYPE LEN PREC IO_TYPE COMMENT$ ---------- ----------- -------- ----------- ---------------- ----------- ----------- ------- -------- 1 1340 RVAL -1 UNKNOWN DATATYPE 0 0 RETURN NULL 2 1340 TYPE 0 VARCHAR2 30 0 IN NULL 3 1340 USERNAME 1 VARCHAR2 128 0 IN NULL 4 1340 SCHNAME 2 VARCHAR2 128 0 IN NULL 5 1340 TVNAME 3 VARCHAR2 128 0 IN NULL 6 1340 COLNAME 4 VARCHAR2 128 0 IN NULL 7 1340 WHENEVER 5 VARCHAR2 20 0 IN NULL 8 598 RVAL -1 UNKNOWN DATATYPE 0 0 RETURN NULL 9 598 TYPE 0 VARCHAR2 30 0 IN NULL 10 598 USERNAME 1 VARCHAR2 128 0 IN NULL 11 598 SCHNAME 2 VARCHAR2 128 0 IN NULL 12 598 TVNAME 3 VARCHAR2 128 0 IN NULL 13 598 WHENEVER 4 VARCHAR2 20 0 IN NULL 13 rows got 已用时间: 1.892(毫秒). 执行号:517.
复制

3.3.2 使用示例

创建对象级审计:

sp_audit_object('INSERT','DMTEST','DMTEST','T_PARTRANGETAB','SUCCESSFUL'); sp_audit_object('UPDATE','DMTEST','DMTEST','T_PARTRANGETAB','SUCCESSFUL'); sp_audit_object('DELETE','DMTEST','DMTEST','T_PARTRANGETAB','SUCCESSFUL'); --审计dmtest用户对dmtest.T_PARTRANGETAB的操作 sp_audit_object('ALL','DMTEST','DMTEST','T_PARTRANGETAB','SUCCESSFUL'); --审计所有用户对dmtest.T_PARTRANGETAB的操作 sp_audit_object('ALL','NULL','DMTEST','T_PARTRANGETAB','SUCCESSFUL');
复制

删除审计:

sp_noaudit_object('DELETE','DMTEST','DMTEST','T_PARTRANGETAB','SUCCESSFUL'); sp_noaudit_object('ALL','DMTEST','DMTEST','T_PARTRANGETAB','SUCCESSFUL');
复制

审计查询:

select * from sysaudit; select * from sysauditor.v$auditrecords;
复制

3.4 审计查询

1.sysaudit表存放审计设置信息

--查询所有审计配置信息 select * from sysaudit; --查询某个表上的审计配置,1290为表的id SELECT SF_GET_AUDIT_LEVELNAME(level) level, SF_GET_AUDIT_TYPENAME(type) type, SF_GET_AUDIT_WHENEVERNAME("WHENEVER") whenever1, sf_get_tablename_by_id(decode(tvpid,-1,null,tvpid)) tablename, SF_GET_USERNAME_BY_ID(UID) uname, TVPID tvname FROM sysaudit t; select sf_get_tablename_by_id(1290);
复制

2.审计日志存放在操作系统文件中(AUDIT_开头.log 文件,默认在SYSTEM_PATH下),可以通过 v$auditrecords 查询

select * from SYSAUDITOR."V$AUDITRECORDS";
复制

3.5 审计日志解析

3.5.1 dmaudtool工具

帮助信息:

[dmdba@localhost ~]$ dmaudtool help dmaudtool V8 version: 03134283904-20220630-163817-20005 格式: ./dmaudtool KEYWORD=value 例程: ./dmaudtool USERID=sysauditor/sysauditor@192.168.0.33:4356 AFIL_PATH=/opt/dm7data/dameng/aud OUT_PATH=/opt/dm7data/dameng/out/aud_out.txt 例程: ./dmaudtool USERID=sysauditor/sysauditor@192.168.0.33:4356 AFIL_PATH=/opt/dm7data/dameng/aud UPDATE_KEY=NULL 必选参数: USERID、AFIL_PATH、(OUT_PATH or UPDATE_KEY) 关键字 说明 -------------------------------------------------------------------------------- USERID 用户名/口令 格式:<username>/<password>[@<connect_identifier>][<option>],必选 <connect_identifier> : [<svc_name> | host[:port] | <unixsocket_file>] <option> : #{<exetend_option>=<value>[,<extend_option>=<value>]...} --此行外层{}是为了封装参数之用,书写时需要保留 AFIL_PATH 审计文件所在的路径,必选 OUT_PATH 输出文件的生成路径,与OUT_SIZE配合使用,若超过指定文件大小,则会生成同名加序号后缀的文件,必选(如果使用分析审计日志功能)。 UPDATE_KEY 更换密钥,必选(如果使用更新审计日志密钥功能) OUT_SIZE 输出文件的指定大小,单位为兆(M),默认为0,表示不限制文件大小,最小500,最大65534。 DCR_INI DCR_INI路径,用于连接ASM使用。当审计文件存在与ASM上使用,若没有,则忽略。 USERNAME 对应审计记录中记录的用户名,若指定,则说明收集满足该用户名的审计记录。若未指定,则不考虑 SCHNAME 对应审计记录中记录的模式名,若指定,则说明收集满足该模式名的审计记录。若未指定,则不考虑 OBJNAME 对应审计记录中记录的对象名,若指定,则说明收集满足该对象名的审计记录。若未指定,则不考虑 TIME_FROM 对应审计记录中操作时间,若指定,则收集指定时间之后的审计记录。若未指定,则不考虑 TIME_TO 对应审计记录中操作时间,若指定,则收集指定时间之前的审计记录。若未指定,则不考虑 R_SEP 输出文件中行分隔符,默认回车符 C_SEP 输出文件中列分隔符,默认|号符 HELP 打印帮助信息 Analyse the audit files successfully.
复制

使用:

dmaudtool userid=sysauditor/NewcapeC.300248 AFIL_PATH=/dm8/data/DAMENG OUT_PATH=/dm8/data/DAMENG/audit.txt

复制

3.5.2 DM审计分析工具

审计文件打开乱码,需通过图形化 sysauditor 连接审计分析工具 analyzer 来查看审计结果,点击审计日志查看器–>添加目录—>选择$DM_HOME/data/DAMENG/—>只选择审计日志文件,点击确定进行查看。

[dmdba@localhost ~]$ cd /dm8/tool/ [dmdba@localhost tool]$ ll analyzer -rwxr-xr-x 1 dmdba dinstall 908 3?? 20 14:29 analyzer
复制
最后修改时间:2024-10-29 08:35:08
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
2人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

目录
  • 1.安全标准
  • 2.用户安全
    • 2.1 口令策略
    • 2.2 资源限制
    • 2.3 权限控制
    • 2.4 操作系统认证
  • 3.审计
    • 3.1 审计分类
    • 3.2 审计管理
      • 3.2.1 审计开关
      • 3.2.2 审计相关过程
      • 3.2.3 审计相关参数
      • 3.2.4 审计相关函数
    • 3.2 语句级审计
      • 3.2.1 设置语法
      • 3.2.1 使用用例
    • 3.3 对象级审计
      • 3.3.1 设置语法
      • 3.3.2 使用示例
    • 3.4 审计查询
    • 3.5 审计日志解析
      • 3.5.1 dmaudtool工具
      • 3.5.2 DM审计分析工具