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

人大金仓-数据安全应该怎么做?金仓KES筑牢数据安全之盾

数据猿 2023-09-27
282

关键字:人大金仓、金仓数据库、数据库安全


欢迎收听西虹市电台早间晨报:

T公司系统在 3 月18 日遭到了网络犯罪攻击,数百万客户和潜在客户的数据因此泄密。

C研究在4月29日报告,一个含有3500万个人详细信息的神秘营销数据库泄露在网上,居然未设密码。

......

 

安全事件频发,数据安全应该怎么做?

关掉广播,H经理开始和员工就数据安全问题展开讨论:

H经理:近期数据隐私泄露事件频发,涉及面广,影响力大,不少企业因此陷入数据保护合规与社会舆情压力的双重危机。我刚刚排查了一下我们R系统的数据库,发现数据文件里面存的都是明文数据!

蔡小X: 那有信息泄露的风险啦,敏感数据需要加密存储。

H经理:我还能查到别人的敏感信息。而且随便试了几个账户密码都猜对了,还是默认的简单密码。

蔡小X: 我们数据库没有进行权限管理,账号密码也没有规则强度限制。

H经理:不对,我上周增加的一条数据是谁给我改了?

蔡小X: 。。。我们应用没有记录操作者的功能。

H经理:不行!数据库完全没有安全防护措施呀,你马上去市立医院找专家华生·K咨询,

让他给一些针对性的处理方案。

蔡小X: 好的,我马上去!

寻医问药,金仓KES带来新生机!

蔡小X火速赶到市立医院,在填写了R系统数据库现状和安全需求表后,找到专家华生·K寻求良方。华生·K在听取蔡小X的问题后,给出了使用KingbaseES数据库来满足R系统的安全性需求的建议。

KingbaseES提供的安全特性可以应对复杂多样的安全业务场景。针对各种安全威胁KingbaseES都有解决方案。KingbaseES分别从仿冒、篡改、抵赖、信息泄露、拒绝服务、权限提升这六类安全威胁进行安全防护。


 

然而,针对KingbaseES数据库的安全方案,蔡小x仍旧存在着一些疑惑:

七问七答,金仓KES筑牢企业数据安全之盾!

一问:防仿冒

蔡小X:很多网站系统都有用户密码泄露的现象,我们R系统的很多用户密码设置的很简单,KingbaseES数据库如何防止用户的非法访问?

 

华生·KKingbaseES通过用户标识和基于强化口令的身份鉴别去管理用户,还支持强访问控制功能,来抵抗仿冒攻击的安全威胁。

用户标识与鉴别

KingbaseES默认的口令加密算法为SCRAM-SHA-256。它是按照RFC 7677中的描述执行SCRAM-SHA-256认证,可以防止在不可信连接上对口令的嗅探并且支持在服务器上以一种加密哈希的方式存放口令。KingbaseES数据库的用户信息及密码存储在一个名为sys_authid的数据表中。以下是KES数据库中口令的加密形式,sys_authid表的rolpassword字段显示了加密后的密钥:

test=# select rolname,rolpassword from sys_authid where rolname in('system','sao','sso');

 rolname |                                                              rolpassword

---------+---------------------------------------------------------------------------------------------------------------------------------------

 system  | SCRAM-SHA-256$4096:neaW0DguJtkuJBFiG1t5qg==$i8NgixVvKV6wHy/k1nmau6gLuW3SbVu+0LMwnzkOa5U=:1s17aBU6V9m1y8V7Fv0K9OWUYgwLSlCzTxYRv930Pg4=

 sao     | SCRAM-SHA-256$4096:t3EvTBXYlc4cYhU9pbmCBA==$135YVq1pfgAUXxm68/u+czJz2veyGyN1Wd6PFLpdCG0=:sWR6860xfHZpPWzwv19Z1ILuF561AzDoJVe0Njhhn2g=

 sso     | SCRAM-SHA-256$4096:AcLu9E5y1OCV4HPZR3dhbQ==$s+b6F2nG+M2eBeLcsGKFZ5qpPMuNMmKF4ylYRZQjzi8=:4bO6MefQk6soth5HE3NvVBBLvzZZED0cUqb+MP1iFfQ=

