资源简介 (共70张PPT)网站数据库应用技术SQL Server 2008(项目教程)项目十三:安全管理创建登陆账户禁止或删除登陆账号添加数据库用户任务一任务二任务三安全管理任务四删除数据库用户创建数据库角色任务五任务六数据库权限管理13.1 任务1:创建登陆账户创建一个SQL Server登陆账户,帐号名为lgx,使其具有访问Student数据库的权限。13.1.1相关知识创建登陆账户为了保证SQL Server 2008数据库的安全,用户在访问SQL Server时需输入正确的用户名和密码方可登陆,本任务介绍如何创建SQL Server登陆账户。1.身份验证模式SQL Server有两种验证机制Windows验证机制和SQL Server验证机制,由这两种验证机制产生了两种SQL Server身份验证模式:Windows身份验证模式、SQL Server和Windows身份验证模式(混合模式)。Windows身份验证模式只能使用Windows验证机制,而SQL Server和Windows身份验证模式则既可以使用Windows验证机制也可以使用SQL Server验证机制。选择使用哪个验证模式是可以改变的,可以在系统安装过程中设置SQL Server的身份验证模式,也可以在安装完成后修改。修改的方法为:在要修改的服务器实例上单击鼠标右键,在弹出的快捷菜单中选择“属性”命令,在弹出的“服务器属性”窗口中选择“安全性”,如图13-1所示,在“服务器身份验证”选项组中,选择“Windows身份验证模式(W)”或者“SQL Server和Windows身份验证模式(S)”。图13-1 “服务器属性”窗口13.1.1相关知识创建登陆账户(1)Windows身份验证如果Windows的当前用户在SQL Server中被赋予了权限,可以直接登陆,不需要再次输入用户名和密码。如果要以其他Windows账户登陆SQL Server,则需要先用此账户登陆Windows,然后再选择以Windows身份验证模式登陆SQL Server。(2)SQL Server身份验证因为SQL Server管理的帐号与Windows操作系统无关,所以每次登陆时都需要输入账户和密码。2.默认账户不管选择哪种验证模式,都必须先具备有效的用户登陆账户。SQL Server有3个默认账户,分别为sa、administrator和guest。sa是system administrator(系统管理员)的简称,在SQL Server系统和所有数据库中拥有所有权限。administrator为Windows系统管理员提供的账户,也在SQL Server系统和所有数据库中拥有所有权限。guest账户为默认访问系统用户账户。13.1.1相关知识创建登陆账户3. 存储过程sp_addlogin系统存储过程sp_addlogin也可以创建SQL Server身份验证登陆的登陆账号,其基本语法格式如下。EXECUTE sp_addlogin‘登录名’, ‘登陆密码’, ‘默认数据库’, ‘默认语言’说明:登录名要符合标识符的命名规则,不能包含‘\’、保留的登录名或者已经存在的登录名,也不能是空字符串或NULL值。参数除了登录名外,其它的参数为可选项,如果不指定密码,密码为NULL;如果不指定默认数据库,则使用master数据库,如果不指定默认语言,则使用服务器当前的默认语言。执行存储过程sp_addlogin时,需要具有相应的权限,只有sysadmin和securityadmin固定服务器角色的成员才可以执行。13.1.2 任务实施创建索引方法1. 用SSMS创建使用SQL Server身份验证的登陆账户“lgx”步骤1:在“对象资源管理器”窗口里展开“安全性”节点,右击“登录名”,在弹出的快捷菜单中选择“新建登录名”命令,如图13-2所示。步骤2:在弹出的“登录名-新建”窗口中选择“SQL Server身份验证”,在“登录名”文本框中输入“lgx”,在“密码”和“确认密码”文本框中输入相同的密码,比如“123”,选择“服务器角色”和“用户映射”选项,指定服务器角色和访问的数据库及数据库角色,取消“强制密码过期”和“用户在下次登陆时必须更改密码”前的对勾,如图13-3所示。步骤3:单击“确定”按钮,“lgx”登录名创建完成。操作图示操作图示图13-2 “对象资源管理器”窗口图13-3 “登录名-新建”窗口13.2 任务2:禁止或删除登陆账号禁止或删除登陆账号“lgx”。13.2.1 相关知识禁止或删除登陆账号1.禁止登陆账号是暂时停止用户的使用权限,在必要的时候可以恢复使用。删除登陆账号是把该账号从服务器中移除,移除后不可恢复。2.存储过程sp_droplogin系统存储过程sp_droplogin的功能是删除一个SQL Server身份验证的登陆账号,语法格式为:EXECUTE sp_droplogin ‘登录名’其中登录名只能是SQL Server身份验证的登陆账号。3.存储过程sp_revokelogin系统存储过程sp_revokelogin的功能是删除一个Windows身份验证的登陆账号,语法格式为:EXECUTE sp_revokelogin‘登录名’其中登录名只能是Windows身份验证的登陆账号。13.2.2 任务实施禁止或删除登陆账号步骤1:在“对象资源管理器”窗口里展开“安全性”节点,展开“登录名”。步骤2:右击登陆账号“lgx”,选择“属性”菜单项,弹出“登陆属性”窗口,如图13-5所示。禁止登陆方法1. 用SSMS禁止登陆账户“lgx”操作图示步骤3:在“登陆属性”窗口中选择“状态”选项,如图13-6所示,在“设置”的“是否允许连接到数据库引擎”选项组下选择“拒绝”前的单选框,在“登陆”选择项下选择“禁用”前的单选框。步骤4:单击“确定”按钮,完成禁止登陆账号“lgx”,如果要恢复,同样的方法单击“拒绝”或“禁用”即可恢复登陆账号“lgx”,不再赘述。操作图示图13-5 “登陆属性”窗口图13-6 禁止登陆账号窗口13.2.2 任务实施禁止或删除登陆账号步骤1:在“对象资源管理器”窗口里展开“安全性”节点,展开“登录名”。步骤2:右击登陆账号“lgx”,选择“删除”菜单项,如图13-7所示。步骤3:弹出“删除对象”窗口,如图13-8所示,单击“确定”按钮,删除账号“lgx”。删除登陆方法1. 用SSMS删除登陆账户“lgx”操作图示操作图示图13-7 删除登陆窗口图13-8 删除对象窗口13.2.2 任务实施禁止或删除登陆账号步骤1:进入SSMS管理界面后,在工具栏中单击“新建查询”按钮,打开“查询编辑器”窗口。步骤2:在“查询编辑器”窗口中输入命令:EXECUTE sp_droplogin 'lgx',单击“执行”按钮,删除登陆账户成功,如图13-9所示。删除登陆方法2. 用T-SQL命令删除登陆账户lgx操作图示图13-9删除账号命令窗口13.3 任务3: 添加数据库用户在当前数据库Student创建数据库用户lgx。13.3.1 相关知识添加数据库用户一般情况下,当用户用登陆帐号登陆到SQL Server后,还不能访问数据库,要访问数据库,还需要为登陆帐号映射一个数据库用户。添加数据库用户的方式有多种,可以在创建或者修改登陆帐号时的“登陆属性”窗口的“用户映射”中建立登陆名到指定数据库的映射,或者在数据库中直接建立数据库用户。可以使用存储过程sp_grantdbaccess添加数据库用户,格式如下:Execute sp_grantdbaccess ‘登陆名’,’用户名’说明:登陆名既可以是Windows身份验证的登陆名,也可以是SQL Server身份验证的登陆名,用户名是在该数据库使用的,如果没有指定,直接使用登陆名,需要注意的是只能向当前数据库中添加用户登陆帐号的用户名,不能添加sa的用户名。1.dbo是数据库的所有者,拥有数据库的所有权限,每个数据库都有自己的dbo用户,默认情况下,固定服务器角色sysadmin的成员都自动映射到所有数据库的dbo用户,该用户不能被删除。当一个登录帐号可以创建数据库时,该登陆帐号就映射到该数据库的dbo用户。2.guest用户是来宾用户,不能删除,在默认情况下该用户是禁用的。13.3.2 任务实施添加数据库用户步骤1:在SSMS中,依次展开“数据库”|“Student”|“安全性”|“用户”,右击“用户”节点,在弹出的快捷菜单中选择“新建用户”命令,弹出“数据库用户-新建”对话框,在用户名中输入“lgx”,如图13-10所示。步骤2:输入登陆名或者单击“登陆名”右侧的“…”按钮,弹出“选择登录名”对话框,如图13-11所示。方法1. 在SSMS中创建Student数据库用户lgx。操作图示操作图示图13-10 “数据库用户-新建”对话框图13-11 “查找对象”对话框13.3.2 任务实施步骤3:单击“浏览”按钮,弹出“选择对象”对话框,如图13-12所示。步骤4:选择要授权访问Student数据库的SQL Server登录帐号“lgx”,连续三次单击“确定”按钮,完成数据库用户的创建。操作图示图13-12 “选择对象”对话框13.3.2 任务实施添加数据库步骤1:进入SSMS管理界面后,在工具栏中单击“新建查询”按钮,打开“查询编辑器”窗口。步骤2:在“查询编辑器”窗口中输入命令:EXECUTE sp_grantdbaccess 'lgx','lgx',单击“执行”按钮,创建成功,如图13-13所示。方法2:使用存储过程sp_grantdbaccess创建Student数据库用户lgx。操作图示图13-13 创建用户命令窗口13.3 任务4:删除数据库用户删除数据库Student中的数据库用户“lgx”。13.4.1 相关知识删除数据库用户从当前数据库中删除一个数据库用户,即删除了登陆帐号到当前数据库用户的映射。13.4.2 任务实施删除数据库用户步骤1:在SSMS中,依次展开“数据库”|“Student”|“安全性”|“用户”,右击要删除的用户名节点“lgx”,在弹出的快捷菜单中选择“删除命令”命令,弹出“删除对象”对话框,如图13-14所示。步骤2:单击“确定”按钮,删除数据库用户成功。方法1.在SSMS中删除Student数据库用户lgx。操作图示图13-14 “删除对象”对话框13.4.2 任务实施删除数据库用户步骤1:进入SSMS管理界面后,在工具栏中单击“新建查询”按钮,打开“查询编辑器”窗口。步骤2:在“查询编辑器”窗口中输入命令:EXECUTEsp_revokedbaccess'lgx',单击“执行”按钮,删除成功,如图13-15所示。方法2:使用存储过程sp_revokedbaccess删除Student数据库用户lgx。操作图示图13-15 删除用户命令窗口13.5 任务5:创建数据库角色在数据库Student中创建数据库角色myrole,该角色中的成员有数据库用户lgx。13.5.1 相关知识创建数据库角色角色是用来集中服务器和数据库权限的,管理员把权限赋给角色,角色再赋给数据库用户或者登陆帐号,则登陆帐号或数据库用户就拥有了该角色的权限。在创建登陆帐号时可以对服务器角色进行设置,在创建数据库用户时可以对数据库角色进行设置。在SQL Server中有两种角色,分别是服务器角色和数据库角色。角色的概念比较抽象,比如在学校的教务管理系统中存在3类不同权限的用户,管理员、教师和学生,可以在数据库中定义三种角色,管理员角色、教师角色和学生角色。所有的管理员都是管理员角色的成员,所有的教师都是教师角色的成员,所有的学生都是学生角色的成员。在数据库的设计时把所有的用户都作为这三种角色的成员之一,只需要对三种角色进行权限设置,该角色的成员就拥有了相应角色的权限,不需要对每个用户进行权限设置。13.5.1 相关知识创建数据库角色1.服务器角色服务器角色独立于各个数据库,当创建一个登陆帐号后,要赋予该登陆帐号管理服务器的权限,可以设置该登陆帐号为服务器角色的成员。SQL Server2008中提供的固定服务器角色如表13-1所示。表13-1 固定服务器角色角色名称 角色含义 说明sysadmin 系统管理员 该角色成员拥有所有的权限许可,是最高管理角色serveradmin 服务器管理员 该角色成员可对服务器进行设置diskadmin 磁盘管理员 该角色成员可管理磁盘文件processadmin 进程管理员 该角色成员可管理系统进程securityadmin 安全管理员 该角色成员可管理登陆名及属性,可授予、拒绝、撤销服务器级和数据库级的权限,可重置登陆名的密码setupadmin 设置管理员 该角色成员可增加、删除连接服务器,并执行某些系统存储过程dbcreator 数据库创建者 该角色成员可创建、修改或删除数据库blkadmin 批量数据输入管理员 该角色成员可执行BULK INSERT语句,但是该角色的成员对要插入数据的表具有INSERT权限public 该角色的成员可以查看数据库13.5.1 相关知识创建数据库角色2.数据库角色在SQL Server中包括两种数据库角色,分别是固定数据库角色和用户自定义角色。固定数据库角色定义在数据库级别上,用户不能增加、修改或者删除固定数据库角色。由于用户有时需要一些特殊的权限,固定数据库角色无法实现,因此需要用户自定义角色,这是对固定数据库角色的补充。在数据库角色中添加用户,可以使用户获得相关的管理或访问数据库及数据库对象的权限。固定的数据库角色如表13-2所示。表13-2 固定数据库角色角色名称 说明db_owner 数据库所有者,该角色成员可执行数据库的所有管理操作db_accessadmin 数据库访问权限管理员,该角色成员可添加或删除数据库用户、工作组和角色db_securityadmin 数据库安全管理员,该角色成员可修改成员身份和管理数据库的权限db_ddladmin 数据库DDL管理员,该角色成员可在数据库中运行数据定义语言DDL命令,允许创建、修改或者删除数据库对象db_backupoperator 数据库备份操作者,该角色成员可备份数据库db_datareader 数据库数据读取者,该角色成员可读取所有用户表中的数据db_datawriter 数据库数据写入者,该角色成员可向所有用户表中添加、更改或者删除数据db_denydatareader 数据库拒绝数据读取者,该角色成员不能读取数据库中任何表的内容db_denydatawriter 数据库拒绝数据写入者,该角色成员不能对任何表进行添加、删除或者修改操作public 特殊的数据库角色,每个数据库用户都是public角色的成员,在没有对某个用户授予特定权限时,此用户将继承授予该安全对象的public角色的权限。public角色不可以被删除13.5.2 任务实施创建数据库角色步骤1:在SSMS中,依次展开“数据库”|“Student”|“安全性”|“角色”,右击“角色”节点,在弹出的快捷菜单中依次选择“新建”|“新建数据库角色”命令,如图13-16所示。步骤2:在弹出“数据库角色-新建”对话框中输入角色名称“myrole”,在“所有者”框中选择“dbo”,单击“添加”按钮,弹出“选择数据库用户或角色”对话框,单击“浏览”按钮,选择“lgx”,如图13-17所示。方法1.在SSMS中创建数据库角色myrole。操作图示操作图示图13-16 “新建数据库角色”对话框图13-17 “选择数据库用户或角色”对话框13.5.2 任务实施创建数据库角色步骤3:单击“确定”按钮,“lgx”出现在角色成员列表中,如图13-18所示。步骤4:单击“确定”按钮,完成角色创建,此时仅仅创建了一个角色名,在后面的任务中将为该角色指定权限。说明:如果要删除角色“myrole”,则选中角色名称,单击鼠标右键,在弹出的菜单中选择“删除”命令,操作比较简单,不再赘述。操作图示图13-18 “数据库角色-新建”对话框13.5.2 任务实施创建数据库角色步骤1:进入SSMS管理界面后,在工具栏中单击“新建查询”按钮,打开“查询编辑器”窗口。步骤2:在“查询编辑器”窗口中输入命令:EXECUTE sp_addrole 'myrole',单击“执行”按钮,创建成功,如图13-19所示。说明:删除数据库角色命令为存储过程:sp_droprole 角色名,删除时特别需要注意的是如果角色中有成员,则删除失败,为了保证操删除作成功运行,在删除角色前需要先删除角色成员,其他与创建过程类似,不再赘述。方法2.使用存储过程sp_addrole创建数据库角色。操作图示图13-19 删除数据库角色对话框13.6 任务6:数据库权限管理给数据库用户lgx授予在Student数据库上的CREATE TABLE语句的权限;给数据库用户lgx授予在学生表上的SELECT、INSERT权限。13.6.1 相关知识数据库权限管理数据库的权限是指用户可以获得哪些数据库对象的使用权,以及用户能够对这些对象执行哪种操作。把一个登录名映射为一个数据库用户,把用户名添加到某个数据库角色中,或者直接对数据库用户进行设置,都是为了对数据库的访问权限进行设置,使用户可以执行被授权的操作。1. 基本概念权限管理是指把安全对象的权限授予主体,撤销或者禁止主体对安全对象的权限。(1)主体主体是可以请求SQL Server资源的个体、组和过程。主体的分类如表13-3所示。13.6.1 相关知识数据库权限管理(2)安全对象安全对象是数据库引擎授权系统控制对其进行访问的资源。每个SQL Server安全对象都有可能授予主体的关联权限,安全对象如表13-4所示。表13-4 安全对象内容主体 内容Windows级别主体 Windows域名登录名、Windows本地登录名SQL Server级别主体 SQL Server登录名数据库级别主体 数据库用户、数据库角色、应用程序角色表13-3 主体的分类13.6.1 相关知识数据库权限管理(2)安全对象安全对象是数据库引擎授权系统控制对其进行访问的资源。每个SQL Server安全对象都有可能授予主体的关联权限,安全对象如表13-4所示。表13-4 安全对象内容安全对象 内容服务器 端点、登陆账号、数据库数据库 用户、角色、应用程序角色、程序集、消息类型、路由、服务、远程服务绑定、安全索引、证书、非对称密钥、约定和架构架构 类型、XML架构集合和对象对象 聚合、约束、函数、过程、队列、统计信息、同义词、表和视图13.6.1 相关知识数据库权限管理(3)架构数据库架构是一个独立于数据库用户的非重复的命名空间,数据库中的对象都属于某一个架构。一个架构只能有一个所有者,所有者可以使用用户、数据库角色等。(4)权限主要安全对象的权限如表13-5所示。安全对象 权限数据库 BACKUP DATABASE、BACKUP LOG、CREATE DATABASE、CREATE FUNCTION、CREATE PROCEDURE、CREATE RULE、CREATE TABLE、CREATE VIEW标量函数 REFERENCES、EXECUTE表值函数、表和视图 DELETE、INSERT、SELECT 、UPDATE、REFERENCES存储过程 DELETE、EXECUTE、INSERT、SELECT 、UPDATE表13-5 主要安全对象权限13.6.1 相关知识数据库权限管理2.权限管理权限管理主要包括授予权限、拒绝访问和撤销权限三种操作。(1)授予权限允许某个用户或角色对某个对象执行某种操作。可以使用SQL命令GRANT实现该功能,也可以在SSMS中的复选框中选择对号“ ”实现。使用GRANT语句可以给数据库用户或者数据库角色授予数据库级别或者对象级别的权限,语法格式如下:GRANT {ALL[PRIVILEGES]}|权限[(列[,…])][,…][ON 安全对象]TO 主体[,…][WITH GRANT OPTION][AS 主体]13.6.1 相关知识数据库权限管理 ALL:指所有权限。ALL PRIVILIGES是SQL-92标准用法。 权限:权限名称。不同的安全对象,权限的取值也不同。数据库的权限取值可以为BACKUP DATABASE、BACKUP LOG、CREATE DATABASE、CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE RULE、CREATE TABLE和CREATE VIEW等;表、视图或表值函数的权限可以是 SELECT、INSERT、DELETE、UPDATE或REFERENCES;存储过程的权限为EXECUTE。 列:指定表、视图或表值函数中要授予其权限的列的名称。 ON安全对象:指定将授予其权限的安全对象。 主体:被授予权限的对象,可以是当前数据库用户、数据库角色。 WITH GRANT OPTION:被授权者可以把获得的权限授予其他用户。 AS主体:当前数据库中执行GRANT语句的用户所属的角色名或组名。13.6.1 相关知识数据库权限管理(2)拒绝访问拒绝某个用户或角色对某个对象执行某种操作。可以使用SQL命令DENY实现该功能,也可以在SSMS中的复选框中选择叉号“ ”实现。使用DENY语句可以拒绝给当前数据库中的用户授予权限,防止数据库用户通过组或者角色成员资格继承权限,语法格式如下:DENY {ALL[PRIVILEGES]}|权限[(列[,…])][,…][ON 安全对象]TO 主体[,…][CASCADE][AS 主体]说明: DENY语法格式中各项的含义与GRANT中的相同项含义类似,不再赘述。 CASCADE:拒绝授予指定用户或者角色的权限,同时对该用户或者角色授予该权限的所有其他用户和角色也拒绝授予该权限。13.6.1 相关知识数据库权限管理(3)撤销权限撤销以前给当前数据库用户授予或拒绝的权限,语法格式如下:REVOKE[GRANT OPTION FOR] {ALL[PRIVILEGES] |权限[(列[,…])][,…] }[ON 安全对象]{TO|FROM} 主体[,…][CASCADE][AS 主体]说明: REVOKE语法格式中各项的含义与GRANT中的相同项含义类似,不再赘述。 CASCADE:回收指定用户或者角色的权限,同时回收转授出的权限。13.6.2 任务实施数据库权限管理步骤1:以系统管理员身份登陆到SQL Server服务器,在SSMS中,依次展开“数据库”|“Student”,右击“Student”节点,在弹出的快捷菜单中依次选择“属性”菜单项进入到“数据库属性”对话框,在该窗口中选择“权限”页,如图13-20所示。步骤2:在“用户或角色”栏中选择需要授予权限的用户或角色“lgx”,在窗口下方的权限列表中找到需要设置的权限 “创建表”后的复选框中打钩,如图13-20所示,单击“确定”按钮,完成数据库权限的设置。步骤3:在SSMS中,依次展开“数据库”|“Student”|“表”|“学生表”,右击“学生表”节点,在弹出的快捷菜单中依次选择“属性”菜单项进入到“表属性”对话框,在该窗口中选择“权限”页,如图13-21所示。方法1. 在SSMS中授予权限。操作图示操作图示图13-20 “数据库属性”对话框图13-21 “表属性”对话框13.6.2 任务实施数据库权限管理步骤4:单击“搜索”按钮,在弹出的“选择用户或角色”对话框中单击“浏览”按钮,选择需要授权的用户或角色“lgx”,如图13-22所示。步骤5:两次单击“确定”按钮,返回到“表属性”对话框,在该对话框中选择数据库用户lgx,在“lgx的权限”中选择需要授予的权限“插入”、“选择”,在相应权限的授予列的复选框上打钩,如图13-23所示。单击“确定”按钮,完成授权。说明:如果授予用户在表列上的SELECT权限,在选择“选择”权限后单击“列权限”按钮,在弹出的“列权限”对话框中选择要授予权限的列即可。对用户授予权限后,可以用该用户身份登陆到SQL Server,对数据库执行相关的操作进行测试。方法1. 在SSMS中授予权限。操作图示操作图示图13-22 “查找对象”对话框图13-23 “表属性”授予权限对话框13.6.2 任务实施数据库权限管理步骤1:进入SSMS管理界面后,在工具栏中单击“新建查询”按钮,打开“查询编辑器”窗口。步骤2:在“查询编辑器”窗口中输入命令:USE StudentGOGRANT CREATE TABLETO lgxGOGRANT INSERT,SELECTON 学生表TO lgxGO方法2. 用命令方式授予权限操作图示操作图示13.6.2 任务实施数据库权限管理单击“执行”按钮,授权成功,如图13-24所示。方法2. 用命令方式授予权限图13-24授予权限对话框项目小结本项目主要讲述了SQL Server 2008中数据库的安全管理机制,SQL Server通过登陆服务器身份验证、数据库用户以及数据库对象权限等三个方面实现对数据库的安全管理。在连接到SQL Server实例时,首先需要有效的登陆帐户登陆到SQL Server实例,如果要继续访问系统中的特定数据库,需要映射一个数据库用户,在SQL Server2008中,数据库登陆帐户要在所访问的数据库中与一个数据库用户建立映射,再为数据库用户设置权限。本项目的主要内容如下:1.身份验证模式2.数据库的安全性3.数据库用户4.角色管理5.权限管理实 训 项 目综合实训1:创建登陆帐户、数据库用户、角色,并设置权限实训项目实训目标:掌握数据库的安全管理。实训要求:创建两个登陆帐户Teacher1和Teacher2,在数据库Student中分别映射为数据库用户Teacher1和Teacher2,在数据库Student上建立一个数据库角色TeacherRole,并为该角色添加成员数据库用户Teacher1和Teacher2,设置TeacherRole对学生表具有查询、增加、删除、修改的权限,对院系表只有查询的权限。THANKS 展开更多...... 收起↑ 资源预览