目录

1    简介    1

2    安全体系架构    1

3    安全功能    2

3.1    多权分立    2

3.2    身份验证    2

3.3    资源限制    3

3.4    权限管理    5

3.5    自主访问控制    6

3.6    审计功能    8

3.7    透明存储加密    10

3.8    半透明存储加密    11

3.9    非透明存储加密    13

4    总结    13

 

 

 

简介

数据库安全管理是指采取各种安全措施对数据库及其相关文件和数据进行保护。数据库系统的重要指标之一是确保系统安全,以各种防范措施防止非授权使用数据库,主要通过数据库管理系统进行实现。数据库系统中一般采用用户标识与鉴别、存取控制以及密码存储等技术进行安全控制。

安全体系架构

达梦数据库提供了包括用户标识与鉴别、自主与强制访问控制、通信与存储加密、审计等丰富的安全功能,且各安全功能都可进行配置,满足各类型用户在安全管理方面不同层次的需求。

postgresql 三权分立 数据库 三权分立_系统权限

 

安全功能


  1. 多权分立


达梦数据库默认使用三权分立,将传统的数据库管理员划分为三个可以互相制约的角色。在三权分立权限管理基础上,进一步对权限管理进行升级优化,支持多权分立。

在数据库初始化时用户可根据需要设定系统级角色和对应的权限,一旦设定不可修改系统角色权限,系统提供常用的权限分立方案供用户选择能力,如初始化数据库设置为四权分立:

postgresql 三权分立 数据库 三权分立_postgresql 三权分立_02

图3-1 多权分立

身份验证

DM提供数据库身份验证模式和外部身份验证模式来保护对数据库访问的安全。数据库身份验证模式需要利用数据库口令,即在创建或修改用户时指定用户口令,用户在登录时输入对应口令进行身份验证;外部身份验证模式支持基于操作系统(OS)的身份验证、LDAP身份验证和 KERBEROS 身份验证。

数据库口令验证的口令复杂度是可以通过参数进行管理的:

0:    无限制;

1:    禁止与用户名相同;

2:    口令长度不小于6个字符;

4:    至少包含一个大写字母(A-Z);

8:    至少包含一个数字(0-9);

16:至少包含一个标点符号(英文输入法状态下,除双引号和空格外的所有符号);

若为其他数字,则表示配置值的和,如3=1+2,表示同时启用第1项和第2项限制。

打开达梦控制台管理工具或者直接编辑dm.ini文件对口令复杂度策略进行修改。

postgresql 三权分立 数据库 三权分立_数据库_03

图3-2 身份验证

资源限制

资源限制是用于限制用户对达梦系统资源的使用,达梦提供了很多资源限制选项,可以在创建用户的同时进行选择。

postgresql 三权分立 数据库 三权分立_postgresql 三权分立_04

图3-3 资源限制

除了常用资源限制以外还可以对连接进行限制,安全版本还提供对IP和时间进行限制。

postgresql 三权分立 数据库 三权分立_身份验证_05

图3-4 IP限制

权限管理

达梦数据库系统默认含有以下预定义用户:

类型

用户

说明

系统管理员

SYSDBA

缺省系统管理员和数据库管理员

系统审计员

SYSAUDITOR

缺省系统审计管理员和数据库审计管理员

系统安全员

SYSSSO

缺省系统标记管理员和数据库标记管理员

对象管理员

(四权模式)

SYSDBO

缺省数据库对象管理员

预定义用户口令可在初始化数据库实例时修改:

postgresql 三权分立 数据库 三权分立_postgresql 三权分立_06

图3-4 权限管理

 

权限分为系统权限和用户权限。系统权限指的是规定允许用户在数据库中执行特定的操作,例如执行DDL语句:

create、drop、alter、audit、label……

table, view, sequence,trigger, function……

对象权限指的是规定允许用户对数据库对象执行特定的操作,例如对表执行DML语句:

select、insert、update、delete、references、execute

权限可以在新建用户和修改用户的时候赋予:

postgresql 三权分立 数据库 三权分立_数据库_07

图3-5 权限赋予

自主访问控制

自主访问控制主要通过授权(grant)和回收权限(revoke)来实现。

 

 

权限授予:

用户待授出的权限必须是其已拥有的并且能够授出的权限,用户拥有该权限的转授权或者是该权限所依附的对象的建立者。授予系统权限时系统权限的授予者一般是数据库管理员。其他用户转授其拥有的系统权限时,该权限必须是通过WITH ADMIN OPTION获取的。授予对象权限时对象权限的授予一般由对象的所有者完成,也可由SYSDBA完成。其他用户转授其拥有的对象权限时,该权限必须是通过WITH GRANT OPTION获取的。

 

权限回收:

用户权限的回收一般由该权限的直接授出用户回收。回收系统权限时转授的系统权限不能被间接回收,即系统不支持通过级联方式回收用户间接获得的该权限。回收对象权限时被转授过的对象权限必须通过级联方式CASCADE回收,此时该权限的所有转授权限也将一并收回。不指定级联方式,默认为RESTRICT,则无法进行回收。

 

可以在管理工具中对权限授予和回收:

postgresql 三权分立 数据库 三权分立_系统权限_08

图3-6 修改权限

审计功能

在达梦数据库中,启用审计功能需要两步:打开审计开关(默认审计开关关闭),并重启数据库服务。

postgresql 三权分立 数据库 三权分立_身份验证_09

图3-7 打开审计功能

针对具体对象审计:

postgresql 三权分立 数据库 三权分立_系统权限_10

图3-8 针对具体对象审计

针对具体用户审计:

postgresql 三权分立 数据库 三权分立_postgresql 三权分立_11

图3-9 针对具体用户审计

查看审计分析工具:

postgresql 三权分立 数据库 三权分立_postgresql 三权分立_12

图3-10 查看审计分析工具

透明存储加密

达梦数据库提供多种透明存储加密类型,包括块加密和列加密。

块加密的方法是在初始化数据库过程中指定数据库为全库加密类型,具体语法如下:

dminit path=..\encdata encrypt_name=AES256_CFB encrypt_pwd=MyKey

postgresql 三权分立 数据库 三权分立_系统权限_13

图3-11 初始化时启动加密

列加密是在建表的时候指定的,也可以使用图形化管理工具加密:

create table "T_Encrpt" (

clm1 varchar(16) encrypt with AES256_CFB,

clm2 varchar(16) encrypt with AES256_CFB auto by "MyEncryptKey",

clm3 varchar(16) encrypt with AES256_CFB manual,

clm4 varchar(16)

);

postgresql 三权分立 数据库 三权分立_系统权限_14

图3-12 启动加密

半透明存储加密

半透明存储加密密钥是在创建用户时所生成的,它并不是用户的登录口令。执行下述语句时会生成用户密钥。可以由系统随机生成:

create user "USER01" identified by "USER01";

也可以指定:

create user "USER02" identified by "USER02" encrypt by "MyEncryptKey";

也可以在图形化管理工具中操作:

postgresql 三权分立 数据库 三权分立_身份验证_15

图3-13 开启半透明存储加密

设置加密算法

postgresql 三权分立 数据库 三权分立_postgresql 三权分立_16

图3-14 设置加密算法

非透明存储加密

设置用户数据非透明加密的方法是在插入数据和读取数据时,手动指定:

create table T_Encrypt(clm1 varchar(32), clm2 varchar(256));

 

insert into T_Encrypt values('G99', cfalgorithmsencrypt ('MyPlainText', 514,'MyEncryptKey'));

 

select clm1, cfalgorithmsdecrypt(clm2, 514, 'MyEncryptKey') from T_Encrypt;