(3 行记录)

在KES中,密码从 sys_user中隐藏起来,这进一步的增强了安全性,即便具有访问视图权限的用户,也无法获得口令的加密串。

test=# select usename,passwd from sys_user where usename in('system','sao','sso');

 usename |  passwd

---------+----------

 system  | ********

 sao     | ********

 sso     | ********

(3 行记录)

对于密码维护,KingbaseES 支持密码复杂度检查、密码有效期和密码历史等机制。以下是KingbaseES数据库中密码复杂度检查形式,可以根据需要自行设置密码复杂度要求:

alter system set passwordcheck.enable=on;

alter system set passwordcheck.password_length = 10;

alter system set passwordcheck.password_condition_letter = 3;

alter system set passwordcheck.password_condition_digit = 3;

alter system set passwordcheck.password_condition_punct = 1;

select sys_reload_conf();

这上面设置,就是密码长度最小10 字节,字母、数字最少3 个,特殊字符最少一个。

test=> \c test system

用户 system 的口令:

您现在已经连接到数据库 "test",用户 "system".

test=# create user testu1 with password '123';

错误:  password length 3 is too short, should be longer than min password length 10.

test=# create user testu1 with password '123456789';

错误:  password length 9 is too short, should be longer than min password length 10.

test=# create user testu1 with password '1234567890';

错误:  Password should contain at least 3 letter and the current letter is 0

test=# create user testu1 with password '1234567890abc';

错误:  Password should contain at least 1 punct and the current punct is 0

test=# create user testu1 with password '1234567890abc@';

CREATE ROLE

 

针对用户登录,KingbaseES也做了相应的身份认证机制包括支持异常登录锁定、登录信息显示、空闲自动断开连接等身份认证机制。此外,KingbaseES 支持多种登录方式,还可以限制用户登录IP。同样的异常登录锁定也可以根据需要自行配置,比如设置密码连续最大失败次数为10,密码连续失败锁定次数为6,被封锁用户的自动解封时间为1 小时。

alter system set sys_audlog.max_error_user_connect_times = 10;

alter system set sys_audlog.error_user_connect_times = 6;

alter system set sys_audlog.error_user_connect_interval = 60;

select sys_reload_conf();

[test@4-34 bin]$ ./ksql test -U testu1 -p 54324 -h 127.0.0.1

用户 testu1 的口令:

[test@4-34 bin]$ ./ksql test -U testu1 -p 54324 -W -h 127.0.0.1

口令:

ksql: 错误: 无法连接到服务器:致命错误:  password authentication failed for user "testu1"

NOTICE:  This is the 2 login failed. There are 4 left.

[test@4-34 bin]$ ./ksql test -U testu1 -p 54324 -W -h 127.0.0.1

口令:

ksql: 错误: 无法连接到服务器:致命错误:  password authentication failed for user "testu1"

NOTICE:  This is the 3 login failed. There are 3 left.

[test@4-34 bin]$ ./ksql test -U testu1 -p 54324 -W -h 127.0.0.1

口令:

ksql: 错误: 无法连接到服务器:致命错误:  password authentication failed for user "testu1"

NOTICE:  This is the 4 login failed. There are 2 left.

[test@4-34 bin]$ ./ksql test -U testu1 -p 54324 -W -h 127.0.0.1

口令:

ksql: 错误: 无法连接到服务器:致命错误:  password authentication failed for user "testu1"

NOTICE:  This is the 5 login failed. There are 1 left.

[test@4-34 bin]$ ./ksql test -U testu1 -p 54324 -W -h 127.0.0.1

口令:

ksql: 错误: 无法连接到服务器:致命错误:  The user "testu1" is locked.please wait 60 minutes to retry

 

访问控制

KingbaseES 采用多种控制手段确保用户访问数据的合法性和安全性,并有效防止非法用户的未授权访问。包括自主访问控制和强制访问控制。

KingbaseES 采用ACL(存取控制列表) 技术实现了用户对于自有表和列(字段) 的自主访问控制。用户可自主授权其他用户和角色对自有数据对象上的操作权限。当一个用户访问某个数据表/列时,自主访问控制将依据ACL 检查该用户对访问对象的访问权限是否合法,用以决定接受还是拒绝本次用户的访问行为。

