访问控制是系统保密性、完整性、可用性和合法使用性的重要基础,是网络安全防范和资源保护的关键策略之一,访问控制包括主体、客体和控制策略三个要素。
优炫数据库(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的访问权。




