数据库原理与设计 第五章
数据库对象(表)的授/撤权
• 授权:
GRANT <权限> ON <表名> TO <受权者>[{, <受权者>}] [WITH GRANT OPTION] <权限>::=ALL PRIVILEGES | <操作> [{, <操作>}]
<操作>::=SELECT | INSERT | DELETE | UPDATE [(<列名表 >)] 得到授权的用 <列名表>::= <列名> [{, <列名>}] 用户的数据库级系 户,可将其获 统角色。新创建的 得的权限转授 <受权者>::= PUBLIC | <用户> 用户一般为PUBLIC 给其他用户 角色
主要内容:
1.SQL SERVER安全体系结构
2.SQL SERVER登录用户
3.SQL SERVER数据库用户 4.SQL SERVER角色定义 5.SQL SERVER语句授权 6.SQL SERVER对象授权
SQL SERVER安全体系结构
某RDBMS (Oracle,SQL Server„) RDBMS用户 Login 定义角色 (role) 某个DB 用户 授权 某个数据库 (教学管理DB)
安全级别
• 现状:目前大多数RDBMS支持C2级DAC和B1级MAC。 • DoD(美国防部)的桔皮书中定义: • 计算机系统的安全级为A、B、C和D四个等级,A最高, D最低。
• C级:要求支持DAC,又分二个子级C1、C2。C2要求身份 认证(Login verification)和审计跟踪(Audit Trails)。
数据库安全性概况
• 定义:数据库的安全性(Security)是指保护数 据库,防止不合法的使用,以免数据的泄密、 更改或破坏。
• 从低到高在五个级别上设臵各种安全措施:
环境级。职员级。OS级。网络级。DBS级。
DBMS与OS在安全上的关系
• 除了OS的安全屏障外,DBMS为加强其安全性, 亦应建立有自己的安全体系; • 由于DBMS建立在OS之上,要求OS提供承诺,即: 不允许用户绕过DBMS安全体系而直接访问DB; • 正是因为DBMS和OS有各自独立的安全体系,因 此OS的用户要想访问DBMS,必须由DBA设臵成 DBMS的用户。
• B级:要求支持MAC,又分三个子级B1、B2、B3。 • A级:要求有数学防范能力。
用户标识与鉴别
• 用户标识:用户名。 • 用户鉴别: • 只有用户知道的信息,如口令、公式等;
• 只有用户具有的物品,如钥匙、IC卡等;
• 个人特征,如指纹、眼波纹等。 • 最常见的用户鉴别:口令,要求长度/时间长短/不回显, 不可逆加密保存。
• 撤权:
REVOKE <权限> ON <表名> FROM <受权者> [{, <受权者>}]
数据库对象权限授权示例
• SQL2定义了六种权限:SELECT,INSERT,DELETE, UPDATE,REFERENCES,USAGE(对已定义域的授权) 例1:把对关系S的查询,修改权限授给用户WANG,且 WANG还可以把这些权限转授给其他用户。 GRANT SELECT,UPDATE ON S TO WANG WITH GRANT OPTION 例2:把对关系SC中Score的修改权限授给用户LIU。 GRANT UPDATE (Score) ON SC TO LIU 例3:用户SUN建立新关系时,可以引用关系C的主键Cid作为 新关系的外键。 GRANT REFERENCES(Cid) ON C TO SUN • 回收权限 REVOKE SELECT,UPDATE ON S FROM WANG CASCADE
•可被授予的权限(Authorization) (1)角色权限 ── 用户在DB中被赋予不同的角色, 角色不同则权限也不同。由的数据库对象,其可 提供给用户的操作也不一样。由DBA或对象创建 者授予。 •授权语句(SQL的DCL子集)
•撤权语句(SQL的DCL子集)
SQL SERVER数据库用户
某RDBMS (Oracle,SQL Server„) 某个数据库 (教学管理DB)
DML使用授权
RDBMS用户 Login
定义角色 (role)
某个DB 用户
授权
DB对象授权
其他数据库
操作系统 OS (如 Windows XP)
用户login
1. 一个登录用户在被设定为某个数据库用户之前,可用guest用户身份访问该数据 库。 2. 定义登录用户为某个DB用户,可访问某个数据库。 sp_grantdbaccess [ @loginame = ] ‘登录名' [ , [ @name_in_db = ] ‘访问数据库时用的名字’ ] 3. 该命令必须在所要访问的数据库下执行。
新角色的创建
sp_addrole [ @rolename = ] ‘ 新角色名’ [ , [ @ownername = ] ‘该角色所有者’ ] 如在教学信息管理数据库中,除DBO,public外,再创建一 个DBuser-S(学生角色)
为角色增加成员用户:sp_addrolemember
删除角色:sp_droprole 查询角色信息:sp_helprole
数据库原理及设计
Principle and Design of Databases
主讲: 朱 焱 教授
yzhu@ SIST, SWJTU 2011.11
第五章
学习内容和要求
•数据库保护概况
•数据库安全性
数据库的保护
•数据库完整性
•故障恢复
•并发控制
数据库保护概况
• 数据库破坏类型 System Failure; Concurrency Execution引起数据不一致; 非法用户; 非法数据。 • 各种类型的保护措施 ① System Failure ── 故障恢复; ② Concurrency Execution引起数据不一致 ── 并发控制; ③ 非法用户── 数据库安全(权限控制); ④ 对数据操作引入的数据错误 ── 数据库 完整性。
SQL SERVER语句授权
某RDBMS (Oracle,SQL Server„) 某个数据库 (教学管理DB)
DML使用授权 DB对象授权
RDBMS用户 Login
定义角色 (role)
某个DB用 户 授权
其他数据库
操作系统 OS (如 Windows XP)
用户login
某数据库的用户。当他要执行数据库操作之前,还必须为该用户授予所要操作对象或 命令的权限。 DCL授权语法: GRANT { ALL | 语句 [ ,...n ] } TO <数据库角色或用户> [ ,...n ] 可被授权的语句: CREATE DATABASE、CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE RULE、CREATE TABLE、CREATE VIEW、BACKUP DATABASE、BACKUP LOG。
• 由超级用户为每一个登录的用户分配角色组,每组有其规定 DB操作的权限。 • Public为公共组角色,权利低,新用户常被分到public组。 • 角色和用户之间是多对多的关系:一个业务用户可以属于多个角 色组,一个角色组有多个用户。如学生既属于选课成绩表可读角 色组,又属于选课表可读写角色组。
DAC访问控制的授/撤权
角色权限的授/撤权
GRANT <角色类型> [{ ,<角色类型>}] TO <用户> [IDENTIFIED BY <口令>] <角色类型>::=Connect|Resource|DBA 例如: GRANT DBA TO Wan 撤权: REVOKE <角色类型>[{ ,<角色类型>}] FROM <用户> 例如:REVOKE DBA FROM Wan
DML使用授权 DB对象授权
其他数据库
操作系统 OS (如 Windows XP)
用户login
说明: ① 登录名可以与DB用户名相同。登录用户只有在成为某个DB的用 户时才能访问该DB。 ③ 由上图可知,SQL SERVER安全体系由三级组成,即:DBMS或DB服务 器、DB、语句与对象级。
DBMS级
DB级
语句对象级
SQL SERVER登录用户
某RDBMS (Oracle,SQL Server„) 某个数据库 (教学管理DB)
DML使用授权 DB对象授权
RDBMS用户 Login
定义角色 (role)
某个DB 用户 授权
其他数据库
操作系统 OS (如 Windows XP)
用户login 1. SQL SERVER在安装时,自动创建sa(系统管理员),具有三级体系的 所有权限。 2. 由sa创建RDBMS登录用户:可利用存储过程 sp_addlogin [@loginame = ] ‘登录名’ [ , [ @passwd = ] ‘口令’ ] [ , [ @defdb = ] ‘缺省数据库名’ ] 3.登录用户一旦创建即可连接 SQL Server。如果指定了默认数据库,则一登 录SQL Server就连接到该数据库。
SQL中的安全性机制
• 视图:被用来对无权用户屏蔽物理数据。 • 权限:将对数据库对象的操作定义为权限提供给用户。 • 用户是实际的人或是访问数据库的应用程序。
• 从应用业务角度看,某个数据库可有多个用户:
• 教学管理数据库系统:学生、教师、学院教务员、校教 务处人员、家长。 • 每个用户有独立的ID和PSW,用户需要登录到DB中才 能使用DB。 • 角色是一组具有相同权限的用户。