kingbaseV7 安全管理

本文详细介绍了金仓数据库KingbaseES在身份验证、访问控制、特权管理和数据加密方面的安全增强措施,包括自主访问控制、强制访问控制、特权分立、数据标记和加密策略,以及相关的功能和管理方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

金仓数据库KingbaseES 在身份鉴别、用户权限,以及数据访问、存储和传输等方面的安全增强提高了数据库系统的整体安全性,
提供了包括强化身份鉴别、自主访问控制、安全标记、强制访问控制、特权分立、资源限制、客体重用,
以及程序运行和数据存储完整性、数据存储透明加密、数据传输加密等在内的主要安全功能和控制手段,

3. 安全概念和术语
可信计算基(TCB)
计算机信息系统可信计算基是计算机系统内保护装置的总体,包括硬件、固件、软件和负责执行安全策略的组合体。
自主访问控制(DAC:Discretionary Access Control)
自主访问控制作用是对主体(如用户)操作客体(如表)进行授权管理,简记为DAC
强制访问控制(MAC:Mandatory Access Control)

4. 管理特权分立
4.1. 特权分立
KingbaseES 把数据库管理员分为数据库管理员、安全管理员、审计管理员三类。
数据库管理员
    主要负责执行数据库日常管理的各种操作和自主存取控制。
安全管理员
    主要负责强制存取控制规则的制定和管理。
审计管理员
    主要负责数据库的审计,监督前两类用户的操作。
    
5. 强制访问控制
5.1. 概述
    强制存取控制(MAC,Mandatory Access Control)
在强制存取控制中,DBMS所管理的全部实体被分为主体和客体两大类。
主体包括普通用户、数据库管理员和特权用户等;
客体包括数据库表、索引、数据字典以及其中的元组等。    

5.2. 访问控制模型
数据能否被访问的仲裁结果取决于以下三个要素:数据标记、用户的会话标记和用户的特权。
5.3. 标记与策略
数据的访问控制基于用户会话标记与数据标记的仲裁结果。
5.3.1. 标记的组成元素
标记必须包含一个等级,但是范围是可选的,安全员在定义标记之前,必须先定义标记中所包含的元素。
等级(Levels):
等级是一个全序模型,由等级名称和等级ID来标识,等级名称和等级ID在策略中唯一
范围(Compartments):
范围是一个集合模型,范围是由范围名称和范围ID来标识,范围名称与范围ID在策略中唯一
5.3.2. 标记的语法规定
标记是通过将同一策略中的等级与范围按照一定规则组合在一起而组成
5.3.3. 数据标记和用户标记的关系
用户只能访问其标签范围内的数据,用户一般具有最大和最小等级,以及授予权限的范围集合。

5.4. 访问控制特权
数据标记标识的是数据的敏感度,用户标记标识的是用户具有什么样的权限,
用户能够访问数据取决于数据标记与用户标记的仲裁结果
5.4.2. 用户权限
    安全管理员可以设置用户的权限信息(等级、范围),系统会根据当前权限信息自动为用户计算其会话标记。
5.4.3. 标记仲裁规则
    标记之间的比较关系有大于(支配)、小于(被支配)、等于、不等于四种比较关系,
分别使用操作符 >、<、=、!= 表示。
对于标记X来说,若设定,POLICY(X)表示X所在的策略,LEVEL(X)表示X的等级,COMPARTMENT(X)表示X的范围。
5.4.4. 策略特权
READ
    当用户具有READ特权时,用户可以读取安全策略所保护的所有数据
FULL
    当用户具有FULL特权,用户可以读取安全策略所保护的所有数据,此外还可以写所有数据
WRITEUP
    WRITEUP特权允许用户提升数据标记的等级,但用户只能将等级提升到用户最大等级,并且不能修改数据的范围
WRITEDOWN
    WRITEDOWN特权允许用户降低数据标记的等级,但用户只能将等级降低到用户最小等级,并且不能修改数据的范围。
WRITEACROSS
    WRITEACROSS特权允许用户修改数据标记的范围,但不能修改数据标记的等级

