
数据库安全管理实验12页.docx
12页数据库安全管理实验目的:理解 SQL Server2008 安全检查的三个层次:登录名、用户和权限; 理解 SQL Server 2008 中固定角色与自定义角色并掌握通过角色进行授权的方法;掌握使用 Grant/Revoke 语句进行权限管理实验环境及学时安排:1. SQL SERVER20082. 学时:2 学时实验准备:SQL Server2008 的安全检查分三个层次– 登陆名:登陆服务器时进行身份验证;– 用户:访问数据库须是数据库的用户或者是某一数据库角色 的成员;– 权限:执行语句时须有执行权限因此如果一个用户要在一个数据库中执行某条 SQL 语句必须首先为其创建登陆名(登录名可以选择 Windows 认证也可以选择 SQL Server 认证如果选择前者则要求该账号必须是 Windows 账号)接着在数据库中创建数据库用户,并让该用户映射已创建的登录名最后通过 GRANT 命令或成为某个角色成员获得该用户执行操作的权限第 12 页实验内容:1、 创建示例数据库/表l 创建 jiaoxue 数据库,并在该数据库下创建 Student、Course、SC 三个基本表,分别在三个表中输入必要的数据(该操作使用前面实 验的成果)。
本次实验的所有操作均在该数据库下完成2、 创建登陆名用户可以通过企业管理器或系统提供的存储过程来进行登录帐户的创 建l 首先在 Windows 中创建用户 John,然后在 Management Studio 中创建登录名 John,选择Windows 身份验证注销Windows 以 John 重新登录系统,点击 SQL Server 工具栏上的“数据库引擎查询”按钮, 在弹出的“连接到数据库引擎”窗口中选择 Windows 验证,使用刚创建的 John 账号登陆检验刚创建的登录名是否成功l 使用 Management Studio 创建登录名 xs, 密码是 123456,选择 SQL Server 验证方式,默认数据库为 masterl 使用 Create Login 创建登陆名 DB_user,密码是 zhimakaimen,SQL Server 认证方式,默认数据库为 master 的帐户CREATE LOGIN [DB_user]WITH PASSWORD='zhimakaimen', DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[简体中文],CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF3、修改和删除登陆名已建立的登陆账户信息可以使用系统存储过程来修改默认数据库、默 认语言、密码或删除用户。
l 使用 Alter login 将帐户 DB_user 登录名的默认数据库改为jiaoxuealter login [DB_user] with default_database=jiaoxuel 使用 Alter login 将帐户 DB_user 的密码改为自己的学号alter login DB_userwith password = '201041402134'l 使用 Drop Login 删除用户 xsDROP LOGIN xs4、创建数据库用户通过将服务器角色赋予不同的服务器登陆名,可以使之获得服务器级别的权限服务器角色主要是控制服务器端对请求数据库资源的访问权限,他允许或拒绝服务器登陆名的访问操作,但是在设置具体数据库的管 理和操作权限方面,服务器对象的权限设置粒度过大因此为了实现更细 粒度的权限管理, sqlserver 还提供了数据库级别的对象:数据库用户(User)、数据 角色(Role)、数据库架构(Schema)这三个对象是针对每一个数据库实例的,因此可以对单个数据库实例进行细化权限划分拥有服务器角色sysadmin 的登陆名将被映射为每一个数据库的 dbo 用户,因此可以在 SQL Server2008 中做任何操作(由此可见服务器角色权限粒度之大)。
但对那些没有 sysadmin 角色的登陆名对象,它需要拥有一个能访问特定数据库实例的数据库用户名(User)以实现对该数据库的操 作比如说为登陆名 Kelvin 想要访问 teaching 数据库,但不具备sysadmin 的服务器角色那么则在 teaching 数据库中中创建一个名为user_Kelvin 的数据库用户 TSQL: USE teaching; GO; create user user_Kelvin for login Kelvin; 执行之后,用 Kelvin 登陆名登录的用户与teaching 下的 user_Kelvin 用户建立起了关联l 使用 Management Studio 在 Jiaoxue 数据库中创建数据库用户John_user,该用户映射登陆帐号 Johnl 使用 Create User 在 Jiaoxue 数据库中创建数据库用户 DB_user, 该用户映射登陆用户 DB_userCREATE USER DB_user FOR LOGIN DB_user 5、创建架构(SCHEMA)l 使用 CREATE SCHEMA/Management Studio 创建架构 MySchema。
use jiaoxuegocreate schema MySchemal 使用 T-SQL 在该架构下创建表 abc ( 语法 Create Table MySchema.abc(...))use jiaoxue gocreate schema MySchemaCreate Table MySchema.abc(id int)l 使用 Alter Schema 将Student 所属的架构改为 MySchema(参阅帮助中“用户架构分离”)use jiaoxue goalter schema MySchema transfer dbo.Student6、修改/删除数据库用户l 使用 Alter User 将用户名 DB_user 改为自己的 isme由此可见登陆名和用户名可以不一致,两者是一种映射关系,并且这种映射 关系是可以改变的)use jiaoxue goalter user DB_user with name=ismel 使用 Management Studio 修改用户 isme,使其拥有架构MySchema7、角色管理角色可以看作一组操作权限的集合对一个角色授予、拒绝或废除的 权限也适用于该角色的任何成员。
可以建立一个角色来代表单位中一类工 作人员所执行的工作,然后给这个角色授予适当的权限当工作人员开始 工作时,只须将他们添加为该角色成员,当他们离开工作时,将他们从该 角色中删除而不必在每个人接受或离开工作时,反复授予、拒绝和废除其权限权限在用户成为角色成员时自动生效用户与角色的关系为:一 个角色可以包含多个用户;一个用户可赋予多个角色,从而拥有多个角色 的权限SQL Server2008 提供了服务器级别的角色和数据库级别的角色期中服务器级别的角色不允许用户创建与修改,称为固定服务器角色而数据 库级别的角色包括固定数据库角色、用户自定义角色和应用程序角色1) 固定服务器角色使用系统存储过程 sp_helpsrvrole 查看所有固定服务器角色,将发现包含以下角色:固定服务器角色服务器级权限Public有两大特点,第一,初始状态时没有权限;第二,所有的数 据库用户都是它的成员这个服务器角色的成员可以运行 BULK INSERT 语句这条语bulkadmin 句允许从文本文件中将数据导入到 SQL Server 2008 数据库中,为需要执行大容量插入到数据库的域账户而设计这个服务器角色的成员可以创建、更改、删除和还原任何数dbcreator 据库。
这不仅是适合助理 DBA 的角色,也可能是适合开发人员的角色diskadmin这个服务器角色用于管理磁盘文件,比如镜像数据库和添加 备份设备它适合助理 DBAprocessadmin SQL Server 2008 能够多任务化,也就是说可以通过执行多个进程做多个事件例如,SQL Server 2008 可以生成一个进程用于向高速缓存写数据,同时生成另一个进程用于从高 速缓存中读取数据这个角色的成员可以结束(在 SQL Server 2008 中称为删除)进程这个服务器角色的成员将管理登录名及其属性他们可以授securityadmi 权、拒绝和撤销服务器级权限也可以授权、拒绝和撤销数n 据库级权限另外,它们可以重置 SQL Server 2008 登录名的密码这个服务器角色的成员可以更改服务器范围的配置选项和serveradmin关闭服务器例如 SQL Server 2008 可以使用多大内存或监视通过网络发送多少信息,或者关闭服务器,这个角色可以 减轻管理员的一些管理负担为需要管理链接服务器和控制启动的存储过程的用户而设setupadmin 计这个角色的成员能添加到 setupadmin,能增加、删除和配置链接服务器,并能控制启动过程。
sysadmin这个服务器角色的成员有权在 SQL Server 2008 中执行任何任务先使用 create login 创建 SQL Server 验证登录名 newlogin,然后使用系统存储过程 sp_addsrvrolemember 将登录帐号添加为服务器角色 dbcreator 的成员,从而使其具有创建数据库的权利点击“数据库引擎查询”按钮,在弹出的连接到数据库引擎窗口中使用新创建的 newlogin 账号登陆服务器,在该服务器下创建数据库,验证新创建的登录名在加入固定服务器角色 dbcreator 前后权限的变化create login newlogin with password = '12345' gosp_addsrvrolemember 'newlogin','dbcreator' 连接不了:l 使用存储过程sp_dropsrvrolemember 收回分配给newlogin 登录帐户的指定固定服务器角色 dbcreatorsp_dropsrvrolemember 'newlogin','dbcreator'l 使用 management studio 完成以上操作。
2) 固定数据库角色固定数据库角数据库级权限色db_accessadmi该角色的成员可以从数据库中增加或者删除用户ndb_backupoper该角色的成员允许备份数据库atordb_datareader 该角色的成员允许从任何表读取任何数据每个数据库中都有几个由系统创建的数据库角色-固定数据库角色, 这些角色的权限也由系统预先分配与固定服务器角色不同,这些角色的权限可以修改,它们也能被删除固定数据库角色的名称及权限见下表:db_datawriter 该角色的成员允许往任何表写入数据db_ddladmin该角色的成员允许在数据库中增加、修改或者删除任何对 象(即可以执行任何 DDL 语句)db_denydatare 该角色的成员被拒绝查看数据库中的任何数。












