第11章 数据库安全性管理 本章导读: 合理有效的数据库安全机制,不仅可以保证被授权用户方便地访问数据库中的数据,还能够防止非法用户的入侵。SQL Server的安全性管理是建立在身份验证和权限验证的基础上,并通过SQL Server登录、数据库用户、角色、权限等机制实现。 知识要点: SQL Server登录.

Slides:



Advertisements
Similar presentations
第 10 章 项目分析:在线考试系统. 内容提要 本章介绍一个在线考试系统的设计与开 发。 利用这个案例进一步巩固本书前面各章 节的内容。 分别介绍考试系统的数据库结构、考试 系统的登录界面、考试系统的考试界面 和考试的评分程序。
Advertisements

数据库原理与应用 学习情境10:数据库系统的管理和维护.
第六 章数据库访问页 6.1 数据访问页视图 6.2 创建数据访问页 6.3 编辑数据访问页 6.4 查看数据访问页 退出.
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
2017/3/6 V1 实习指导管理系统.
2017/3/6 V1 实习指导管理系统.
项目2 字符格式和段落编排 2017年3月7日6时54分.
公务员管理子系统建设步骤 1、组建由局长直接领导的体制,制定公务员管理、工资管理、其他业务用户的管理权限,以及各业务间的协作流程。
第十三章 SQL Server的安全管理.
插入超链接 高邮市第一实验小学 范太国 任务一:设置文本超链接 任务一:设置文字超链接 步骤:1、选定文字并右击,在快捷菜单 中选择“超链接”命令。 2、在弹出的对话框中选择左侧“链接到:”中的“本文档中的位置(A)”项,在“请选择文档中的位置(C):”中选择需要链接的幻灯片,单击“确定”按钮。
第11章 数据库的安全性 教学提示:安全性对于任何一种数据库管理系统来说都是至关重要的,SQL Server 2000 提供了有效的数据访问安全机制。本章以附录2《SQL上机考试与辅助阅卷系统》安全性设计与实现为教学案例。 教学要求:通过本章的学习,读者应该掌握SQL 服务器安全性机制及其运用。
第8章 SQL Server安全管理 谁都可以任意访问数据库吗?
Oracle数据库 Oracle 子程序.
课程中心 课程中心培训方案 上海泰泽信息技术有限公司
An Introduction to Database System
在PHP和MYSQL中实现完美的中文显示
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
第八章 菜单设计 §8.1 Visual FoxPro 系统菜单 §8.2 为自己的程序添加菜单 §8.3 创建快捷菜单.
第9章 SQL Server的数据库保护技术 教学目标:通过本章学习,了解SQL Server的安全体系结构的含义和安全认证模式的分类;掌握SQL Server登录账号、用户账号及角色的创建方法;熟悉权限的分类,掌握对象权限和语句权限的管理方法;明确SQL Server中数据完整性的种类,掌握数据完整性实现的具体方法;熟悉SQL.
大学计算机基础 典型案例之一 构建FPT服务器.
第6章 SQL Server权限管理 6.1 SQL Server权限管理策略 6.2 用户权限管理 上一章 返回目录.
第 6 章 使用者權限.
SQL Injection.
网络常用常用命令 课件制作人:谢希仁.
教 师:曾晓东 电 话: 数据库技术 教 师:曾晓东 电 话:
PostgreSQL 8.3 安装要点 四川大学计算机学院 段 磊
Windows网络操作系统管理 ——Windows Server 2008 R2.
Windows网络操作系统管理 ——Windows Server 2008 R2.
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
Hub Web System 主要功能: 1.查询库存(Query Current Storage) 2.创建PL(Create PL) 3.查询、打印PL单(Query & Print PL) 4.查询允交量、在途量 5.修改用户的基本信息(Update Password) 6.查询GR(Query.
第17章 网站发布.
2019/1/12 GDP设计协同 超级管理员操作手册 GDP项目组.
ENS 10.1安装配置指南 王俊涛 | SE.
实验七、 数据完整性和数据安全性 机械工业出版社.
Windows 7 的系统设置.
SQL Server 2000数据库 简明教程 李存斌 主编 下一页.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
数据库应用技术 SQL Server 2005.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
第二章 登录UNIX操作系统.
An Introduction to Database System
第二章 安全管理.
第四章 团队音乐会序幕: 团队协作平台的快速创建
商业分析平台-语义元数据 用友集团技术中心 边传猛 2013年 11月 06日.
VB与Access数据库的连接.
An Introduction to Database System An Introduction to Database System
实验七 安全FTP服务器实验 2019/4/28.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
数据库系统与应用实验 基于SQL Server 2005.
第4章 Excel电子表格制作软件 4.4 函数(一).
GDP设计协同 项目创建者操作手册 GDP项目组 2019/01/30.
Visual Basic程序设计 第13章 访问数据库
国家学生体质健康标准数据管理与分析系统使用培训
系统权限管理概要 用 户 访问权限 对 象 用户和组 全局权限 类别 每个用户可以属于多个用户组 用户组可以与AD安全组同步 系统预置用户组
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
Python 环境搭建 基于Anaconda和VSCode.
第六章 Excel的应用 五、EXCEL的数据库功能 1、Excel的数据库及其结构 2、Excel下的数据排序 (1)Excel的字段名行
基于列存储的RDF数据管理 朱敏
VB与Access数据库的连接.
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
WEB程序设计技术 数据库操作.
使用说明书 网址: 贵阳学院智慧实验室管理平台 用户中心 使用说明书 网址:
第四章 UNIX文件系统.
使用ADO访问数据库 李宝智 BonizLee 课程 10564A
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
入侵检测技术 大连理工大学软件学院 毕玲.
第3章 服务器管理 3.1 创建服务器组 3.2 服务器注册 3.3 服务器启动、暂停和停止 3.4 服务器连接与断开
分析测试中心仪器设备共享管理平台使用指南 ——普通用户
Presentation transcript:

第11章 数据库安全性管理 本章导读: 合理有效的数据库安全机制,不仅可以保证被授权用户方便地访问数据库中的数据,还能够防止非法用户的入侵。SQL Server的安全性管理是建立在身份验证和权限验证的基础上,并通过SQL Server登录、数据库用户、角色、权限等机制实现。 知识要点: SQL Server登录 数据库用户 角色 权限 11.1 数据安全性概述 11.2 SQL Server登录 11.3 数据库用户 11.4 角色 11.5 权限

11.1 数据安全性概述 安全性问题不是数据库系统所独有的,所有计算机系统都有这个问题。只是在数据库系统中大量数据集中存放,而且为许多最终用户直接共享,从而使安全性问题更为突出。系统安全保护措施是否有效是数据库系统的主要指标之一。 11.1.1 计算机安全性概述 11.1.2 安全标准

11.1.1 安全概述----------1.安全概述 数据库的安全性和计算机系统的安全性(包括计算机硬件、操作系统、网络系统在内的安全性)是紧密联系、相互支持的,理解计算机系统安全性问题是理解数据库系统安全性机制的前提。 1.安全概述 计算机系统安全性是指为计算机系统建立和采取的各种安全保护措施,以保护计算机系统硬件、软件及数据,防止其因偶然因素导致系统破坏,数据遭到更改或泄露。 影响计算机系统安全性的因素很多,不仅有硬件因素,还有环境和人的因素;不仅涉及技术方面,还涉及管理规范、政策法律方面等。计算机安全性包括计算机安全理论、策略、技术,计算机安全管理、评价、监督,计算机安全犯罪、侦察、法律等。概括起来,计算机系统的安全性分为三大类:技术安全类、管理安全类和政策法律类。这里只涉及技术安全类。

11.1.1 安全概述----------2.安全标准 为了准确地测定和评估计算机系统的安全性能,规范和指导计算机系统的生产,各国逐步建立和发展了一套“可信计算机系统安全性的评测标准”。其中,1985年美国国防部颁布的《DoD可信计算机系统评估标准》(Trusted Computer System Evaluation Critical,TCSEC)和1991年美国国家计算机安全中心(NCSC)颁发的《可信计算机系统评估标准关于可信数据库系统的解释》(Trusted Database Interpretation,TDI)最为重要。TDI将TCSEC扩展到数据库管理系统,定义了数据库系统设计与实现中需要满足及其评估的安全性级别标准。 TCSEC/TDI将系统划分为DCBA四组,D,C1,C2,B1,B2,B3,A1从低到高7个等级。较高的安全等级提供的安全保护要包含较低等级的所有保护要求,同时提供更多完善的保护。7个安全等级的基本要求如下:

11.1.1 安全概述----------2.安全标准 (1)D级:提供最小保护。如DOS是操作系统中安全标准为D的典型例子,它具有操作系统的基本功能,如文件系统的基本功能,如文件系统、进程调度等,但在安全性方面几乎没有专门的机制来保障。 (2)C1级:提供自主安全保护。实现用户与数据的分离,进行自主存取控制,保护和限制用户权限的传播。 (3)C2级:提供受控的存取保护。将C1级的DAC进一步细化,以个人身份注册负责,并实施审计和隔离,是安全产品的最低档次。 (4)B1级:标记安全保护。对系统的数据加以标记,并对标记的主体和客体实施强制存取控制。B1级较好地满足大型企业或一般政府部门对于数据的安全需求,这一级别的产品才认为是真正意义上的安全产品。满足B1级的产品出售允许冠以security或trusted字样。 (5)B2级:结构化保护。建立形式化的安全策略模型并对系统的所有主体和客体实施DAC和MAC。达到B2级的系统非常稀少,在数据库方面没有此级别的产品。 (6)B3级:安全域保护。要求可信任的运算基础必须满足访问监控器的要求,审计跟踪能力更强,并提供系统恢复过程。 (7)A1级:验证设计。提供B3级保护的同时给出系统形式化设计说明和验证以确保各安全保护的真正实现。

11.1.2 数据库安全性概述 在规划和设计数据库的安全性时,一般要从系统的角度,整体考虑网络系统、操作系统和数据管理系统三个层次的支持和配合,从外到内保证数据的安全。这里只讨论数据库管理系统的安全体系结构,主要包括登录、数据库用户和操作权限等,如图11-1所示。 图11-1 SQL Server安全体系结构

11.2 SQL Server登录 登录(身份验证)是指核对登录SQL Server实例的登录账户和密码是否正确,从而确认用户是否具有连接SQL Server服务器的权限。登录服务器属于SQL Server的第1个安全层次。 11.2.1 登录账户 11.2.2 身份验证模式 11.2.3 创建登录账户

11.2.1 登录账户 用户连接到SQL Server服务器的账号均称为登录账户。登录账户只有成功连接上SQL Server服务器实例,才有访问整个SQL Server服务器的资源的可能。 1.两类登录帐户 SQL Server 2000提供了两类登录账户:Windows登录账户和SQL Server登录账户。 Windows登录账户是由Windows系统(Windows身份验证模式)负责验证身份的登录帐号,授予Windows用户或组对SQL Server系统的访问权限。 SQL Server登录帐号是由SQL Server系统(SQL Server身份验证模式)自身负责验证身份的登录帐号。 2.默认登录帐户 (1)sa:即默认系统管理员(system administrator)账户,该账户在SQL Server系统和所有数据库中拥有所有的权限。默认情况下,它指派给服务器角色sysadmin,且不允许更改和删除。在安装SQL Server时,如果使用混合模式进行身份验证,则SQL Server安装程序将提示更改sa的登录密码,建议立即分配密码以防未授权用户访问。以sa账户登录后可以创建和管理其它登录账户。 (2)BULTIN\Administrators:表示Windows系统中的Administrators组的成员账户都允许作为SQL Server登录账户,与sa权限等价。 打开“企业管理器”,展开控制台目录,直至“安全性”目录,选择“登录”节点,显示两个默认的登录账户,如图11-1所示。

11.2.1 登录账户 打开“企业管理器”,展开控制台目录,直至“安全性”目录,选择“登录”节点,显示两个默认的登录账户,如图11-2所示。 11.2.1 登录账户 打开“企业管理器”,展开控制台目录,直至“安全性”目录,选择“登录”节点,显示两个默认的登录账户,如图11-2所示。 图11-2 默认的登录账户

11.2.2 身份验证模式 不管使用哪种登录账户,只有通过身份验证,才能连接到指定的SQL Server服务器实例,进而访问整个SQL Server服务器。SQL Server提供了两种身份验证模式:仅Windows模式和混合模式(SQL Server和Windows),两种模式具有同样的安全机制。 1.仅Windows模式 SQL Server通常运行在Windows服务器平台上,而Windows本身有一套用户管理系统,具有验证用户身份和管理用户登录的功能。在这种模式下,只要用户通过windows身份认证,就可以连接到SQL Server实例,而SQL Server通过回叫Windows 以获得信息,重新验证账户名和密码。Windows模式只允许使用Windows登录账户连接SQL Server服务器。 如果用户使用空白登录名连接到SQL Server实例,则SQL Server将使用Windows身份验证。如果试图使用特定的登录连接到配置为Windows身份验证的SQL Server实例,则将忽略该登录并使用Windows身份验证。 2.混合模式(SQL Server和Windows) 混合模式下,既可以使用Windows模式验证Windows登录账户,也可以使用SQL Server模式验证SQL Server登录账户。当使用SQL Server身份验证,还须提供登录账号名和密码。 如果SQL Server运行在Windows 9x系统上,则只能使用混合模式,因为Windows 9x系统上不支持Windows身份验证模式。 3.设置验证模式 要设置身份验证模式,用户必须使用系统管理员账户。 在企业管理器中,右击数据库服务器的实例名,弹出快捷菜单,选择“属性”命令,如图11-2所示,单击释放后,弹出如图11-3所示的“SQL Server属性(配置)”对话框,选择“安全性”选项,即可以设置身份验证模式。

图11-2 “企业管理器”对话框图 11-3 “SQL Server属性(配置)”对话框 11.2.2 身份验证模式 图11-2 “企业管理器”对话框图 11-3 “SQL Server属性(配置)”对话框

11.2.3 创建登录账户 1.新建登录帐户 (1)利用企业管理器创建新的登录帐户 【例11-1】 利用企业管理器创建登录帐户。 11.2.3 创建登录账户 1.新建登录帐户 (1)利用企业管理器创建新的登录帐户 【例11-1】 利用企业管理器创建登录帐户。 1)展开企业管理器控制台目录,直至“安全性”目录,右击“登录”选项,弹出快捷菜单,选择“新建登录”命令,打开“SQL Server登录属性”对话框的“常规”界面,如图11-4所示。 2)在“常规”界面,用户根据需要设置登录名、身份验证模式和默认设置(指定默认登录的数据库以及语言,如没指定数据库时,则登录帐户的权限局限在master数据库内)。