5.4.5. 通过标记仲裁进行访问控制
    KingbaseES中采用“向下读,区间写”模型来控制用户对数据的访问。

5.5. 相关函数
创建和应用一套安全策略的基本步骤如下:
    1) 创建策略
    2) 定义标记的组成元素
    3) 定义数据的有效标记
    4) 为用户授权
    5) 将策略应用于表上

5.5.1. 策略管理
创建策略
语法格式:
    CREATE_POLICY (policy_name NAME,column_name NAME,hide_column BOOL);
功能:
    创建新的安全策略,定义策略列的名称,并指定策略选项。默认情况下,策略创建后都处于启用状态.
参数说明:
    policy_name:指定策略的名称,该名称必须在数据库中唯一。
    column_name:当策略应用于表上时,将自动在表上增加一列,该参数就是用于指定策略列的名称。该名称必须在数据库中唯一。
    hide_column:指定当策略用于表上时,是否隐藏策略列。TRUE代表隐藏,FALSE代表不隐藏。
禁用策略
语法格式:
    DISABLE_POLICY(policy_name NAME);
功能:
    禁用安全策略,而不是将策略从表上移除。策略禁用后,系统将不再对受策略保护的表实施访问控制。
参数说明:
    policy_name:指定要禁用的安全策略名称。
启用策略
语法格式:
    ENABLE_POLICY(policy_name NAME);
功能:
    启用安全策略。策略启用后,系统将继续对受策略保护的表实施访问控制。
参数说明:
    policy_name:指定需要被启用的安全策略名称。
删除策略
语法格式:
    DROP_POLICY (policy_name NAME,drop_column BOOL);
功能:
    删除数据库中的安全策略,并同时删除该策略下的所有数据标记和用户会话标记。此外用户可以指定是否删除受到该安全策略保护的表中的策略列。
参数说明
    policy_name:指定要删除的安全策略名称。
    drop_column:指定是否删除受到安全策略保护的表中的策略列。TRUE代表删除,FALSE代表不删除。
相关视图
    当安全管理员创建安全策略后,可以通过视图sys_mac_policies查看安全策略的信息,
    
5.5.2. 标记元素管理
功能:
    创建指定策略名下的等级,并指定等级的ID。用户指定的ID值的大小决定了等级的敏感性级别,数值越大级别越高。
相关视图
    当安全员创建等级后,可以通过视图sys_mac_levels查看等级的信息
    当安全员创建范围后,可以通过视图sys_mac_compartments查看范围的信息,
5.5.3. 标记管理
相关视图
    当安全员创建标记后,可以根据视图sys_mac_labels查看标记信息
5.5.4. 会话标记与特权管理
功能:
    指定用户的最大等级和最小等级,以及用户登陆数据库时默认的会话等级和写入等级。
通过视图sys_mac_user_levels查看用户在某个策略下的等级信息
通过视图sys_mac_user_compartments查看用户在某个策略下的范围信息
通过视图sys_mac_user_privs查看用户在某个策略下的特权信息
5.5.5. 用户设置当前会话标记
功能:
    用户设置当前的会话标记,下写规则中,该设置结果可能影响用户的写入标记。上写规则中,该设置结果可能影响用户的当前读标记。
通过视图sys_mac_session来查看自己在某个策略下的标记信息和特权信息
5.5.6. 策略应用管理
功能:
    将策略应用于指定模式下的表。
通过视图sys_mac_table_policies可以查看表上应用策略的信息


6. 数据加密保护
6.1. 概述
    KingbaseES提供的数据加密保护分为两种:透明存储加密、加密函数和备份加密。
透明存储加密是指数据在写到磁盘上时对其进行加密,当授权用户重新读取数据时再对其进行解密
透明存储加密可以分为两个级别:表级加密和表空间级加密。
表级加密和表空间级加密是不相容的,即各种加密级别只能有一个,不能同时存在:

6.2. 透明存储加密的配置
    透明存储加密功能需要和用户提供的加密算法配合使用才能得到真正的发挥,
这样就需要用户在初始化数据库前对配置文件 encrypt_service.conf 做一些简单的配置,
该文件位于安装目录下的 config 目录下

