1
数据库原理与应用技术
1.7.4.3 6.4.3 权限的转授与回收
6.4.3 权限的转授与回收

数据库安全最重要的一点就是确保DBA和用户只授权给有资格的用户访问数据库,同时令所有未被授权的用户无法接近数据,这主要通过数据库系统的存取控制机制实现。

存取控制机制主要包括两部分。

(1) 定义用户权限,并将用户权限登记到数据字典中。

(2) 合法权限检查,每当用户发出存取数据库的操作请求后(请求一般应包括操作类型、操作对象和操作用户等信息),DBMS查找数据字典,并根据安全规则进行合法权限检查。若用户的操作请求超出了定义的权限,则系统将拒绝执行此操作。

用户权限定义和合法权限检查机制一起组成了DBMS的安全子系统。

大型数据库管理系统大多支持自主存取控制,目前的SQL标准也对自主存取控制提供支持,这主要通过SQL的GRANT语句和REVOKE语句来实现。

权利授予和回收命令由数据库管理员或特定应用人员使用。系统在对数据库进行操作前,应先核实相应用户是否有权在相应数据上进行所要求的操作。

权限的转授与回收是指数据库系统允许用户把已获得的权限再转授给其他用户,也允许把已授给其他用户的权限再回收回来,但应保证转授出去的权限能收得回来。

为了便于回收,可用权限图表示转让关系。权限图可以用树来表示,图6-1就是一个权限图。

图6-1 权限图

DBA将权限授予用户U1、用户U2、用户U3,用户U1将权限转授给用户U4,用户U3将权限转授给用户U5和用户U6。

用户拥有权限的充分必要条件是在权限图中从根节点到该用户节点存在一条路径。

画一个权限图,只要根节点到用户节点之间存在一条路径,那么用户就有权限,回收时就是删除某些路径。比如DBA收回用户U3的权限,同时也会收回用户U3授予用户U5和用户U6的权限。在权限树中,若要收回某个用户节点的权限,则需要删除从该用户节点的双亲节点到该节点的所有子孙节点的路径。