11.2.3 创建登录账户  Windows身份验证 如果选择“Windows身份验证”,则需要选择已有的Windows帐户并映像为登录帐户。单击“名称”文本框“…”按钮,打开如图11-5所示的“SQL Server登录属性”对话框2,从中选择现有的Windows系统用户(shuju\win_rega)映射为登录账户。  SQL Server身份验证 如果选择“SQL Server身份验证”,则提示输入密码和确认密码(建议登录账户名称为sql_rega和密码为test)。 3)在“服务器”界面,可以为登录账户设置服务器角色,对于普通的登录账户来说,一般无需指定服务器角色。如图11-6所示。 4)在“数据库访问”界面,可以为登录账户设置它能访问的数据库,如图11-7所示。 注意:如果为新建登录账户许可访问某数据库,则SQL Server自动在该数据库中创建与新建登录账户同名的数据库用户账户,并且将数据库用户账户自动关联登录账户,同时允许设置数据库用户账户的数据库角色。

图11-4 “SQL Server登录属性”对话框1 图11-5 “SQL Server登录属性”对话框2 11.2.3 创建登录账户 图11-4 “SQL Server登录属性”对话框1 图11-5 “SQL Server登录属性”对话框2

图11-6 “SQL Server登录属性”对话框3 图11-7 “SQL Server登录属性”对话框4 11.2.3 创建登录账户 图11-6 “SQL Server登录属性”对话框3 图11-7 “SQL Server登录属性”对话框4

