|
|
|
视图是给用户提供个性化数据库模型的一种手段,而且可以隐藏用户不需要看见的数据。视图隐藏数据的能力既可以用于简化系统的使用,又可以用于实现安全性。由于视图只允许用户关注那些感兴趣的数据,它简化了系统的使用。尽管用户可能不被允许直接访问某个关系,但用户可能被允许通过一个视图访问该关系的一部分。因此,关系级的安全性和视图级的安全性可以结合起来,用于限制用户只能访问所需数据。
|
|
|
|
例如,银行高管考虑一个需要知道在各支行有贷款的所有客户姓名的职员。该职员不能看到与客户具体贷款相关的信息。因此,该职员对loan关系的直接访问必须被禁止,但是,如果他要访问所需信息,就必须得到对视图cust-loan的访问,这一视图由所有客户姓名及其贷款支行构成。此视图可以用SQL定义如下:
|
|
|
|
|
|
|
|
|
|
显然,该职员被允许看到此查询的结果。但是,当查询处理器将此查询转换为数据库中的事实关系上的查询时,它产生的是borrower和loan上的查询。因此,系统对职员查询授权的检查必须在查询处理开始之前进行。
|
|
|
|
创建视图并不需要resource授权。创建视图的用户不一定能获得该视图上的所有权限,他得到的权限不会为他提供超过原有授权的其他授权。例如,在用来定义视图的关系上没有update授权的用户不能得到相应视图上的update授权。如果用户创建一个视图,而此用户在该视图上不能获得任何授权,这样的视图创建请求将被系统拒绝。在cust-loan的例子中,视图的创建者必须在关系borrower和loan上都具有read授权。
|
|
|