8.2.1 SQL对数据库安全的支持
在ISO SQL中提供了基本的数据库安全支持,它们是:自主访问控制与授权功能。它包括了操作、数据域与用户三部分。
1)操作:SQL提供了六种操作权限。
●SELECT权:即是查询权;
●INSERT权:即是插入权;
●DELETE权:即是删除权;
●UPDATE权:即是修改权;
●REFERENCE权:即是定义新表时允许使用它表的键作为其外键;
●USAGE权:允许用户使用已定义的属性。
2)数据域:数据域即是用户访问的数据对象的粒度,SQL包含三种数据域。
●表:即以表作为访问对象;
●视图:即以视图作为访问对象;
●列:即以表中列作为访问对象。
3)用户:即是数据库中所登录的用户。
4)授权语句:SQL提供了授权语句,它的功能是将指定数据域的指定操作授予指定的用户,其语句形式如下:
GRANT<操作表>ON<数据域>TO<用户名表>[WITH GRANT OPTION]
其中WITH GRANT OPTION表示获得权限的用户还能获得传递权限,即能将获得的权限传授给其它用户。
例8.1 GRANT SELECT,UPDATE ON S TO XU LIN WITH GRANT OPTION
表示将表S上的查询与修改权授予用户徐林(XU LIN),同时也表示用户徐林可以将此权限传授给其它用户。
5)回收语句:用户A将某权限授予用户B,则用户A也可以在它认为必要时将权限从B中收回,收回权限的语句称为回收语句,其具体形式如下:
REVOKE<操作表>ON<数据域>FROM<用户名表>[RESTRICT/CASCADE]
语句中带有CASCADE表示回收权限时要引起连锁回收,而RESTRICT则表示不存在连锁回收时才能回收权限,否则拒绝回收。
例8.2 REVOKE SELECT,UPDATE ON S FROM XU LIN CASCADE
表示从用户徐林中收回表S上的查询与修改权,并且是连锁收回。
6)自SQL′99以后SQL提供了角色(role)功能。角色是一组固定操作权限,之所以引入角色,其目的是为简化操作权限管理。角色分类有3种,它们是CONNECT、RESOURCE和DBA,其中每个角色拥有一定的操作权限。
(1)CONNECT权限。该权限是用户的最基本权限,它又称public。每个登录用户至少拥有CONNECT权限,CONNECT权限包括如下内容。
●可以查询或更新数据库中的数据;
●可以创建视图或定义表的别名。
(2)RESOURCE权限。该权限是建立在CONNECT基础上的一种权限,它除拥有CONNECT的操作权外,还具有创建表、表上索引以及在该表上所有操作的权限和对该表所有操作作授权与回收的权限。
(3)DBA权限。DBA拥有最高操作权限,它除拥有CONNECT与RESOURCE权限外,能对所有表的数据做操纵,并具有控制权限与数据库管理权限。它又称SYSTEM。
DBA通过角色授权语句将用户及相应角色登录,此语句形式如下:
GRANT<角色名>TO<用户名表>
此语句执行后,相应的用户名及其角色均进入数据库中数据字典,此后相应用户即拥有其指定的角色。
同样,DBA可用REVOKE语句取消用户的角色,此语句形式如下:
REVOKE〈角色名〉FROM〈用户名表〉
例8.3 GRANT CONNECT TO XU LIN
此语句表示将CONNECT权授予用户徐林。
例8.4 REVOKE CONNECT FROM XU LIN
此语句表示从用户徐林处收回CONNECT权限。
在ISO SQL中不提供身份标识与鉴别功能,但在一般数据库产品中均有此项功能。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。