11.2.3 创建登录账户  使用系统存储过程sp_grantlogin创建Windows身份验证模式的登录帐户 11.2.3 创建登录账户 (2)使用T-SQL语句创建新的登录帐户。  使用系统存储过程sp_grantlogin创建Windows身份验证模式的登录帐户 格式:sp_grantlogin '域名\登录名' 说明:只有sysadmin或securityadmin固定服务器的成员,才能将包含域名的Windows用户或者组的名称映射为SQL Server登录账户。 【例11-2】 使用存储过程sp_grantlogin将本地计算机上的用户'shuju\win_regb'映射为SQL Server登录账户。 sp_grantlogin 'shuju\win_regb'  使用系统存储过程sp_addlogin创建SQL Server身份验证模式的登录帐户 格式:sp_addlogin '登录名'[,'登录密码'][,'默认数据库'][,'默认语言'] 说明:登录名称可以包含1~128字符,字符包括任何字母、符号和数字,但不能出现反斜杠(\)和系统已经存在的登录名(如sa和public)。 【例11-3】 使用存储过程sp_addlogin创建SQL Server登录账户sql_regb,密码test,默认数据库为jxgl。 sp_addlogin 'sql_regb','test','jxgl'

图11-8 “SQL Server登录属性”对话框2 11.1.2 登录账户 2.查看登录账户 (1)使用企业管理器查看登录账户 参照查看“默认登录帐户”,打开企业管理器,如图11-8所示,查看所有登录账户。 图11-8 “SQL Server登录属性”对话框2