--系统权限实际为创建用户时指定的一些属性权限

--system

--授权

create user u1 with superuser;

--或

alter user u1 with superuser;

create user u2 with createrole;

--或

alter user u2 with createrole;

create user u3 with login;

--或

alter user u3 with login;

create user u4 with createdb;

--或

alter user u4 with createdb;

--列举不全,具体可以查看create user/alter user 语句。

--撤销

alter user u1 with nosuperuser;

alter user u2 with nocreaterole;

alter user u3 with nologin;

alter user u4 with nocreatedb;

--对象权限就是存在于数据库对象上的权限

--准备

--system

create user u1;

create user u2;

--u1

\c test u1

create table testu1(id int);

insert into testu1 values(123);

--u2

\c test u2

select * from testu1; --error

--授权

--u1

\c test u1

--列级权限

grant select(id) on testu1 to u2;

--表级权限

grant select all on testu1 to u2;

--u2

\c test u2

select id from test; -- success

select * from test; -- success

--撤销

revoke select(id) on testu1 from u2;

revoke select all on testu1 from u2;

 

 

二问:防篡改

蔡小X:R系统的数据都是通过网络传输进行修改,传输过程中数据库有办法保证安全性吗?

 

华生·K当攻击者试图通过网络破坏用户数据文件,或者截取传输过程中的数据,KingbaseES使用传输完整性保护和用户数据完整性保护功能进行防篡改保护。

 

数据库通过SSL 通信进行传输完整性保护,配置SSL 传输加密。

通过在每个数据块头增加“数据水印”,KingbaseES 实现了数据存储过程中的完整性校验和保护。每次读磁盘时,自动进行数据水印校验。每次写磁盘时,自动更新数据水印。数据校验支持CRC、SM3、SM3_HMAC 算法。

 

 

三问:防信息泄露

蔡小X:R系统现在的数据都是明文,很容易发生数据泄露。KingbaseES如何防止数据泄露?

 

华生·K:KingbaseES有加密机制专门防止信息泄露。包括透明存储加密、非透明加密、数据脱敏、客体重用,其中透明加密包括加密对象,加密引擎,加密备份恢复以及配置文件加密。

 

透明存储加密

KingbaseES 实现了数据写到磁盘上时对其进行加密,当授权用户重新读取数据时再对其进行解密。无需对应用程序进行修改,授权用户甚至不会注意到数据已经在存储介质上加密,加密解密过程对用户都是透明的。加密对象目前包含两种,分别是表空间和表,对应的加密方式为表空间加密和表加密。需要注意的是不同的加密方式是互斥的,同一加密对象不允许同时支持多种加密方式。

表空间加密

create tablespace ts location '/home/kingbase/ts' with(encryption = true, enckey ='k1eyenc2');

--encryption: 标识当前表空间为加密表空间

--enckey: 用户自定义的表空间加密密钥

--sysencrypt.encrypt_user_tablespace

--这个属于加密插件里面的参数,true 为创建的表空间为默认加密表空间,false 则关闭此参数

--如何确认数据是否被加密

--首先确认数据所在加密对象的物理文件位置

--示例:

select oid,relname, relfilenode from sys_class where relname = 'test';

--然后根据此语句查询出来的relfilenode 号找到物理文件所在位置,或是

select sys_relation_filepath(sys_relation_filenode('test'));

--找到数据文件的具体位置

--hexdump -c 数据库文件如果对比其他明文文件是可以很明显的看到数据是加密的,都是一些不可见字符或乱码,证明加密成功。

 

四问:防抵赖

蔡小X:我们还发现有时候数据被非法修改,但又没有记录是谁进行的修改操作。KingbaseES如何处理这种情况呢?

 

华生·K: 任何系统的安全保护措施都不是完美无缺的,蓄意盗窃,破坏数据的人总是想方设法打破控制,审计功能将用户对数据库的所有操作自动记录下来放入审计日志中,审计员可以通过对审计日志的分析,对潜在的威胁提前采取有效的措施加以防范。KingbaseES 数据库提供了一套完整的审计机制,用来保证对数据库中的各种行为进行监控,进而为数据库的安全、可靠和有效提供有力的保障。

