4.6.5 权限的转移

4.6.5 权限的转移

获得了某些形式授权的用户可能被允许将此授权传递给其他用户。

  • 在默认方式下,被授予权限的用户/角色无权把得到的权限再授予给另外的用户/角色。
  • 如果我们在授权时允许接受者把得到的权限再传递给其他用户,我们可以在相应的grant命令后面附加with grant option子句。

例如,如果我们希望授予Amitdepartmen上的select权限,并且允许Amit将该权限授予给其他用户,我们可以写:

1
2
3
grant select
on department to
Amit with grant option;

对象创建者拥有该对象的所有的权限

一个对象(关系/视图/角色)的创建者拥有该对象上的全部权限,包括给其他用户授权的权限。
作为一个例子,考虑大学数据库中teaches关系上更新权限的授予。假设最初数据库管理员将teaches上的更新权限授给用户U1、U2和U3,他们接下来又可以将这一授权传递给其他用户。

授权图

指定权限从一个用户到另一个用户的传递可以表示为授权图(authorization graph)。

顶点

图中的顶点代表的是用户

授权图中的根就是代表数据库管理员的顶点

实例

考虑teaches上更新权限所对应的授权图。如果用户Ui,将teaches上的更新权限授给Uj,则图中包含边UiUj。图的根是数据库管理员。
这里有一张图片
在图4-10所示的示例图中,注意U1和U2都给用户U5授权了;而U4只从U1处获得了授权。

用户具有权限的充分必要条件

当且仅当存在从授权图的根到代表该用户顶点的路径