11.1.2 登录账户 (2)使用T-SQL语句查看登录账户 11.1.2 登录账户 (2)使用T-SQL语句查看登录账户 格式:sp_helplogins[[@loginnamepattern=]'登录名' 说明: 1)只有sysadmin和securityadmin固定服务器角色的成员才可以执行sp_helplogins命令,并检查服务器上的所有数据库,以确定与这些数据库中相关的登录账户。 2)如果指定登录名(必须已存在),则查看指定登录名的相关登录信息,否则查看所有登录名的相关信息。 【例11-4】 使用存储过程sp_helplogins查看SQL Server登录账户sql_rega。 sp_helplogins 'sql_rega'

11.1.2 登录账户 3.修改登录账户 (1)使用企业管理器修改登录账户 11.1.2 登录账户 3.修改登录账户 (1)使用企业管理器修改登录账户 参照查看“默认登录帐户”,打开“SQL Server登录属性”对话框,即可自行修改。 (2)使用T-SQL语句修改登录账户 使用系统存储过程sp_denylogin拒绝Windows用户或用户组的登录帐户 格式:sp_denylogin '用户或用户组' 说明:sp_denylogin只能拒绝Windows用户或用户组的登录帐户。 使用系统存储过程sp_revokelogin废除登录帐户,包括sp_addlogin或sp_grantlogin创建的登录账户。 格式:sp_revokelogin '用户或用户组' 说明:废除(删除)指定的登录账户。 使用系统存储过程sp_password修改SQL Server登录账户的密码 格式:sp_password '旧密码', '新密码', '登录账户' 说明:对指定的登录账户进行修改,用新密码替代旧密码。

11.3 数据库用户 数据库用户和登录账户是两个不同概念,一个合法登录账户只表明其通过了Windows验证或SQL Server认证,能够连接到SQL Server服务器,但并不表明其可以对数据库及其对象进行访问操作。登录账户只有在关联数据库用户后,才能够对数据库及其对象(表、视图、存储过程)等进行权限许可下的操作。也就是说,一个登录账户连接到SQL Server实例后,DBA必须在数据库中为它映射一个数据库用户,然后才能通过数据库用户来访问该数据库。 11.3.1 默认数据库用户 11.3.2 新建数据库用户 11.3.3 查看数据库用户 11.3.4 删除数据库用户

11.3.1 默认数据库用户 数据库用户总是基于数据库的,一个登录账户可以关联多个数据库用户,但在一数据库中,只能有一个数据库用户与之相对应。数据库中存在两个特殊数据库用户:dbo或guest。 (1)dbo:数据库所有者,拥有对本数据库所有操作权限,始终存在于每个数据库中,不能被删除。创建数据库的用户是该数据库的dbo,固定服务器角色sysadmin的任何成员(如sa)都自动关联到每个数据库的dbo。 (2)guest:游客,新建数据库一般不含guest,但可以添加到其中。但是guest默认存在SQL Server 2005每个数据库中,且是禁用的。当满足下列条件时,登录账户可以通过数据库用户guest来访问数据库。 ①登录账户有访问SQL Server实例的权限,但没有权限或无法通过自己的数据库用户账户来访问数据库。 ②数据库中提供了数据库用户guest。 注意:在SQL Server系统数据库中,除model之外,都存在数据库用户guest,且不能删除master和tempdb数据库中的guest。

11.3.2 新建数据库用户 一般来说,数据库用户除了guest账户以外,都与某个登录账户关联。因此新建数据库用户账户之前,必须事先确认一个关联的登录账户。 1.利用企业管理器创建新的数据库用户账户 【例11-5】 使用企业管理器创建新的数据库用户账户。 (1)在企业管理器中,展开要在其中创建数据库用户账户的数据库(jxgl)目录,右击“用户”节点,弹出快捷菜单,选择“新建数据库用户”命令,如图11-9所示。 图11-9 “新建数据库用户”命令界面

