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

UXDB 数据库安全

原创 沈克伟 2022-01-19
1436

访问控制是系统保密性、完整性、可用性和合法使用性的重要基础,是网络安全防范和资源保护的关键策略之一,访问控制包括主体、客体和控制策略三个要素。

优炫数据库(UXDB)通过自主访问控制(Discretionary Access Control,DAC),在文件、文件夹和共享资源中设置许可,对客体访问权限进行设定,确保内容传播控制在一定范围内,确保数据安全。

访问操作

优炫数据库(UXDB)对任何SQL对象进行操作有明确的权限许可,并且权限随操作和对象的变化而变化。操作和对象是紧密相连的,即把“操作+对象”作为一个授权。下表是一些基本授权(GRANT)语句对对象和相关操作的举例。


访问规则

优炫数据库(UXDB)以访问控制表或访问矩阵的形式表示,并通过执行相应的访问控制程序实现。每当执行SQL语句、有访问要求出现时,通过调用相应的访问控制程序,实现对访问要求的控制。

访问控制粒度

根据数据库特点和不同安全保护等级的不同要求,实现不同粒度的访问控制。优炫数据库(UXDB)客体所有者可以规定并控制对客体的访问,并阻止非授权用户对客体的访问。

优炫数据库(UXDB)自主访问控制粒度可达表级和字段级。通过GRANT命令对用户授予表的操作权限,也可以通过REVOKE命令收回授予的权限。

例如:

●表级

1)用户登录控制台,创建普通用户user1、user2、user3

create user user1 password '***';

create user user2 password '***';

create user user3 password '***';

2)user1创建测试表

create table public.test(a int,b int,c int);

insert into test values (1,2,3);

3)user1将表test的权限授予user2

grant all>4)分别以user2(授权用户)和user3(非授权用户)访问test

授权用户user2可以访问表test


非授权用户user3无法访问表test


5)user1用户登录控制台收回权限

revoke all>user2用户再次访问表test工具

●字段级

1)用户登录控制台,创建普通用户u1、u2

create user u1 password '***';

create user u2 password '***';

2)切换到u1用户创建测试表

ccreate table public.t1(a int,b int,c int);

insert into t1 values (1,2,3);

3)u1授予u2对a,b列上的所有权限

grant all(a,b)on test to u2;

4)切换到u2用户对表t1进行写操作

insert into t1 values (4,5,6);


insert into t1(a,b) values (4,5);

5)切换到u2用户对表t1进行读操作

select * from t1;


select a,b from t1;


限制授权传播

为了增强数据库系统的安全性,需要对授权传播进行某些限制。优炫数据库(UXDB)有授权传播限制功能,防止权限传播导致权限无限放大。

上述中,user1是表test的所有者,user1对表test有所有权限。user1给user2授予了对表test的访问权(GRANT),此时user2仅仅对表test有访问权,并不能将表test的访问权限再授予其他用户。

用user2登录控制台,尝试通过user2将表test的访问权授予user3,由于表test属于user1,而user2对表test只有访问权,故无法再将表test的权限授予其他用户。


那么,我们可以通过user1向user2授予转授权的权限,在通过user2获得的user1授予的权限,进行授权传播。

先用user1登录控制台,授予user2转授权权限。


再用user2登录进行权限传播。传播成功之后,user3就会有test的访问权。










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

评论