概述:数据库安全的核心和关键是其数据安全。数据安全指以保护措施确保数据的完整性、保密性、可用性、可控性和可审查性
DM安全管理结构:
概述:
用户标识与鉴别:可以通过登录帐户区别各用户,并通过口令方式防止用户被冒充
自主访问控制:通过权限管理,使用户只能访问自己权限内的数据对象
强制访问控制:通过安全标记,使用户只能访问与自己安全级别相符的数据对象
审计:审计人员可以查看所有用户的操作记录,为明确事故责任提供证据支持
通信、存储加密 用户可以自主的将数据以密文的形式存储在数据库中。也可以对在网络上传输的数据进行加密
加密引擎:用户可以用自定义的加密算法来加密自己的核心数据
资源限制:可以对网络资源和磁盘资源进行配额设置,防止恶意资源抢占
客体重用:实现了内存与磁盘空间的释放清理,防止信息数据的泄露
用户标识与鉴别:
对于dm数据库安全版,采用“四权分立”的安全机制:
数据库管理员(DBA):
评估数据库服务器所需的软、硬件运行环境;安装和升级 DM 服务器;数据库结构设计;监控和优化数据库的性能;计划和实施备份与故障恢复
数据库安全员(SSO):
主要职责是制定并应用安全策略,强化系统安全机制;每个安全员可以制定自己的安全策略,在安全策略中定义安全级别、范围和组,然后基于定义的安全级别、范围和组来创建安全标记,并将安全标记分别应用到主体(用户)和客体(各种数据库对象,如表、索引等),以便启用强制访问控制功能;数据库安全员不能对用户数据进行增、删、改、查,也不能执行普通的 DDL 操作如创建表、视图等。
数据库审计员(AUDITOR)
为了能够及时找到DBA或者其他用户的非法操作,可以在系统建设初期,由数据库审计员来设置审计策略(包括审计对象和操作),在需要时,数据库审计员可以查看审计记录,及时分析并查找非法操作来源。
数据库对象操作员(DBO)
数据库对象操作员是“四权分立”新增加的一类用户,可以创建数据库对象,并对自己拥有的数据库对象(表、视图、存储过程、序列、包、外部链接等)具有所有的对象权限并可以授出与回收,但其无法管理与维护数据库对象。
用户的口令策略:
创建用户时使用PASSWORD POLICY子句指定,策略有:
0:无限制。但总长度不得超过 48 个字节
1:禁止与用户名相同
2:口令长度需大于等于 INI 参数 PWD_MIN_LEN 设置的值
4:至少包含一个大写字母(A-Z)
8:至少包含一个数字(0-9)
16:至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号)
对PASSWORD POLICY子句指定的口令策略值,应当是一个或多个上述口令策略对应值的和;
同时可以修改ini参数指定默认的口令策略(此种方法需重启实例);或调用系统过程SP_SET_PARA_VALUE修改(PWD_POLICY是动态参数,此种方法不需要重启实例);
自主访问控制与角色:
概述:由数据库对象的拥有者自主决定是否将自己拥有的对象的部分或全部访问权限授予其他用户。
角色:角色是一组权限的组合,使用角色的目的是使权限管理更加方便;也就是说,角色的加入可以令管理员管理用户权限的集合,而不是管理权限本身。基于四权分立,Dm数据库预置了多个角色供创建用户时指定。
限制DBA角色的ANY权限:
缺省情况下,DBA角色拥有许多的ANY权限,令其可以删除任何表、管理任何表的数据等。
在非安全版中,只有SYSDBA用户才能限制DBA的ANY权限;
在安全版中,只有具有DB_POLICY_ADMIN角色的用户才能限制DBA的ANY权限。
若要限制ANY权限,执行系统过程:
VOID
SP_RESTRICT_DBA(1);(1则限制ANY权限,0则不限制)
SVI角色管理:
拥有SVI角色权限的用户可以查询v视图。SVI角色权限通过系统过程管理:
SP_INIT_SVI_SYS(1);(可以手动重建所有V视图,并授权给SVI、DB_POLICY_SVI、DB_OBJECT_SVI和DB_AUDIT_SVI。只有DBA和DB_OBJECT_ADMIN可以执行)
SP_SWITCH_SVI(1);(SVI角色启用。只有DBA/DB_OBJECT_ADMIN可以执行。INIT_SVI_SYS和SWITCH_SVI需均为1或0)
SF_GET_SVI();(获取当前是否启用SVI角色)
审计:
审计开关:(具有审计权限的管理员)执行系统过程SP_SET_ENABLE_AUDIT (1);
(0:关闭审计;1:打开普通审计;2:打开普通审计和实时审计)
语句级审计:
VOID
SP_AUDIT_STMT(
TYPE VARCHAR(30),--审计选项,可指定ALL、USER、SCHEMA、TABLE等
USERNAME VARCHAR (128),--被审计的用户名,NULL不限制
WHENEVER VARCHAR (20)--审计时机,可指定ALL、SUCCESSFUL、FAIL
)
取消则审计则执行SP_NOAUDIT_STMT,参数与上述一致且完全匹配(即存在指定的审计策略)
对象级审计:
VOID
SP_AUDIT_OBJECT (
TYPE VARCHAR(30),--审计选项,可指定ALL、INSERT、UPDATE等
USERNAME VARCHAR (128),--被审计的用户名
SCHNAME VARCHAR (128),--模式名
TVNAME VARCHAR (128),--对象名(表、视图、存储过程名,不能为空)
#COLNAME VARCHAR (128),--可选参数,列名
WHENEVER VARCHAR (20)--审计时机
)
取消则审计则执行SP_NOAUDIT_OBJECT,参数与上述一致且完全匹配(即存在指定的审计策略)
语句序列审计:
概述:预先建立的审计规则,包含n条sql语句,如果某个会话依次执行了这些语句,则触发审计。
VOID
SP_AUDIT_SQLSEQ_START(--先执行start,开启规则建立
NAME VARCHAR (128)--语句序列审计名称
)
VOID
SP_AUDIT_SQLSEQ_ADD(--satrt之后,执行若干次add,添加语句序列
NAME VARCHAR (128),--语句序列名称
SQL VARCHAR (8188)--sql语句内容
)
VOID
SP_AUDIT_SQLSEQ_END(--最后执行end,完成规则建立
NAME VARCHAR (128)
)
审计的注意事项:
只要审计功能被启用,系统级的审计记录就会产生;
在进行数据库审计时,审计员之间没有区别,可以审计所有数据库对象,也可取消其他审计员的审计设置;
语句级审计不针对特定的对象,只针对用户;
对象级审计针对指定的用户与指定的对象进行审计;
在设置审计时,审计选项不区分包含关系,都可以设置;
在设置审计时,审计时机不区分包含关系,都可以进行设置;
如果用户执行的一条语句与设置的若干审计项都匹配,只会在审计文件中生成一条审计记录。
审计文件管理:
默认路径:SYSTEM_PATH
指定方法:ini文件中添加AUD_PAYH=...
管理方法:
ini文件中AUDIT_FILE_FULL_MODE参数(1:删除直至能创建新审计文件;2:不再写审计记录)
删除指定时间节点前的审计文件:SP_DROP_AUDIT_FILE('2015-12-6 16:30:00',<0删除普通审计文件;1删除实时审计文件>);
切换成新审计文件(审计文件被删除时可做此操作):SP_SWITCH_AUDIT_FILE(<1切换普通2切换普通和实时>);
审计信息查询:
SYSAUDITOR.SYSAUDIT:审计规则的信息(语句序列规则除外)
SYSAUDITOR.SYSAUDITSQLSEQ:语句序列审计的信息
SYSAUDITOR.V$AUDITRECORDS:审计记录内容
SELECT SF_GET_AUDIT_TYPENAME(50);审计类型对应值的意义描述
SELECT SF_GET_AUDIT_LEVELNAME(2);审计等级对应值的意义描述
SELECT SF_GET_AUDIT_WHENEVERNAME(1);审计时机对应值的意义描述
用户资源限制:
可以在图形界面中指定的配置项:
需要命令指定的配置项:
IP地址限制:可以指定ALLOW_IP、NOT_ALLOW_IP集合
用户时间限制:可以指定ALLOW_DATETIME和NOT_ALLOW_DATETIME
CREATE USER xxx IDENTIFIED BY ‘xxx’
ALLOW_IP "192.168.0.*" ALLOW_DATETIME MON "8:30:00" TO FRI "17:30:00";
登录用户名密码增强加密:
概述:非通信加密的情况下,使用dmkey工具生成公钥和私钥文件,进而配置服务器和客户端参数,进行加解密
步骤:
使用dmkey生成公钥、私钥:
将私钥文件dm_login.prikey拷贝到SYSTEM_PATH下,并修改ini参数FORCE_CERTIFICATE_ENCRYPTION=1:
配置dm_svc.conf 文件的LOGIN_CERTIFICATE配置项,指定公钥文件所在位置:
再重启实例服务,测试连接。
达梦在线服务平台: 达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台