11.3.2 新建数据库用户 (2)单击“新建数据库用户”命令后,弹出如图11-10所示的“数据库用户属性”对话框,在“登录名”下拉列表框中选择登录账户(SHUJU\win_rega),然后在“用户名”文本框中输入数据库用户名(win_rega_u),最后在“数据库角色成员”列表框中,为数据库用户指定数据库角色。 图11-10 “数据库用户属性”对话框

11.3.2 新建数据库用户 2.使用T-SQL语句创建数据库用户 11.3.2 新建数据库用户 2.使用T-SQL语句创建数据库用户 格式:sp_grantdbaccess '登录名' [,'数据库用户名'] 说明: (1)将SQL Server登录名或Windows用户名或组名映射为当前数据库用户; (2)如果没有指定数据用户名,则数据库用户名默认与登录名同名。 【例11-6】 使用存储过程sp_grantdbaccess为登录账户SHUJU\win_regb在数据库jxgl中创建一个数据库用户名win_regb_u。 use jxgl go sp_grantdbaccess 'SHUJU\win_regb','win_regb_u' 【例11-7】 使用存储过程sp_grantdbaccess,为登录账户sql_rega在数据库jxgl中创建一个数据库用户名sql_rega_u。 sp_grantdbaccess 'sql_rega','sql_rega_u' 【例11-8】 使用存储过程sp_grantdbaccess,为登录账户sql_regb在数据库jxgl中创建一个数据库用户名sql_regb_u。 sp_grantdbaccess 'sql_regb','sql_regb_u'

图11-11 “新建数据库用户”命令界面 图11-12 “数据库用户属性”对话框 11.3.3 查看数据库用户 (1)使用企业管理器查看数据库用户账户 展开数据库(jxgl)目录,单击“用户”节点,在右侧窗格中显示当前数据库包含的所有数据库用户账户,右击所要查看的数据库用户账户名,弹出快捷菜单,选择“属性”命令,如图11-11所示,单击释放后弹出“用户属性”对话框,如图11-12所示,授予相关角色。 图11-11 “新建数据库用户”命令界面 图11-12 “数据库用户属性”对话框

11.3.3 查看数据库用户 (2)使用系统存储过程sp_helpuser查看数据库用户 格式:sp_helpuser ['数据库用户名'] 11.3.3 查看数据库用户 (2)使用系统存储过程sp_helpuser查看数据库用户 格式:sp_helpuser ['数据库用户名'] 说明:查看当前数据库中指定数据库用户名的信息,如果没有指定数据库用户名,则报告当前数据库中所有数据库用户信息。 【例11-9】 使用存储过程sp_helpuser查看当前数据库(jxgl)中数据库用户信息。 use jxgl go sp_helpuser 运行结果如图11-13所示。 图11-13 “新建数据库用户”命令界面

11.3.4 删除数据库用户 1.使用企业管理器删除数据库用户 11.3.4 删除数据库用户 1.使用企业管理器删除数据库用户 右击要删除的用户,从弹出的菜单中选择“删除”命令,在出现的提示框中,单击“是”按钮,即可确认删除。 2.使用系统存储过程sp_revokedbaccess删除数据库用户 格式:sp_revokedbaccess '数据库用户名' 说明:从当前数据库中删除指定的数据库用户。

11.4 角色 角色是一组相关权限的集合,也可以理解为由相同权限用户构成的逻辑分组。角色是权限的载体,不同的角色被赋予了不同的权限,角色是为了管理权限而引入的技术。将一个或多个角色分配给用户,从而授予用户对系统相应的操作权限。换言之,可将用户集中到某一角色中统一设定操作权限,对角色授予、拒绝和废除的权限同样适用于角色的成员(用户)。每个用户可以附属于多个不同的角色成员,从而拥有与某角色相同的权限。 11.4.1 角色类型 11.4.2 管理服务器角色中的登录账户 11.4.3 新建数据库角色 11.4.4 删除数据库角色 11.4.5 管理数据库角色中的数据库用户

11.4.1 角色类型 角色分为两种类型:服务器角色和数据库角色,而数据库角色又分为固定数据库角色和用户自定义数据库角色。 1.服务器角色 11.4.1 角色类型 角色分为两种类型:服务器角色和数据库角色,而数据库角色又分为固定数据库角色和用户自定义数据库角色。 1.服务器角色 服务器角色是指被授予管理SQL Server服务器的权限的角色,其中的成员是登录账号。服务器角色是内置的,即不能行添加、修改和删除服务器角色,只能修改角色的成员; SQL Server 2000中定义了8种(固定)服务器角色,如图11-14所示。 图11-14 固定服务器角色

11.4.1 角色类型 服务器角色适用于服务器的范围内,与具体数据库无关;对服务器操作的权限不能直接授予登录账户,只有使登录账户成为服务器角色的成员,才使之具有这些服务器角色的权限。 注意:属于Windows组的登录账户自动被设置为sysadmin服务器角色的成员。 2.数据库角色 数据库角色分为固定数据库角色和用户自定义数据库角色。 (1)固定数据库角色 固定数据库角色是指SQL Server自动创建的、固定的、不能被数据库管理员或用户修改或删除的数据库角色。每个数据库都会拥有一系列固定数据库角色,尽管在不同数据库内存在同名的数据库角色,但各自的范围都仅限于各自所属的数据库内。 SQL Serve 2000中定义了10种固定数据库角色,如表11-1所示