6.3. 多级密钥体系
主密钥,也称为一级密钥,在初始化加密设备时生成,它用于保护二级密钥。
二级密钥,指表空间密钥、表密钥和列密钥,在创建这些加密对象时生成,它用于保护加密具体数据时的三级密钥。
三级密钥,指加密数据时使用的密钥,它在加密数据时生成,用来保护数据。

6.4. 加密函数
6.4.1. ENCRYPT
encrypt函数实现数据加密功能,其语法格式如下:
encrypt(expr1 BIT, expr2 TEXT[, expr3 TEXT[, expr4 TEXT[, expr5 BOOL]]])
返回值:
返回加密后的密文,数据类型为BYTEA。
1.expr1表示待加密的数据,数据类型可以为BYTEA, BIT, TEXT, BLOB 和 CLOB。
数据长度不能大于1G-128个字节,对于varbit数据类型,需要显示转换为TEXT,然后再加密。
2.expr2表示加密时所使用的密钥,数据类型为TEXT。如果用户给定的密钥长度大于需要的长度,那么密钥的超长部分被截断;
如果小于需要的长度,则自动在后面补0。该参数不能为null。
3.expr3表示使用的加密算法,数据类型为TEXT。目前支持DES,AES,IDEA和RC4等,该参数大小写不敏感,不能为null,缺省值是DES_CBC。
4.expr4表示初始化向量,数据类型为TEXT。初始化向量用于提高密文的破解难度。
最大长度是16字节,超出部分会被截断;长度不足则自动在后面补0。该参数不能为null。
5.expr5表示数据块的填充方式,数据类型为BOOL。如果选择true,那么按照默认的填充方式进行填充;
如果选择false,那么不填充。该参数不能为null,缺省值为true
示例:
1. 对数值、时间等类型使用decrypt_to_text
CREATE TABLE test1(a BYTEA, b BYTEA);
INSERT INTO test1 VALUES(encrypt(CURRENT_DATE,'key'), encrypt(12345678,'key'));
SELECT decrypt_to_text(a,'key'),decrypt_to_text(b,'key') FROM test1;

6.4.2. DECRYPT_TO_TEXT
decrypt_to_text函数实现数据解密为文本类型的功能,其语法格式如下
decrypt_to_text(expr1 BYTEA, expr2 TEXT[, expr3 TEXT[, expr4 TEXT[,expr5 BOOL]]])
返回值:
返回解密后的明文,返回值的数据类型为TEXT。
示例:
1. 对 BYTEA 类型使用decrypt_to_bytea解密
CREATE TABLE test1(a BYTEA, b BYTEA);
INSERT INTO test1 VALUES(encrypt('ABCDEF'::BYTEA,'key'), encrypt('0123456789'::BYTEA,'key'));
SELECT decrypt_to_bytea(a,'key'),decrypt_to_bytea(b,'key') FROM test1;


6.4.3. DECRYPT_TO_BYTEA
decrypt_to_ bytea函数实现数据解密为BYTEA类型的功能,其语法格式如下:
decrypt_to_bytea(expr1 BYTEA, expr2 TEXT[, expr3 TEXT[, expr4 TEXT[,expr5 BOOL]]])
返回值:
返回解密后的明文,返回值的数据类型为BYTEA

6.5. 逻辑备份加密
    KingbaseES的sys_dump逻辑备份工具提供了额外的加密备份参数支持带密的逻辑备份。
    -K 对备份的数据进行加密,其后指定用于加密的密钥,密钥的长度为1到16个字节。
此选项只能用于二进制输出格式(c)文件中,加密算法为RC4;
    -r 指定该选项,则备份时将加密的触发器、函数或存储过程定义中的 ENCRYPTED 关键字移除,默认保留该关键字。
    如下是一个示例:
    sys_dump -h 192.168.1.8 -p 54321 -U SYSTEM -W MANAGER -K 12345678 -f c:\dumpfile.dmp DB_DUMPTEST
    同样地,KingbaseES的sys_restore逻辑还原工具提供了加密备份还原的参数,支持带密的逻辑还原。
    -K 用于还原已加密的数据文件,密钥为进行逻辑备份时指定的密钥。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值