200 likes | 318 Views
第四章 数据库安全性. 教学目标: 了解软件安全的标准 掌握数据库的授权方法 难点 : 理解授权机制 课时: 3. 4.1 计算机安全性概论. 安全性:防止因用户 非法 使用数据库造成数据泄漏、更改或破坏 4.1.1 计算机系统的三类安全性问题 计算机安全性 — 技术安全 管理安全 政策法律 4.1.2 安全标准 TCSEC : 1985 美国国防部 TCSEC/T DI: 1991 扩展到数据库 数据库 一般达到 c2 级 CC 标准. 破解密码. 进入. 应用程序. DBMS. OS. DB. 用户标识 和鉴定.
E N D
第四章 数据库安全性 • 教学目标: • 了解软件安全的标准 • 掌握数据库的授权方法 • 难点: • 理解授权机制 • 课时:3
4.1 计算机安全性概论 • 安全性:防止因用户非法使用数据库造成数据泄漏、更改或破坏 • 4.1.1 计算机系统的三类安全性问题 • 计算机安全性— • 技术安全 • 管理安全 • 政策法律 • 4.1.2 安全标准 • TCSEC : 1985 美国国防部 • TCSEC/TDI: 1991 扩展到数据库 • 数据库 一般达到 c2级 • CC 标准
破解密码 进入 应用程序 DBMS OS DB 用户标识 和鉴定 存取控制 操作系统 安全保护 密码存储
4.2 数据库的安全性控制 • 安全性控制的一般方法 • 1. 用户标识合鉴定 • 最外层安全保护措施 • 用户名、口令—保证合法用户进入 • 2. 存取控制 • 自主存取控制 DAC • 保证用户只能访问他有权存取的数据 • Grant 及 Revoke • 强制存取控制 MAC • 3. 视图机制 • 4. 审计 • 5. 数据加密
数据库安全性 • 计算机系统的三类安全性问题 • DBMS 一般达到哪一级安全级别 • 数据库安全控制的方法 • 自主存取控制(DAC)、 • 强制存取控制(MAC) • 审计
4.2.4 授权与回收 • 一 授权 • Grant <权限> [,<权限>] … • [ON <对象类型> <对象名>] • TO <用户> [,<用户>] ….. • [WITH Grant Option] • 注意:sql-server 中 对象类型不需要
权限类别: • SELECT ,INSERT ,Update,Delete , • Alter , Index • ALL Privileges • CreateTab • WITH Grant OPTION • 用户获得某权限后,该用户有权把他得到的权限再授予别人
例1 把查询 student 的权限授予用户 U1 • Grant Select • ON TABLE student TO U1 • 例2 把对 student,course 表的 select ,update,insert 权限授予用户 U2,u3 • Grant select,insert,update • ON TABLE student,course TO U2,U3 • 例3 把查询 student 表和修改 学生学号的权限授予用户 U4 • Grant select,update (Sno) • ON TABLE student TO U4
sa • WITH Grant Option 可以级联手全 grant select , update on student to u1 with grant option U1 :student/ select,update u1 用户授权: grant select on student to u2 U2: student / select
二 收回权限 • REVOKE <权限> [,<权限>] … • [ON <对象类型> <对象名>] • From <用户> [,<用户>] ….. • [cascade] • 例4 把用户 U4 修改 学生学号的权限收回 • REVOKE update (Sno) • ON TABLE student FROM U4
三 视图机制 • 数据库 school 已经有一个用户 U1,但没有对他进行任何授权,请你设计一种方案,使U1 用户只能查询 1号和3号课程的学生成绩 ,写出实现的语句 • create view v_sc(sno,cno,grade) AS • select * from sc where cno in (’1’ , ‘3’) • GRANT Select ON TABLE V_sc TO u1
如何在SQL-SERVER中练习 三道门: 1 进入sql server 2 school 数据库 3 student 表 School student course sc Sale account Sql server 2000
1 创建新的登录,使用户得以进入 SQL Server • sp_addlogin ‘loginame’,’passwd’ • 2 为当前数据库中添加一个帐户。 • sp_grantdbaccess 'loginame' • Loginame 当前可以登录到Sql-server 的用户 • 此条命令必须在需要被授权的数据库下执行。
例如: • 1 exec sp_addlogin ‘u1‘ , '123‘ • -- 下句必须在 school 数据库下运行 • 2 exec sp_grantdbaccess ‘u1‘ • 可以登录,可以进入 school,但对school 没有任何权限,需要用 grant 语句授权 • 3 grant select,update on student to u1
3 角色 – 组 • 1)sp_addrole ‘rolename’新建一个组 • 2)将某用户添加到某一个组(数据库角色) • sp_addrolemember ‘rolename’ ,’membername’ • Rolename: 角色 membername:成员 • 例如: • exec sp_addrolemember db_owner,'a1‘ • db_owner:已存在的角色,数据库拥有者 • 3 sp_DropRoleMember 'rolename' , ‘membername’ • 删除角色中的成员 • 4 sp_dropRole ‘rolename’ • 删除角色
查询student,修改 sc 修改student,查询、修改 sc 销售 财务 王英 刘廷 陈胜 张新 赵开 钱庆
例如: • exec sp_addlogin 'a1‘ , '11‘ , 'school‘ • exec sp_grantdbaccess 'a1‘ • exec sp_addrolemember db_owner,'a1' • 对 school可以 进行一切操作
5 删除用户 • 从一个角色中删除一个成员 • exec sp_droprolemember db_owner , ‘u1‘ • 从数据库中删除一个用户,必须指定数据库 • sp_revokedbaccess ‘用户名‘ • 从Sql-server 中删除一个用户 • sp_droplogin ‘用户名‘ • 例如: • 选中 school • sp_revokedbaccess ‘u1‘ • sp_droplogin ‘u1'
权限控制练习 • 有2个用户m1,m2 要加入数据库school,m1拥有对数据库school的一切操作权限;m2拥有对student的查询、更改姓名的权限,并且只能查询 1号课程的学生成绩 , • 1)写出对m1,m2的授权语句 • 2)收回对m2的对student的修改姓名的权限 • 3)删除 m2用户
1) sp_addlogin ‘m1’,’11’ • sp_addlogin ‘m2’ ,’22’ • exec sp_addrolemember db_owner,‘a1‘ --在数据库 school 下 • sp_grantdbaccess ‘m2’ • grant select,update(sname) on student to m2 • 2) revoke update (sname) on student from m2 • 3) sp_revokedbaccess ‘m2' • sp_droplogin ‘m2'