11.4.1 角色类型 固定数据库角色 权限描述 public 最基本的数据库角色,每个数据库用户都属于数据库角色,不能删除 11.4.1 角色类型 固定数据库角色 权限描述 public 最基本的数据库角色,每个数据库用户都属于数据库角色,不能删除 db_owner 在数据库中拥有全部权限 db_accessadmin 可以添加或删除用户 db_datareader 可以查看来自数据库中所有用户的表的全部数据 db_datawriter 可以更改来自数据库中所有用户的表的全部数据 db_ddladmin 可以添加、修改、或删除数据库中的对象 db_securityadmin 可以管理数据库角色和成员,并管理数据库中的语句和对象权限 db_backupoperator 可以对数据库进行备份 db_denydatareader 可以拒绝选择数据库中的数据 db_denydatawriter 可以拒绝更改数据库中的数据 注意:public角色是一个特殊的数据库角色,自动捕获数据库用户的所有默认权限,每个数据库用户都会自动成为public角色的成员,且不能被删除。

11.4.1 角色类型 (2)用户自定义数据库角色 用户自定义数据库角色是指由用户自己创建并定义权限的数据库角色。创建用户自定义数据库角色即可以使用企业管理器,也可以使用T-SQL语句。

11.4.2 管理服务器角色中的登录账户 通常,一个登录账户可以不属于任何服务器角色,也可以属于多个服务器角色。将一个登录账户加入一个角色方法有多种,常见的方法有两种: (1)参照新建登录账户时,为登录账户授予服务器角色。 (2)选择服务器角色,为服务器角色添加登录账户。

11.4.3 新建数据库角色 1.使用企业管理器创建用户自定义数据库角色 11.4.3 新建数据库角色 1.使用企业管理器创建用户自定义数据库角色 (1)在企业管理器中,展开要创建数据库角色的“数据库”目录(jxgl),右击“角色”节点,弹出快捷菜单,选择“新建数据库角色”命令,如图11-15所示。 (2)单击释放后,弹出如图11-16所示的“数据库角色属性”对话框。在“名称”文本框中输入用户自定义角色的名称(user_role);

11.4.3 新建数据库角色 图11-15 “新建数据库角色”对话框 图11-16 “数据库角色属性”对话框

11.4.3 新建数据库角色 (3)单击“标准角色”,继续单击“添加”按钮,弹出“添加角色成员”对话框,列表框中显示了当前数据库中所有数据库用户账户,但不包括dbo,如图11-17所示。选择一个或多个数据库用户(如sql_rega_u),单击“确定”按钮添加到角色中。 图11-17 “添加角色成员”对话框

11.4.3 新建数据库角色 2.使用系统存储过程sp_addrole创建用户自定义数据库角色 11.4.3 新建数据库角色 2.使用系统存储过程sp_addrole创建用户自定义数据库角色 格式:sp_addrole '用户自定义数据库角色' 说明:创建一个新的用户自定义数据库角色。

11.4.4 删除数据库角色 1.使用企业管理器删除用户自定义数据库角色 11.4.4 删除数据库角色 1.使用企业管理器删除用户自定义数据库角色 右击需要删除的用户自定义数据库角色,弹出快捷菜单,从中选择“删除”命令,可以删除用户自定义数据库角色。 2.使用系统存储过程sp_droprole删除用户自定义数据库角色 格式:sp_droprole '用户自定义数据库角色' 说明:删除指定的用户自定义数据库角色。

11.4.5 管理数据库角色中的数据库用户 角色只有包含了数据库用户才有意义,数据库用户被添加到角色中去,数据库用户就拥有了角色的所拥有的权限;将数据库用户从角色中删除后,数据库用户就失去了角色的权限。 1.使用企业管理中添加角色成员 参照图11-12所示的“企业管理器”对话框的右窗格中,依次打开图11-13所示的“数据库角色属性”对话框和图1-14所示的“添加角色成员”对话框,用户自行添加数据库用户。 2.在企业管理中删除角色成员 在图11-13所示的“数据库角色属性”对话框中,选择数据库用户,单击“删除”按钮,即可删除数据库用户。 3.使用系统存储过程sp_addrolemember添加角色成员 格式:sp_addrolemember '数据库角色','数据库用户名' 说明:将当前数据库的数据库用户添加到当前数据库的数据库角色中。 【例11-10】 使用sp_addrolemember将数据库用户win_regb_u添加到当前数据库(jxgl)的数据库角色db_accessadmin中。 use jxgl go sp_addrolemember 'db_accessadmin','win_regb_u' 4.使用系统存储过程sp_droprolemember删除角色成员 格式:sp_droprolemember '数据库角色','数据库用户名' 说明:将数据库用户名从数据库角色中删除。

11.5 操作权限 操作权限是指数据库用户对数据库及其对象拥有访问和操作的权力,数据库用户对数据库的访问和操作能力的大小是由其拥有权限决定的。而操作权限的获取来源于两方面因素:一是授予数据库用户的许可权限,二是继承所属数据库角色的权限。 11.5.1 权限类型 11.5.2 权限管理

11.5.1 权限类型 SQL Server的权限包括三种类型:对象权限、语句权限和隐含权限。 1.对象权限 11.5.1 权限类型 SQL Server的权限包括三种类型:对象权限、语句权限和隐含权限。 1.对象权限 对象权限是指用户对表、视图、存储过程等对象的操作权限。不同对象支持不同的操作权限,对象及其拥有的权限如表11-2所示。 表11-2 对象及其拥有的权限 对象 权限描述 表 select、insert、delete、update、reference 视图 select、insert、delete、update 列 select、update 存储过程 execute