审计

KingbaseES 实现了审计功能记录用户的行为,主要实现了服务器实例级别审计、语句级别审计、模式对象级别审计。

根据审计用户的不同,需要使用不同用户进行审计规则设置:数据库审计员负责设置对超级用户(包括数据库管理员)及数据库安全员 的审计规则;数据库安全员负责设置对普通用户和数据库审计员的审计规则。

数据库审计员和数据库安全员登录数据库之后,可以直接设置审计规则:

--数据库审计员设置语句级审计规则,审计类型为select table 语句,审计用户为数据库管理员system,审计对象为public 模式下的tab1

select sysaudit.set_audit_stmt('select table','system','public','tab1');

--数据库安全员设置对象级审计规则,审计类型为table 对象,审计用户为普通用户user1,审计对象为public 模式下的tab2

select sysaudit.set_audit_object('table','user1','public','tab2');

 

数据库审计员和数据库安全员可以在security 数据库下查询系统视图来查看相应的审计日志:

--数据库审计员需要查询视图sysaudit_record_sao,可以查看超级用户(包括数据库管理员system)和数据库安全员的审计日志

select * from sysaudit_record_sao;

--数据库安全员需要查询视图sysaudit_record_sso,可以查看普通用户和数据库审计员的审计日志

select * from sysaudit_record_sso;

 

五问:防权限提升

蔡小X:R系统中很多普通用户都有超级用户的权限,这样会很不安全,KingbaseES数据库有权限管理机制吗?

 

华生·K:KingbaseES 采用了三权分立的安全管理体制,数据库三权分立是为了解决数据库超级用户权力过度集中的问题,参照行政、立法、司法三权分立的原则来设计的安全管理机制。

三权分立

KingbaseES把数据库管理员分为数据库管理员、安全管理员、审计管理员三类。

• 数据库管理员

主要负责执行数据库日常管理的各种操作和自主存取控制。

• 安全管理员

主要负责强制存取控制规则的制定和管理。

• 审计管理员

主要负责数据库的审计,监督前两类用户的操作。

三权分立堵住了滥用数据库超级用户特权的安全漏洞,进一步提高了数据库的整体安全性。

KingbaseES 允许修改安全员和审计员的用户名。

\c test system

alter user sao rename to sao2;

alter user sso rename to sso2;

\du

select * from sys_authid;

此外,KingbaseES 还通过受限DBA、安全管理员sso 执行DCL 等机制,进一步限制数据库管理员的权限。

 

六问:拒绝服务

蔡小X:我们还发现系统存在某些用户占用过多资源,导致其他用户无法使用数据库。KingbaseES是怎么样避免这种情况呢?

 

华生·K:KingbaseES可以限制用户使用的存储空间和CPU 资源,KingbaseES 通过kdb_resource_group 插件来实现用户限额功能, 通过sys_spacequota插件实现用户表空间限额。

 

七问:安全资质

蔡小X:目前看来,KingbaseES数据库确实能消灭R系统的不安全漏洞。但请问KingbaseES有相关的安全资质证书吗?

 

华生·K:这个可以完全放心。人大金仓的KingbaseES是获得安全资质最全,安全等级最高的数据库产品。也是率先通过公安部计算机信息系统安全产品质量监督检验中心的强制性安全认证,并获得销售许可证的数据库产品。已获取的资质证书有:

编号

资质名称

1

信息技术产品安全分级评估证书(EAL4)

2

商用密码产品认证证书

3

安全四级

4

国家信息安全产品认证

5

网络安全专用产品认证

 

蔡小X:太棒了,我马上回去向领导汇报,将数据库升级为KingbaseES,有全面的安全解决方案并且证书资质齐全。

华生·K:快去吧,使用KingbaseES再也不用害怕数据库安全威胁了。

 

结语

KingbaseES 是自主研发的高安全性数据库产品,通过全新的结构化系统设计和强化的多样化强制访问控制模型框架,开发了多个高等级的安全特性,并完整实现包括特权分立、身份鉴别、多样化访问控制、用户数据保护、审计等在内的全部结构化保护级的技术和功能要求。

KingbaseES纵深防御,为数据库安全保驾护航!

 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论