试验五-数据安全性
2017 级计算机专业集美大学计算机工程学院2018~2019 学年第二学期 《数据库原理》实验报告《数据库原理》实验报告 一.实验目的:实验目的: 掌握 SQL Server 的安全机制。 掌握服务器的安全性的管理。 掌握数据库用户的管理。 掌握权限的管理。 一、一、实验使用环境:实验使用环境: SQL server 2012、 二、二、实验内容与完成情况:实验内容与完成情况: 实验准备部分操作: 1.创建登录账户、用户账户 --添加SQL server身份验证的登陆账户“zzh”: c sp_addlogin zzh , 123 运行结果: use 销售管理 --创建用户账户 c sp_grantdbaccess zzh , zzhDB 1 2017 级计算机专业集美大学计算机工程学院2018~2019 学年第二学期 2.删除用户账户: --删除用户账户 c sp_revokedbaccess zzhDB 3.为 zzh 添加对系统的所有操作权: --添加为角色sysadmin的用户 c sp_addsrvrolemember zzh , sysadmin 4.删除 sysadmin 角色映射: --删除sysadmin角色映射 c sp_dropsrvrolemember zzh , sysadmin 2 2017 级计算机专业集美大学计算机工程学院2018~2019 学年第二学期 5.为 zzh 添加对数据库销售管理的任意操作权限 --添加db_owner操作权限 c sp_addrolemember db_owner , zzhDB 6.添加特殊操作权限 3 2017 级计算机专业集美大学计算机工程学院2018~2019 学年第二学期 7.设置用户 zzhDB 只能查看 employees 的数据不能修改: use 销售管理 grant select on Employees to zzhDB 8.为一群用户设置仅能查看的权限: 9.设置为 SQL server 和 Windows NT 混合认证: 4 2017 级计算机专业集美大学计算机工程学院2018~2019 学年第二学期 --题目1 --添加用户名为‘王明’的用户 c sp_grantdbaccess zzh , 王明 --创建视图,选择财务部的员工 go create view Emp_view as select * from Employees where Dep_no=(select Dep_no from Department where Dep_name= 财务部 ) --为‘王明’设置查看权限 go grant select on Emp_view to 王明 验证:创建SQL连接方式 测试代码: --测试1 select Emp_name from Employees where Dep_no=13 测试结果: 5 2017 级计算机专业集美大学计算机工程学院2018~2019 学年第二学期 --测试2 select * from Emp_view 测试结果: 解题思路:由于精确到具体表具体列的一部分,因此不能直接授权到表,因为这样无法精确到某些数据, 因此创建视图,把符合要求的数据插入后,授权到该视图即可,值得注意的是,测试时一定要用 SQL验证 的创建用户登录。 --题目2 --新建角色 c sp_addrole role_emp --将‘王明’添加到角色role_emp c sp_addrolemember role_emp , 王明 --为角色设置访问权限 grant select(Emp_no,Emp_name) on Employees to role_emp 运行结果: 6 2017 级计算机专业集美大学计算机工程学院2018~2019 学年第二学期 解题思路:创建角色-创建用户-把用户添加到角色-设置访问权限 --题目3 --创建视图 go create view WM_view as select * from Purchase where Emp_no=(select Emp_no from Employees where Emp_name= 王明 ) go --添加查看权限 grant select on Purchase to 王明 --添加修改权限 grant update on WM_view to 王明 7 2017 级计算机专业集美大学计算机工程学院2018~2019 学年第二学期 验证:更换用户 setuser 王明 --更换用户 测试表与视图的查询情况: --测试1:无关表无法查看 select * from Sell --测试2:Purchase表可以查看 select * from Purchase --测试2:VW_view表可以查看 select * from VM_view 8 2017 级计算机专业集美大学计算机工程学院2018~2019 学年第二学期 修改视图并同步表: 原数据 修改代码: update WM_view set Pur_price=Pur_price+200 where Pur_no=104 修改后数据 解题思路:在用户sa状态下创建视图,对权限进行修改,设置可查看权限和可修改视图权限,切换用户到 王明,进行测试即可。 4.4. 如何使得采购部门的员工都具有这样的权限:能查看进货表的信息,并拥有对自已采购信息的修改,如何使得采购部门的员工都具有这样的权限:能查看进货表的信息,并拥有对自已采购信息的修改, 其它的信息无权查看。(要求:编写存储过程其它的信息无权查看。(要求:编写存储过程 proc_stu_grantproc_stu_grant,其作用:输入参数为员工姓名,从进货,其作用:输入参数为员工姓名,从进货 9 2017 级计算机专业集美大学计算机工程学院2018~2019 学年第二学期 表中查找该员工所进货的产品,如果没有则返回,有的话则相应的在表中查找该员工所进货的产品,如果没有则返回,有的话则相应的在 loginlogin 表中添加账号和密码。并表中添加账号和密码。并 且,创建相应的登录账号和数据库用户)且,创建相应的登录账号和数据库用户) create proc proc_stu_grant ( ) as begin declare @sql varchar(255)--声明数据库代码 declare @name varchar(14)--声明视图名称 if exists (select Pur_no from Purchase--判断输入的员工姓名是否存在售货信息 where Emp_no in (select Emp_no from Employees where Emp_name=@Emp_name)) @Emp_name nvarchar(20) --输入员工姓名参数 begin as --若存在 set @name = @Emp_name+ _view --对视图名称进行修改 ----对sql代码进行赋值,复制