11.5.1 权限类型 2.语句权限 语句权限是指用户是否具有执行某一语句的权限。语句权限及其含义如表11-3所示。 表11-3 语句权限表 11.5.1 权限类型 2.语句权限 语句权限是指用户是否具有执行某一语句的权限。语句权限及其含义如表11-3所示。 表11-3 语句权限表 语句 语句含义 create database 创建数据库 create default 创建默认值对象 create table 创建表 create procedure 创建存储过程 create view 创建视图 backup database 备份数据库 create rule 创建规则对象 backup log 备份事务日志 create function 创建函数

11.5.1 权限类型 3.隐含权限 隐含权限是指由SQL Server预定义的服务器角色、数据库所有者(dbo)和数据库对象所有者所拥有的权限,隐含的权限相当于内置权限,不能明确地授予和撤销这些权限。 如服务器角色sysadmin的成员可以在整个服务器范围内执行任何操作,而数据库对象所有者(dbo)可以对本地数据库执行任何操作。

11.5.2 权限管理 权限管理是指对数据库用户或数据库角色的语句权限和对象权限的赋予、拒绝和撤销。数据库用户和数据库角色的许可权限以记录形式存储在对应数据库的系统表sysprotects中。 对数据库用户或数据库角色的权限管理既可以通过企业管理器实现,也可以通过T-SQL语句(grant、revoke和deny)实现。 授予权限:授予数据库用户或角色的语句权限和对象权限,使得数据库用户在当前数据库中具有执行活动和处理数据的权限。 拒绝权限:删除以前授予数据库用户或角色的语句权限和对象权限,停用从其它数据库角色继承的权限,确保数据库用户或角色将来不继承更高级别的数据库角色的权限。 废除权限:废除以前授予或拒绝的权限。但不妨碍数据库用户或角色从更高级别继承已授予的权限。 1.使用企业管理器管理对象权限 (1)在企业管理器中,展开“数据库”目录(jxgl),在右侧窗格中右击一个表、视图或存储过程(如表“学生”),弹出快捷菜单,选择“所有任务”→“管理权限”,如图11-18所示。 (2)单击释放后,弹出如图11-19所示的“对象属性”对话框,对话框列表中显示了当前数据库的数据库用户和角色。每个数据库用户和角色都可以设置select、insert、update、delete、exec和dri等权限。

图11-18 “管理权限快捷菜单”对话框 图11-19 “对象属性”对话框 11.5.2 权限管理 图11-18 “管理权限快捷菜单”对话框 图11-19 “对象属性”对话框 注意:√表示授予权限,×表示拒绝权限,□表示取消权限。

图11-20 “管理权限快捷菜单”对话框 图11-21 “jxgl 属性”对话框的“权限”界面 11.5.2 权限管理 2.使用企业管理器管理语句权限 (1)在企业管理器中,右击数据库,弹出快捷菜单,选择“属性”命令,如图11-20所示。 (2)单击释放后,弹出“jxgl 属性”对话框“常规”界面,单击“权限”选项卡,如图11-18所示,根据需要许可(勾选)相关权限。 图11-20 “管理权限快捷菜单”对话框 图11-21 “jxgl 属性”对话框的“权限”界面

11.5.2 权限管理 3.使用企业管理器管理数据库用户的权限 11.5.2 权限管理 3.使用企业管理器管理数据库用户的权限 在企业管理器中,右击数据库用户名(sql_rega_u),弹出快捷菜单,选择“所有任务”→“管理器权限”命令,弹出如图11-19所示的“数据库用户属性”对话框,,根据需要许可(勾选)相关权限。 4.使用企业管理器管理数据库角色的权限 在企业管理器中,右击数据库角色(user_role),弹出快捷菜单,选择“属性”,单击释放后,弹出如图11-22所示的“数据库角色属性”对话框1,单击名称框后的“权限”按钮,弹出如图11-23所示的“数据库角色属性”对话框2,根据需要许可(勾选)相关权限。

图11-22 “数据库用户属性”对话框 图11-23 “数据库用户属性”对话框 11.5.2 权限管理 图11-22 “数据库用户属性”对话框 图11-23 “数据库用户属性”对话框

11.5.2 权限管理 5.使用grant语句授予数据库用户(角色)的语句权限和对象权限 (1)授予语句权限 11.5.2 权限管理 5.使用grant语句授予数据库用户(角色)的语句权限和对象权限 (1)授予语句权限 格式:grant {all |语句权限[,...n]} to 账户[,...n] 说明: 1)all表示所有可用的语句权限; 2)账户表示当前数据库中的数据库用户(角色); 3)若权限被授予数据库角色或数据库用户(Windows 组名),则可影响到当前数据库中该角色或该组中成员。 【例11-11】 使用grant语句对数据库用户sql_rega_u授予创建表和创建视图的语句权限。 use jxgl grant create table, create view to sql_rega_u

11.5.2 权限管理 (2)授予对象权限 格式: grant {all|对象权限[,...n ]}{[(列名[,...n ])] on {表|视图} |on {表|视图}[(列名[,...n])]| on存储过程| on用户自定义函数} to账户[,...n] [ with grant option] [as{组|角色} ] 说明: 1)all表示授予所有可用的对象权限。 2)对象权限包括select、insert、delete或update权限。 3)账户指的是数据库用户或角色。 4)with grant option表示允许被授予权限的用户或角色再次授权权限给其它用户。 5)as {组|角色}表示角色或组的成员拥有使用角色或组的权限。 【例11-12】 使用grant语句对数据库角色(user_role)和数据库用户(win_regb_u,sql_regb_u)授予对数据库jxgl的表“学生”的insert、update和delete的权限。 use jxgl grant insert,update,delete on 学生 to user_role,win_regb_u,sql_regb_u

