4.6.5 权限的转移
获得了某些形式授权的用户可能被允许将此授权传递给其他用户。
- 在默认方式下,被授予权限的用户/角色无权把得到的权限再授予给另外的用户/角色。
- 如果我们在授权时允许接受者把得到的权限再传递给其他用户,我们可以在相应的
grant
命令后面附加with grant option
子句。
例如,如果我们希望授予Amit
在departmen
上的select
权限,并且允许Amit
将该权限授予给其他用户,我们可以写:
1 | grant select |
对象创建者拥有该对象的所有的权限
一个对象(关系/视图/角色)的创建者拥有该对象上的全部权限,包括给其他用户授权的权限。
作为一个例子,考虑大学数据库中teaches
关系上更新权限的授予。假设最初数据库管理员将teaches
上的更新权限授给用户U1、U2和U3,他们接下来又可以将这一授权传递给其他用户。
授权图
指定权限从一个用户到另一个用户的传递可以表示为授权图(authorization graph
)。
顶点
图中的顶点
代表的是用户
。
根
授权图中的根就是代表数据库管理员的顶点
实例
考虑teaches
上更新权限所对应的授权图。如果用户Ui
,将teaches
上的更新权限授给Uj
,则图中包含边Ui
→Uj
。图的根是数据库管理员。
在图4-10所示的示例图中,注意U1和U2都给用户U5授权了;而U4只从U1处获得了授权。
用户具有权限的充分必要条件
当且仅当存在
从授权图的根到代表该用户顶点的路径
。
原文链接: 4.6.5 权限的转移