03-SQL语言
数据库安全性
数据控制语言(GRANT、REVOKE)
数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露 更改和破坏。
数据库安全性控制手段:用户身份鉴别, 多层存取控制,审计,视图和数据加密(分为存储加密和传输加密)。
存取控制分为 自主存取控制和强制存取控制
自主存取控制
用户对于不同的数据库对象有不同的存取权限,不用的用户对同一对象也有不同的权限,而且用户还可将其拥有的存取权限转授给其他用户。自主存取控制非常灵活。
-- 授权语句
GRANT 权限 ON 对象类型 对象名 TO 用户/角色 [WITH GRANT OPTION];
-- 撤销权限
REVOKE 权限 ON 对象类型 对象名 FROM 用户/角色;
-- 示例:授予用户对表的查询权限
GRANT SELECT ON TABLE student TO user1;
-- 示例:授予用户对表的所有权限,并允许转授
GRANT ALL PRIVILEGES ON TABLE employee TO user2 WITH GRANT OPTION;
-- 示例:撤销用户的插入权限
REVOKE INSERT ON TABLE student FROM user1;
强制存取控制
每一个数据对象被标以一定的密级,每一个用户也被授予某一个级别的许可证。对于任意一个对象,只有具有合法许可证的用户才可以存取。强制存取控制是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据。
强制存取控制读写规则
-
向下读(No Read Up):仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体。
-
向上写(No Write Down):仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体。
练习题
-
什么是数据库的自主存取控制方法和强制存取控制方法,强制存取控制的读写规则是什么?
-
自主控制语句是怎样的?请举例说明。
-
简述数据库安全性控制的主要手段。
-
解释 WITH GRANT OPTION 的作用。
-
强制存取控制与自主存取控制的主要区别是什么?