11.5.2 权限管理 【例11-13】 使用grant语句授予数据库用户win_regc_u对jxgl数据库的“学生”表的“学号”和“姓名”列具有update权限。 use jxgl exec sp_grantdbaccess 'shuju\win_regc','win_regc_u' grant update(学号,姓名) on 学生 to win_regc_u 或: grant update on 学生(学号,姓名) to win_regc_u

11.5.2 权限管理 【例11-14】 为数据库jxgl添加两数据库用户账户(sqlrega_u,sqlregb_u),对应登录账户(sqlrega,sql_regb),然后添加一数据库角色jxgl_role,且sqlrega_u是其成员,通过指定with grant option授权jxgl_role允许查询表“学生”的列“学号”和“姓名”。 操作步骤如下: (1)以sa或者等价sa的登录账户登录服务器,输入并执行以下代码: use jxgl --为登录账户sqlrega建立数据库用户账户sqlrega_u exec sp_grantdbaccess 'sqlrega','sqlrega_u' --为数据库jxgl增加数据库角色'jxgl_role' exec sp_addrole 'jxgl_role' --将数据库用户'sqlrega_u'加入到数据库角色'jxgl_role'中 exec sp_addrolemember 'jxgl_role','sqlrega_u' --为登录账户sqlregb建立数据库用户账户sqlregb_u exec sp_grantdbaccess 'sqlregb','sqlregb_u' --指定with grant option并授予数据库角色权限 grant select on 学生(学号,姓名) to jxgl_role with grant option

11.5.2 权限管理 (2)以登录账户sqlrega登录服务器,输入并执行以下代码: use jxgl 11.5.2 权限管理 (2)以登录账户sqlrega登录服务器,输入并执行以下代码: use jxgl select 学号,姓名from 学生 --指定数据库用户账户'sqlregb_u'获取数据库角色jxgl_role的权限 grant select on 学生(学号,姓名) to sqlregb_u as jxgl_role (3)以登录账户sqlregb登录服务器,输入并执行以下代码: 注意:对“学生”表的with grant option权限是授予jxgl_role数据库角色,而不是显式地授予sqlregb_u(不是jxgl_role成员),sqlregb_u须用as子句来获得jxgl_role角色的权限。

11.5.2 权限管理 6.使用deny语句可以拒绝数据库用户(角色)的语句权限和对象权限 (1)拒绝语句权限 11.5.2 权限管理 6.使用deny语句可以拒绝数据库用户(角色)的语句权限和对象权限 (1)拒绝语句权限 格式:deny {all|语句权限[,...n]} to数据库用户(角色) [,...n] 【例11-15】使用deny语句对数据库用户sql_rega_u拒绝创建表和创建视图的权限。 use jxgl deny create table, create view to sql_rega_u

11.5.2 权限管理 (2)拒绝对象权限 格式: deny {all|对象权限[,...n]}{[(列名[,...n])] on {表|视图} | on {表|视图}[(列名[,...n ] )] | on {存储过程|用户自定义函数}} to 账户[,...n] [cascade] 说明:cascade表示拒绝账户的权限时,也将拒绝由账户授权的任何其它账户的权限。 【例11-16】 使用deny语句拒绝数据库角色user_role对“学生”表的insert、update和delete的权限。 use jxgl deny insert,update, delete on 学生 to user_role 【例11-17】 拒绝数据库用户sqlrega_u的权限,并拒绝sq_rega_u对sqlrega_u的授权。 deny select(学号,姓名) on 学生 to sqlrega_u cascade

11.5.2 权限管理 7.使用revoke语句废除数据库用户(角色)的语句权限和对象权限 (1)废除语句权限 11.5.2 权限管理 7.使用revoke语句废除数据库用户(角色)的语句权限和对象权限 (1)废除语句权限 格式:revoke {all|语句权限[,...n]} from账户 [,...n] 【例11-18】 使用revoke语句废除数据库用户sql_rega_u创建表和创建视图的权限。 use pubs revoke create table,create view from sql_rega_u (2)废除对象权限 格式: revoke [grant option for]{all|对象权限[,...n]}{[(列名[,...n])] on {表|视图} |on{表|视图}[(列名[,...n])]|on {存储过程|用户自定义函数}} {to|from}账户[,...n][cascade][as {组|角色}] 说明: 1)grant option for:收回with grant option权限,即数据库用户不能将该权限授予其它数据库用户。 2)cascade:收回数据库用户权限的同时,也收回由其授权给其它数据库用户的权限。 3)收回with grant option设置的权限,需指定cascade和grant option for子句,否则出错。 4)as {组|角色}:说明数据库用户继承权限的来源角色或组。

11.5.2 权限管理 【例11-19】 使用revoke语句废除数据库角色user_role对“学生”表的insert、update和delete的权限。 revoke insert,update,delete on 学生 to user_role 【例10-20】 废除数据库用户sql_rega_u对学生表的学号列的修改权限。 revoke update(学号) on 学生 from sql_rega_u

本章小结 本章主要探讨了SQL Server 2000的安全性问题,包括身份认证模式、登录账户、数据库用户账户、角色、权限等内容。重点掌握登录账户和数据库用户的区别,尤其注意的是:登录账户成功地连接到SQL Server 2000后,并不是就拥有对所有数据库的访问权限,只有通过建立其相应的数据库用户账户才能访问该数据库,而使用角色可以简化对权限管理的操作。