第 12章 安全管理
12-1 SQL Server的安全机制
12-2 安全认证模式
12-3 SQL Server账户管理
12-4 角色
12-5 权限安全管理对于 SQL Server 2000数据库管理系统而言是至关重要的。 本章主要 介绍了 SQL Server的安全性、安全构架、安全等级、安全认证模式,SQL Server用户账号、
用户角色和权限的管理等。。
12-1-1 安全性 与数 据安全性
12-1-2 SQL Server安全 构架
12-1-3 SQL Server安全等级
12-1 SQL Server的安全机制安全性管理对于一个数据库管理系统或任何一个公司组织的信息系统开发而言都是至关重要的,是数据库管理中十分关键的环节,是数据库中数据信息被合理访问和修改的基本保证。安全性系指允许那些具有相应数据访问权限的用户登录到 SQL Server 2000,访问数据以及对数据库对象,实施各种权限范围内的操作,并拒绝所有非授权用户的非法操作。
数据库中通常存储着大量个人信息、交互清单、客户资料或其他机密性信息数据,倘若某人未经授权非法侵入数据库,并窃取查看和修改重要数据的权限,将会给系统造成极大的危害。数据的安全性是指保护数据以防止因不合法的使用而造成数据的泄密和破坏。这就要采取一定的安全保护措施,在数据库中,系统用检查口令等手段来验证用户身份,合法的用户才能进入数据库系统,当用户对数据库执行操作时,系统会自动检查用户是否具有执行这些操作的相关权限。
12-1-1 安全性 与数 据安全性在 SQL Server 2000数 据 库 管理系 统 中 实现 安全性 运 作,尤需了解 SQL Server
的安全体系 结构 和 实现 安全的方法。安全系 统 的 构 架建立在用 户 和用 户组 的基 础上。 图 12-1说 明了微 软 公司的 Windows NT 和 Windows 2000 Server中用 户,
本地 组 及全局 组 如何映射到 SQL Server 中的安全 账户,以及 SQL Server
2000是如何 独 立于 Windows NT 4.0 和 Windows 2000 Server中的 账户来处理安全 账户 。
图 12-1中的 电 子商 务 本地 组 中含有 两个 用 户 和一 个 信息管理全局 组,这个 全局组 中又含有 两个 用 户 A和 B。 SQL Server 允 许 直接使用 Windows NT 4.0 和
Windows 2000 Server本地 组 和全局 组来组织 SQL Server 的用 户账户 。此外,
Windows 2000 Server用 户 E 虽 不 属 于 Windows NT 4.0 或 Windows 2000
Server组,但可以作 为 Windows NT 4.0 用 户 或作 为 SQL Server 用 户 直接添加到 SQL Server 实 例中。
SQL Server通 过 使用角色 进 一步 扩 展了 这种 的模型。角色是 为 了 进 行管理而 组织 的用 户组,与 Windows NT 4.0 或 Windows 2000 Server组 相同,但是 当等价的 Windows NT 4.0 或 Windows 2000 Server组 不存在 时,将 在 SQL
Server 中 创 建 这 些角色。例如,Managers
角色中包含 Windows NT 4.0信息管理全局 组,以及 Windows NT4.0用 户 C和用户 D。
此外,SQL Server 还 通 过 使用 单独 的 数 据 库 角色,提高 应 用水平的安全管理 。
12-1-2 SQL Server安全 构 架图 SQL Server2000安全机 构在合理实施安全性管理前,用户尤亟待明了 SQL Server的安全等级。迄今为止,SQL Server 2000和绝大多数数据库管理系统( DBMS)一样,都还是运行在某一特定操作系统平台下的应用程序,因而 SQL Server安全性机制尚脱离不了操作系统平台,据此
SQL Server 2000安全机制可分为如下四个等级:
1 操作系统的安全性 。
1 SQL Server的安全性 。
1 数据库的安全性 。
数据库对象的安全性。
每个安全等级都可视作一扇沿途设卡的,门,,若该门未上锁 ( 没有实施安全保护 ),或者用户拥有开门的钥匙 ( 有相应的访问权限 ),则用户可以通过此门进入下一个安全等级,倘若通过了所有门,用户即可访问数据库中相关对象及其所有的数据了 。
SQL Server安全机制如图 12-2所示 。
12-1-3 SQL Server安全等 级
12-2-1 身 份验证
12-2-2 权 限 认证
12-2-3 设 置 认证 模式
12-2 安全 认证 模式用户在使用 SQL Server 2000时,需要经过两个安全性阶段:身份验证和权限认证。
首 先是身份验证阶段,该阶段系统( Windows 2000/NT Server或 SQL Server 2000)将对登录 SQL Server用户的账户进行验证,判断该用户是否有连接 SQL Server 2000实例的权力。如果账户身份验证成功了,表示用户可以连接 SQL Server 2000实例,否则系统将拒绝用户的连接。然后步入权限认证阶段,对登录连接成功的用户检验是否有访问服务器上数据库的权限,为此需授予每个数据库中映射到用户登录的账户访问权限,
权限认证可以控制用户在数据库中进行的操作。
12-2-1 身 份验证身份验证阶段,系统需要对用户登录进行认证 。 Microsoft SQL Server 2000身份验证有两种模式,Windows 身份验证模式和混合身份验证模式 。
( 1) Windows 身份验证模式 ( 集成登录模式 ) 。 该模式基于 Windows操作系统的安全机制验证用户身份,只要用户能够通过 Windows NT 4.0 或 Windows 2000 Server用户账户验证,即可连接到 SQL Server,无须再度认证 。 这种验证模式只适宜于能够提供有效身份验证的基于 Windows NT 或 Windows 2000 Server的操作系统平台,在 Windows
9X操作系统下无法使用 。 ( 2) 混合身份验证模式 ( 标准登录模式,又称 SQL Server
混合身份验证 ) 。 其基于 Windows 身份验证和 SQL Server 身份混合验证 。 在该模式下,
系统将区分用户账号在 Windows操作系统下是否可信,对于可信连接用户,系统直接采用 Windows身份验证机制,否则 SQL Server 2000会自动通过账户的存在性和密码的匹配性来进行验证 。 即采用 SQL Server模式验证时,系统将检查是否已经建立了该用户的登录账户及其口令是否吻合 。 只有当通过验证后,该用户应用程序方可连接到
SQL Server服务器,否则系统将拒绝该用户的连接请求 。
12-2 安全 认证 模式与 SQL Server 混合身 份验证 相比,Windows 身 份验证 有某些 优 点,
Windows 身 份验证 模式更 为 安全,主要是由于 它与 Windows NT 4.0 和 Windows
2000 安全系 统 的集成 。 Windows NT 4.0 和 Windows 2000 安全系 统 相 对 可以提供更多的功能,如安全 验证 和密 码 加密,审 核,密 码过 期,最短密 码长 度,以及在多次登 录请 求无效后 锁 定 账户 。 对 于 账户 以及 账户组 的管理和修改也更 为 方便 。
SQL Server 混合身 份验证 的管理 较为简单 。 它 允 许应 用程序的 众 多用 户 使用同一 个登 录标识,而 Windows 身 份验证 模式 则 需 为 所有的用 户创 建 账户 。
若用 户试图 通 过 提供空白登 录 名 称连 接到 SQL Server 的 实 例,SQL Server 将 使用
Windows 身 份验证 。 此外,如果用 户试图 使用特定的登 录连 接到配置 为 Windows
身 份验证 模式的 SQL Server 实 例,则将 忽略 该 登 录并 使用 Windows 身 份验证 。
由于 Windows NT 4.0 和 Windows 2000 用 户 和 组,只能由 Windows NT 4.0 或
Windows 2000 维护,因此 当 用 户进 行 连 接 时,SQL Server 将读 取有 关该 用 户 在组 中的成 员资 格信息 。 如果 对 已 连 接用 户 的可 访问权 限 进 行更改,则当 用 户 下次 连 接到 SQL Server 实 例或登 录 到 Windows NT 4.0 或 Windows 2000 时 ( 取 决 于更改的 类 型 ),这 些更改 会 生效 。
总之,Windows 身份验证是首选模式,而对于应用程序开发人员或数据库管理人员而言,更青睐于 SQL Server混合模式 。 SQL Server的安全性决策过程如图 12-
3所示 。
混合模式允许某些非可信的 Windows操作系统账户连接到 SQL Server,例如互联网客户等,它相当于在 Windows身份验证机制之后加入了 SQL Server身份验证机制,对非可信的 Windows账户进行自行验证 。 SQL Server身份验证机制是指 SQL
Server 2000通过检查是否存在正在登录的 SQL Server账户,以及输入的密码是否与设置的密码相符,自己进行身份验证 。 对于未设置的 SQL Server登录账户或密码不符的登录账户,则身份验证失败,连接将被拒绝 。 对于 Windows 9X以及
Windows NT和 Windows 2000 Server客户端以外的客户端,必须使用 SQL
Server身份验证 机制 。
当用户通过身份验证连接到 SQL
Server实例后,用户可以访问的每个数据库仍然要求其具有单独的用户账户,对于没有账户的数据库,将无法访问。这样可防止一个已连接的用户对 SQL Server的 所有数据库资源进行访问。此时,已连接用户虽然可以发送各种 Transact-SQL 语句命令,但是这些操作命令在数据库中是否能够成功地执行,还取决于该用户账户在该数据库中对这些操作的权限设置。如果发出操作命令的用户没有执行该语句的权限或者没有访问该对象的权限,
则 SQL Server将不会执行该操作命令。
所以没有通过数据库中的权限认证,
即使用户连接到了 SQL Server示例上,
也无法使用数据库。
一般而言,数据库的所有者或对象的所有者可以对其他数据库用户授予权限或者解除权限。
12-2-2 权 限 认证在 连 接 SQL Server时,需要 选择 服 务 器的 认证 模式(此在第三章的注 册 服 务 器中已有所 阐述),如 图 12-4所示。 当 然 对 于已 经选择认证 模式的服 务 器 尚 可再度 进 行修改,设 置,通常是通 过 企 业 管理器下的 SQL Server属 性 来进 行 认证 模式 设 置的。
认证 模式 设 置步 骤 如下
( 1) 启动 企 业 管理器下的 SQL Server属 性 对话 框。有多 种 方法 进 入企 业 管理器下的 SQL
Server属 性 对话 框,在此 仅 枚 举两种 方法。其一是在企 业 管理器中 选 中展 开 一 个 服 务 器 组,
右 击 某 个 服 务 器 实 例,再 单击 【 属 性 】,单击 【 下一步 】 按 钮,弹 出如 图 12-5 所示的
【 SQL Server属 性配置 】 对话 框(默 认为 【 常 规 】 选项 卡);其二 为 在展 开 的服 务 器 组 下,
选 中某服 务 器,单击 【 操作 】 菜 单 下的 【 属 性 】 命令 项,弹 出 图 12-5。
( 2) 在 【 SQL Server属 性配置 】 对话 框中,单击 【 安全性 】 选项 卡,如 图 12-6 所示 。
( 3) 在安全 区 的身 份验证 中,设 置 验证 模式可 选为,SQL Server和 Windows 身 份验证连 接到 SQL Server实 例或 仅 Windows。 系 统 默 认验证 模式 为 前者 。
( 4) 在 【 审 核 级别 】 中 选择 在 SQL Server 错误 日志中 记录 的用 户访问 SQL Server的 级别 ( 选择该项,则 必 须 重新 启动 服 务 器才能 启 用 审 核 ),
若 【 无 】 表示不 执 行 审 核 。
若 【 成功 】 表示只 审 核成功的登 录尝试 。
若 【 失 败 】 表示只 审 核失 败 的登 录尝试 。
若 【 全部 】 表示 审 核成功的和失 败 的登 录尝试 。
( 5) 在 启动 服 务账户区,可 设 置系 统账户启动 ( 设 置 SQL Server 服 务账户 的 实 例 为内 置的本地系 统 管理 员账户 ) 或本 账户启动 ( 设 置 SQL Server 服 务账户为 Windows NT 4.0
或 Windows 2000 Server域 账户,当 然要 输 入 账户 的名 称 及密 码 ) 。 系 统 默 认项为 后者 。
( 6) 单击 【 确定 】,完成 SQL Server属 性配置,关闭话 框中 。
( 7) 重新 启动 SQL Server,使 设 置的 认证 模式生效 。
注:重新 启动 前,SQL Server将继续 按原 来 的 认证 模式 运 行 。
12-2-3 设 置 认证 模式
12-3-1 系 统内 置登 录账户
12-3-2 创 建 SQL Server登 录账户
12-3-3 Windows 账户 的授 权访问
12-3-4 查询与维护账户 信息
12-3-5 特殊 数 据 库 用 户
12-3 SQL Server账户 管理
SQL Server2000下用 户 必 须 通 过 登 录账户 建立自己的 连 接能力,以期 获 得 对 SQL Server实 例的 访问权 限。然后 该 登 录账户 必 须 映射到用于控制在 数 据 库 中所 执 行的活 动 的 SQL Server用 户账户,以控制用 户拥 有的 权 限。
SQL Server 2000中安全登 录账户 有 两 大 类 型:其一是 创 建新的基于
SQL Server 2000的 账户 ;其二 为从 Windows组 或者用 户 中 创 建或授 权 的安全 账户 。前者,基于混合身 份验证 模式:即 SQL Server验证 方式,必 须 有合法的 账号 和密 码 (密 码并 非必 须 的,但 设 置 为 好);
后者 实际 上是 将 Windows组 或者用 户 映射成 为 SQL Server 2000的登 录账户,并 通 过 授 权 等操作,实 施 对数 据 库 系 统 的管理。
12-3 SQL Server账户 管理
SQL Server 2000安装后系统有三个内置登录账户,在企业管理器的相关节点下可见一斑。
启动企业管理器,展开服务器组并选中服务器,单击 【 安全 】 节点,然后点击 【 登录 】,就会在内容窗格中看到以下三个内置登录账户。
( 1)域名 \Administrator:一个 Windows NT/2000 Server用户账户,允许作为 SQL Server
2000的登录账户使用。
( 2) BUILTIN\ Administrators:一个 Windows NT/2000 Server组账户,凡属于该组的用户账户均可作为 SQL Server 2000的登录账户使用。
( 3) sa,SQL Server 2000的系统管理员登录账户。
若使用 Windows NT/2000 Server用户和组连接到 SQL Server 2000,在登录时必须选择
Windows 身份验证模式,此时不需密码;而使用系统管理员账户 sa接到 SQL Server 2000,
则必须选择 SQL Server身份验证模式(混合模式),此时必须提供密码。
注,在完成 SQL Server 2000安装后,系统就自动建立了一个特殊用户 sa,sa 账户拥有了服务器和所有数据库(包括系统数据库和和所有由 SQL Server 2000账户创建的数据库)的管理权限,因而 sa账户拥有系统最高的管理许可权限,可以执行服务器范围内的所有操作。但是,在刚刚完成 SQL Server 2000安装时 sa账户并无密码,这是极其危险的,必须首先对 sa账户设置密码,以防未经授权的用户使用 sa 登录访问 SQL Server
实例,造成对系统的破坏。
系统管理员 sa默认情况下被指派给固定服务器角色 sysadmin,并不能进行更改。虽然 sa
是内置的管理员登录账户,但最好不要在日常管理中使用 sa账户进行登录管理。相反,
应使系统管理员成为 sysadmin 固定服务器角色的成员,并让他们使用自己设置的系统管理员账户来登录。只有当自己创建的系统管理员账户无法登录或忘记了密码时才使用
sa这个特殊账户。
12-3-1 系 统内 置登 录账户在 对 SQL Server 2000实 施 维护 和管理 并 采用 SQL Server混合身 份验证时,通常需要添加合法的登 录账户来连 接、登 录 SQL Server。一般而言,可以使用企 业 管理器和
Transact_SQL语 句 来 完成添加登 录账户 。
1.使用企 业 管理器 创 建登 录账户
2,Transact_SQL语 句 创 建登 录账户
1.使用企 业 管理器 创 建登 录账户使用企 业 管理器 创 建登 录账户 的方法如下:
( 1)展 开 服 务 器 组 及要 创 建登 录账户 的服 务 器 节 点。
( 2) 选择并 右 击树 型 结构 上 【 安全性 】 节 点下 【 登 录 】 项,从弹 出式菜 单 中 选择 【 新建登 录 】 命令,弹 出如 图 12-8 所示的 【 新建登 录 】 对话 框。
( 3)在 【 新建登 录 】 对话 框的 【 常 规 】 选项 卡中 输 入的登 录账户 的相 关 信息,如 账户 名、
登 录 身 份验证 模式的 选择,默 认数 据 库 和默 认语 言等。
( 4)点 击 【 新建登 录 】 对话 框的 【 服 务 器角色 】 选项 卡( 标签 ),,用 户 可以在 该对话框中 选择将 要分配 给该 登 录账户 的固定服 务 器角色(固定服 务 器角色的作用 将 在本章 节中加以 阐 述)。
( 5) 点 击 【 新建登 录 】 对话 框的 【 数 据 库访问 】 选项 卡,如 图 12-10所示,用 户 可以在 该对话 框中 决 定允 许该 登 录账户访问 的 数 据 库 以及 将 要分配 给该 登 录账户 的 数 据 库 角色 ( 数 据 库 角色的作用 将 在本章 节 中加以 陈 述 ) 。
12-3-2 创 建 SQL Server登 录账户在 SQL Server 2000中主要用存 储过 程 语 句 sp_addlogin来创 建新的使用 SQL Server 认证 模式的登 录账户 。
sp_addlogin语 法格式 为,sp_addlogin [@loginame =] 'login'
[,[@passwd =] 'password']
[,[@defdb =] 'database']
[,[@deflanguage =] 'language']
[,[@sid =] 'sid']
[,[@encryptopt =] 'encryption_option']
其中各 语 法成分含 义 如下:
1 @loginame:登 录账户 名,在同一 个 服 务 器上,登 录账户 名必 须 唯一性。
1 @passwd,登 录账户 密 码 。
1 @defdb,设 置新建登 录账户 的默 认数 据 库,不 经设 置默 认数 据 库为 master。
1 @deflanguage:登 录时 默 认语 言。
1 @sid:登 录账户 安全 标识码 。 sid 的 数 据 类 型 为 varbinary(16),默 认设 置 为 NULL。
如果 sid 为 NULL,则 系 统为 新登 录 生成 SID。
1 @encryptopt,将 密 码 存 储 到系 统 表 时 是否 对 其 进 行加密。 @encryptopt 参数 有三 个取 值选项,
NULL,默 认项,表示 将对 密 码进 行加密。
skip_encryption 表示 对 密 码 不加密。
skip_encryption_old 只在 SQL Server 升 级时 使用,表示 旧 版本已 对 密 码 加密。
2,Transact_SQL语 句 创 建登 录账户
【 例 12-1】 创 建一 个 名 为,电 子商 务,,密 码为,040608”,默 认数 据 库为,信息,,默 认语言 为,French”,SID 为,0x0123456789ABCDEF0123456789ABCDEF”的登 录账户 。
EXEC sp_addlogin '电 子商 务 ','040608','信息 ',' French,
0x0123456789ABCDEF0123456789ABCDEF
【 例 12-2】 创 建一 个 名 为,计 算机,,密 码为,jsj200406”,默 认数 据 库为,电 子商 务,的登 录账户 。
EXEC sp_addlogin '计 算机 ',' jsj200406','电 子商 务 '
注,Sysadmin或 securityadmin固定服 务 器角色的成 员 可以 执 行 sp_addlogin的 权 限。
在 SQL Server 2000中必 须对 Windows的 账户 授予 连 接 SQL Server实 例的 权 限后,
Windows用 户 才可以 访问数 据 库 。 Windows系 统为 了 简 化用 户 管理工作,将 用 户划 分 为不同的用 户组,组 中的成 员继 承用 户组 的所有 权 限 。 如果一 个 用 户属 于多 个组 ( 按
WindowsNT/2000 Server作用范 围 可 将组 分 为 本地 组 和全局 组 ),则该 用 户将拥 有 这 些组 的 权 限的 总 和 。 授子指定用 户连 接 SQL Server实 例 权 限 时,应该 用,域名\ 计 算机名 \
用 户 名,的方式指定域名,计 算机名和用 户 。 在授予本地 组 或全局 组连 接到 SQL Server实例的 权 限 时,也需要使用,域名\ 计 算机名 \用 户 名,的方式予以指定 。 对 于 内 置本地 组,
则 使用 BUILTIN代替域名或 计 算机名,即用,BUILTIN\用 户 名,进 行指定 。
12-3-3 Windows 账户 的授 权访问通常,可使用企 业 管理器和 Transact_SQL语 句 来 完成 账户 的授 权访问 。前者 与创 建 SQL Server登 录账户 相仿。
1.企 业 管理器方式使用企 业 管理器添加登 录账户 方法如下( 过 程可 参 考 图 12-8,图 12-9,图 12-10所示):
( 1)展 开 服 务 器 组 及要 创 建登 录账户 的服 务 器 节 点。
( 2)展 开 【 安全性 】,右 击 【 登 录 】,然后 单击 【 新建登 录 】 。在 【 名 称 】 框中,
输 入要被授 权访问 SQL Server 2000的 Windows NT/2000 Server 账户 。
( 3)在 【 身 份验证 】 下,单击 【 Windows 身 份验证 】 。可 选 性 设 置:
在 【 数 据 库 】 中,单击 用 户 在登 录 到 SQL Server 实 例后所 连 接的默 认数 据 库 。
在 【 语 言 】 中,单击显 示 给 用 户 的信息所用的默 认语 言。
2,Transact_SQL语 句方式用 Transact_SQL下 sp_grantlogin存 储过 程 语 句:可完成使 Windows 用 户账户 或 组账户 得以使用 Windows 身 份验证连 接到 SQL Server。
sp_grantlogin语 句的 语 法 为,
sp_grantlogin [@loginame =] 'login'
参数说 明,[@loginame =] 'login':是要添加的 Windows NT 用 户 或 组 的名 称 。
Windows NT 组 和用 户须 用 Windows NT 域名限定,格式 为 "域 \用 户 ",如
London\Joeb,无默 认值 。
【 例 12-3】 将 WINDOWS用 户,YU2004\xxgl” 设 定 为 SQL Server 登 录 者。
Exec sp_grantlogin ' YU2004\xxgl ‘
在 SQL Server 2000中登 录账户 的 查询与维护 功能主要由 sp_password,sp_defaultdb,
sp_defaultlanguage,sp_helplogins,sp_revokelogin,sp_denylogin,sp_droplogin等系 统 存储过 程 语 句完成。表 12-1罗 列了 查询与维护账户 信息及本章后 续 小 节 中用到的相 关 存 储过 程 语 句的名 称,语 法格式和功能。此后 将 通 过 枚 举实 例 来 表述登 录账户 的 查询与维护 。
1,查询 登 录账户 信息
【 例 12-4】 查询 有 关 登 录账户,信息管理,的相 关 信息。
EXEC sp_helplogins ‘信息管理 ’
go
2,维护 登 录账户 信息
【 例 12-5】 将 登 录账户,信息管理,的密 码 由,空,改 为 ok,然后再由 ok 改 为 mygod,最 终 密 码 仍就改 为,空,。
EXEC sp_password NULL,'ok','信息管理 'GoEXEC sp_password 'ok','mygod','信息管理
'GoEXEC sp_password 'mygod','null','信息管理 'Go
【 例 12-6】 将用户账户,信息管理,的默认数据库设置为,会计,。
EXEC sp_defaultdb '信息管理 ','会计 ' Go
【 例 12-7】 将用户账户,信息管理,的默认语言设置为,french”。
EXEC sp_defaultlanguage '信息管理 ','french'Go 【 例 12-8】 从 SQL Server 2000中删除登录账户
,电子商务,。
EXEC sp_droplogin '电子商务 ' Go
【 例 12-9】 拒绝用户,YU\xxgl”登录到 SQL Server 2000。
EXEC sp_denylogin ' YU\xxgl ' -- 或 EXEC sp_denylogin [YU\xxgl]Go 【 例 12-9】 删除登录到 SQL
Server 2000的 Windows用户,YU\eba”。
EXEC sp_revokelogin ' YU\eba ' -- 或 EXEC sp_revokelogin [YU\eba]Go
12-3-4 查询与维护账户 信息注; 为 了加深理解,获 取更佳效果,可根据表 12-1语 法和 内 涵,与 【 例 12-1】,【 例
12-2】 和 【 例 12-3】 对 照 学习 。
当然 在 SQL Server 2000中登 录账户 的 查询与维护 功能,也可以由企 业 管理器完成,而且感 觉 上是 别 有一帆 风 味。
图 12-12所示的 【 多 验证 模式登 录账户对话 框 】 显 示了 SQL Server 2000中的登 录账户 (包含
SQL Server新建的:如信息管理和 SQL授 权 的 Windows 用 户 或 组账户,如:
YU2000\Guest),任意右 击 其中一 个 登 录账户 ( YU2000\Guest),在 弹 出的快捷采 单 中点 击 【 属 性 】,会 出 现 如 图 12-13所示的 【 利用 账户属 性 进 行 维护 】 对话 框,通 过该属 性的三个选项 卡( 标签 ),可以分 别进 行,查询账户 信息、密 码 修改、默 认数 据 库设 置、默 认语 言 设置,删 除登 录账户,拒 绝 和 删 除所授 权 的 Windows用 户 或 组 用 户,服 务 器角色,数 据 库访问 等的操作。
在 SQL Server 2000中包含了具有特定 权 限和效用的三 种 特殊的 数 据 库 用 户,
( 1) 数 据 库 所有者 ( dbo) 。
( 2) 数 据 库对 象所有者 。
( 3) guest。
1,数 据 库 所有者在 SQL Server 2000中,数 据 库 的 创 建者即 为数 据 库 的所有者,而 dbo是 数 据 库 的最高 权 利所有者 。 当 SQL Server 2000中安装 时,dbo 被 设 置到 model数 据 库 中,每 个数 据 库 都存在,具有所有 数 据 库 的操作 权 限,并 可向其他用 户 授 权,且不能被 删 除 。
固定服 务 器角色 sysadmin 的任何成 员 所建 数 据 库 及任何 对 象都自 动属 于 dbo,而不 属 于用 户本身,所以,在 Transact_SQL语 句中限定 数 据 库对 象 时,若 数 据 库对 象 为 sysadmin角色成 员所建,则 使用 dbo,否 则 使用 创 建者的名 称 限定 数 据 库对 象
。例如,如果信息管理 数 据 库 有 RS和 CW两个数 据 库 用 户,RS数 据 库 用 户 是固定服 务 器角色
sysadmin 的成 员,创 建了人事表,则 人事表 属 于 dbo,限定 为 dbo.人事,而不以 RS.人事限定;
CW数 据 库 用 户 是固定 数 据 库 角色 db_owner 的成 员,而非 sysadmin 的成 员,创 建了 会计 表,
则会计 表 属 于 db_owner,被限定 为 CW.会计 。
12-3-5 特殊 数 据 库 用 户在 Transact_SQL语 句中指定 对 象 时 表述如下:
select * from 信息管理,dbo.人事 where 职称 =’教 授 ’
select * from 信息管理,CW.会计 where 科目 =’1010101’ and 期初借方余 额 =1698900
SQL Server 2000中 数 据 库对 象涵盖表、索引、默 认,规则,视图,触发 器、函 数 或存 储过 程等,数 据 库对 象 创 建者( 数 据 库 用 户 )即 为该数 据 库对 象的所有者,同 时隐 含具有 该数 据 库对象的所有操作 权 限。 数 据 库对 象的 权 限必 须 由 数 据 库 所有者或系 统 管理 员 授予。在授予 数 据 库对 象 这 些 权 限后,数 据 库对 象所有者就可以 创 建 对 象 并 授予其他用 户 使用 该对 象的 权 限。 在一个数 据 库 中,不同用 户 可以 创 建同名的 数 据 库对 象,因而用 户 在 访问数 据 库对 象 时,必 须对数据 库对 象的所有者 进 行限定。如,检 索信息管理 数 据 库 下 CW用 户 所建的 会计 表中相 关 信息。
select * from 信息管理,CW.会计 where 科目 =’10201’ and 借方 发 生 额 =250000
当 在 Transact_SQL语 句中不 实 施限定 数 据 库对 象所有者 时,SQL Server 2000将 首先在 当 前数 据 库 中 查 找 属 于 当 前用 户 的 数 据 库对 象。若找不到,则查 找 属 于 dbo的 数 据 库对 象,最 终结 束该语 句的操作。
3,Guest
定义,guest是 SQL Server 2000中的一 个 特殊用 户 用 户帐户,
其允 许 具有 SQL Server登 录帐户 而在 数 据 库 中 没 有 数 据 库 用 户 者 访问数 据 库 。此 时,SQL
Server会检 索 该数 据 库 中是否有 guest用 户,若存在 该 用 户,就允 许 其以 guest用 户权 限 访问数据 库,否 则 拒 绝 之。 当满 足下列所有 条 件 时,登 录 采用 guest 用 户 的 标识 登 录 有 访问 SQL
Server实 例的 权 限,但 没 有通 过 自己的用 户帐户访问数 据 库权 限。 数 据 库 中含有 guest 用 户帐户 。 可以 将权 限 应 用到 guest 用 户,就如同 它 是任何其 它 用 户帐户 一 样 。可以在除 master
和 tempdb 外(在 这两个数 据 库 中 它 必 须 始 终 存在)的所有 数 据 库 中添加或 删 除 guest 用 户 。
默 认 情 况 下,新建的 数 据 库 中 没 有 guest 用 户帐户 。若要 将 guest 用 户帐户 添加到名 为 信息管理 数 据 库 中,可在 查询 分析器中 运 行下列代 码,
USE 信息管理
GO
EXECUTE sp_grantdbaccess guest
图 12-15 查看、删除数据库用户对话框及快捷菜单在 实现 安全登 录 后,如果在 数 据 库 中 并没 有授予 该 用 户访问数 据 库 的 权 限,则该 用 户 仍然不能 访问数据 库,所以 对 于每 个 要求 访问数 据 库 的登 录,就必 须将 用 户账户 添加到 数 据 库 中,并 授予其相 应 的活动许 可( 访问 等) 权 限。 数 据 库 的 许 可 权 限是通 过 映射 数 据 库 用 户与 登 录账户 之 间 的 关 系 来实现 。 数据 库 用 户 是 数 据 库级 的安全 实 体,就象登 录账户 是服 务 器 级 的安全 实 体一 样 。
数 据 库 用 户 用 来 指定 哪 些 户 用可以 访问哪 些 数 据 库 。在一 个数 据 库 中,用 户对数 据的 访问权 限以及 对数 据 库对 象的所有 关 系都是通 过 基于 数 据 库 的用 户账号来 控制的,即 两个 不同 数 据 库 中可以有 两个 相同的用 户账号 。在 数 据 库 中用 户账号与 登 录账号 是 两个 不同的 概 念,一 个 合法的登 录账号 只表明 该账号 通 过 了 Windows身 份验证 或 SQL Server混合身 份验证,但不能表明其可以 对数 据 库数 据和 数 据 对象 进 行某 类 操作,所以一 个 登 录账号总 是 与 一 个 或多 个数 据 库 用 户账号 (即 这账号 分 别 存在于不同的数 据 库 中,如登 录账号 sa 自 动与 每一 个数 据 库 用 户 dbo相 关联 )相 对应,这样 才可以 访问数 据 库 。
通常可以利用企 业 管理器和 Transact_SQL下系 统 存 储过 程 语 句 来实 施 数 据 库 用 户 管理。
1.使用企 业 管理器管理 数 据 库 用 户
( 1) 创 建 数 据 库 用 户利用企 业 管理器 创 建新 数 据 库 用 户 步 骤 如下:
启动 企 业 管理器,单击 要 创 建 数 据 库 用 户 的服 务 器 节 点,展 开该 服 务 器下 数 据 库节 点,并 打 开 要 创 建用 户 的某 个数 据 库节 点(此 处为 信息管理 数 据 库 )。
右 击该数 据 库 下用 户图标,在 弹 出的快捷菜 单 中 选择 【 新建 数 据 库 用 户 】,弹 出如 图 12-14 所示的
【 新建( 数 据 库 )用 户 】 对话 框。
在 【 登 录 名 】 列表框 内选择 已 创 建的登 录账户,在 【 用 户 名 】 选择 框 内输 入 数 据 库 用 户 名 称 。
在 数 据 库 角色成 员 下的 选项 框中,为该 用 户选择数 据 库 角色(此 将 在角色一 节 中作 详细 介 绍 ),并单击 【 确定 】 按 钮,即可 将 已 创 建的 【 电 子商 务 】 账户设 置成信息管理 数 据 库 用 户,其 与 登 录账户 同名,但也可不同名 称 。
注,图 12-14中 【 属 性 】 按 钮 可用 来设 置角色的相 关 信息。 当 在 创 建一 个 SQL Server 登 录账号时,
就可以先 为该 登 录账号 定出其在不同 数 据 库 中所用的用 户 名 称,这实际 上也完成了 创 建新的 数 据 库 用户
12-3-6 数 据 库 用 户
( 2) 查 看,删 除 数 据 库 用 户在企 业 管理器下所 选 特定 数 据 库 的用 户图标,则会 在右面的窗格中 查 看,显 示 当 前 数 据 库 的所有用 户 (其 内详细 信息可由某 个 指定 数 据 库 用 户属 性 查 看),如 图 12-15所示,选 中用 户图标后,在右面窗格中右 击 想要 删 除的 数 据 库 用 户,则会弹 出快捷菜 单,然后 选择 Delete 则会从当前 数 据 库 中 删 除 该数 据 库 用 户 。
2.利用存 储过 程管理 数 据 库 用 户如表 12-1所示,SQL Server 重要使用 sp_helpuser,sp_grantdbaccess 与
sp_revokedbaccess系 统过 程管理 数 据 库 用 户 。
( 1) 创 建新 数 据 库 用 户 。
如前所述除了 guest 用 户 外其 它 用 户 均 须与 某登 录账号 相匹配。所以 当 我 们 使用系 统过 程 时 也需指出登 录账号 和用 户 名 称 。存 储过 程 sp_granddbaccess 可用 来创 建新 数 据 库 用 户 。
sp_grantdbaccess语 法格式 为,
sp_grantdbaccess [@loginame =]'login' [[@name_in_db=]'name_in_db'[OUTPUT]]
参数说 明:
[@loginame =] 'login',SQL Server 登 录账户 名。 Windows NT/Server 组 和用 户 名必 须 用
Windows NT/ Server域名限定,格式 为 "域 \用 户 ",如 LONDON\Joeb。登 录 不能使用 数 据库 中已有的 帐户 作 为别 名,没 有默 认值 。
[@name_in_db =] ‘name_in_db’ [OUTPUT],数 据 库 中 帐户 的名 称 。 该数 据 库 用 户账号并 不已存在于 当 前 数 据 库 中。
注,如果不 给 出 该参数值则 SQL Server 把登 录 名作 为 默 认 的缺省用 户 名 称 。
【 例 12-10】 将 Windows NT/Server用 户,YU2004\XXGL”创 建成 为当 前信息管理 数据 库 用 户,名 为,XXGL。
USE 信息管理
GO
exec sp_grantdbaccess 'YU2004\XXGL ','XXGL'
【 例 12-11】 创 建一 个 名 为,计 算机,,密 码为,jsj200406”,默 认数 据 库为,电 子商 务,的登 录账户 。然后 将 其 创 建成 为当 前 电 子商 务数 据 库 用 户,名 为,电 子商 务 。
EXEC sp_addlogin '计 算机 ',' jsj200406','电 子商 务 '
USE 电 子商 务
go
exec sp_grantdbaccess '计 算机 ','电 子商 务 '
go
(2)删 除 数 据 库 用 户 。
存 储过 程 sp_revokedbaccess 用 来将数 据 库 用 户从当 前 数 据 库 中 删 除,使其相匹配的登 录 者无法使用 该数 据 库 。
sp_revokedbaccess 的 语 法格式 为,
sp_revokedbaccess [@name_in_db =] 'name'
[@name_in_db =] ‘name’:是要 删 除的 数 据 库 用 户 名,必 须 存在于 当 前 数 据 库 中。 当 指定
Windows NT 用 户 或 组时,请 指定 该 Windows NT 用 户 或 组 在 数 据 库 中可被 识别 的名 称 (即用
sp_grantdbaccess 添加的名 称 )。返回代 码值 0(成功)或 1(失 败 )。
【 例 12-12】 删 除信息管理 数 据 库 用 户,XXGL 与 Corporate\GeorgeW。
USE 信息管理
go
exec sp_revokedbaccess 'XXGL'
go
exec sp_revokedbaccess 'Corporate\GeorgeW'
go
注,正如我 们 不能 删 除有 数 据 库 用 户与 之相匹配的登 录账号 一 样,若被 删 除的 数 据 库 用 户,在当 前 数 据 库 中 拥 有任一 对 象(如表,视图,存 储过 程),将 无法用 该 系 统过 程把 它从数 据 库 中 删除,只有在 删 除其所 拥 有的 对 象后才可 将数 据 库 用 户删 除。另外一 种 解 决办 法是使用
sp_changeobjectowner 改 变对 象的所有者,这样 也可以被允 许删 除 数 据 库 用 户 。
( 3) 查 看 数 据 库 用 户 信息。
存 储过 程 sp_helpuser 被用 来显 示 当 前 数 据 库 的指定用 户 信息。
sp_helpuser语 法格式 为,
sp_helpuser [[@name_in_db =] 'security_account']
[@name_in_db =] ‘security_account’,当 前 数 据 库 中 SQL Server 用 户,Windows NT 用 户 或数 据 库 角色的名 称 。 security_account 必 须 存在于 当 前的 数 据 库 中。
【 例 12-13】 显 示信息管理 数 据 库 用 户 信息,并 不指出 参数则显 示所有用 户 信息。
EXEC sp_helpuser '信息管理 '
go
输 出 结 果信息 为,
UserName GroupName LoginName DefDBName UserID SID
-----------------------------------------------------
信息管理 public 信息管理 信息管理 5 0x0916
exec sp_helpuser
go
输 出 结 果信息 为,
UserName GroupName LoginName DefDBName UserID SUserID
-----------------------------------------------------
dbo db_owner sa master 1 0x01
guest public NULL NULL 2 0x02
信息管理 public 信息管理 信息管理 5 0x0916
12-4 角色
12-4-1 固定服务器角色
12-412-4-3 用户自定义角色
12-4-3 用户自定义角色
12-4 角色定 义,角色 ( Role) 是 SQL Server 2000引进的,一种用来 集中管理服务器或数据库的理念,不同的角色,具有不同的 权限 ( 类同于生活在的官爵 ) 。 角色是将数据库中的不同用户集中到不同的单元中去,从而以单元为单位进行权限管理 。 角色和权限两者之间的关系类似于 Windows 2000 Server中的用户组和用户的关系,是为了方便权限管理而设置的管理单位 。
角色建立后,对一个角色授予、修改或删除权限,其中的成员则均被授予、修改或删除权限。这样对于一个类似功能的用户群体就不需要分别管理每个用户,而只需要对角色进行管理,设置 就可以达到管理目的,一个用户可以属于不同的角色,这样不同的分类管理将更加方便。 在 SQL Server 2000中主要有两种类型的角色:其一是服务器级的固定服务器角色,其二为数据库级的固定数据库角色。
1.固定服 务 器角色固定服 务 器角色是 SQL Server 2000在安装 时 就 预 定 义创 建的,是用于分配服 务 器 级 的管理 权 限的实 体,其适用在服 务 器范 围内,权 限不能被修改,它 是指根据 SQL Server 的管理任 务 及 这 些任 务 的相 对 重要性分成若干等 级,并 通 过纳 取成 员设 置方式把具有 SQL Server 管理 职 能的用 户划 分成不同的用 户 及 组账户 (包括登 录账户 和 数 据 库 用 户 ),同 时赋 予相 应 的 权 限。各 种 固定服 务 器角色的具体含 义 及 权 限范 围 如表 12-2所示。
2.管理固定服 务 器角色通常可以利用企 业 管理器和 Transact_SQL下系 统 存 储过 程 语 句 来 管理固定服 务 器角色。
1)使用企 业 管理器管理固定服 务 器角色使用企 业 管理器可以完成 查 看、增加,删 除服 务 器角色成 员 等功能。
使用企 业 管理器管理服 务 器角色的步 骤 如下:
( 1)首先,可 查 看固定服 务 器角色及其成 员 和 权 限。
启动 企 业 管理器,登 录 到指定的服 务 器,单击 安全 节 点下的服 务 器角色 图标 。 【 服 务 器 角色 】 对话 框,从 中可以查 看固定服 务 器角色的具体含 义 及 权 限范 围 。
12-4-1 固定服 务 器角色角 色 名 称 权 限 描 述
Sysadmin(系统管理员 ) 可以在 SQL Server 中做任何操作,权限覆盖其他服务器角色 。
serveradmin(服务器管理员 ) 可以管理 SQL Server 服务器范围内的配置,关闭服务器 。
setupadmin(设置管理员 ) 可以增加,删除与连接服务器,并执行某些系统扩展存储过程 。
securityadmin(安全管理员 ) 可以管理登录,创建数据库权限,更改密码与读取错误日志等 。
processadmin(进程管理员 ) 可以管理在 SQL Server 中运行的进程 。
dbcreator(数据库创建者 ) 可以创建数据库,并对数据库进行修改与删除 。
diskadmin(磁盘管理员 ) 可以管理磁盘文件 。
右 击 某 个 固定服 务 器角色( SysAdmin),在 弹 出的快捷菜 单 中 选择 【 属 性 】 命令 项,弹 出 【 服 务 器角色属 性 】 对话 框,在 该对话 框中,可以 查 看 该 角色所包含的成 员 (如信息管理用 户 )。
单击 【 权 限 】 标签,弹 出如 图 12-18所示的 【 浏览 服 务 器角色 SysAdmin的操作 权 限 对话 框 】 对话 框,在 该对话 框中,可以 浏览当 前固定服 务 器角色( SysAdmin)操作 权 限涵盖的具体操作 内 容。
( 2)其次,可增加服 务 器角色成 员 。
对话 框中,单击 【 添加 】 按 钮,弹 出如 图 12-19所示的 【 添加服 务 器角色成 员 】 对话 框,在 该对话 框中可以添加更多的登 录账户 。添加服 务 器角色成 员 。 浏览 服 务 器角色 SysAdmin的操作 权 限 对话 框 。
( 3)再 则,尚 可 删 除服 务 器角色成 员 等。
在 对话 框中,右 击 某 个 固定服 务 器角色成 员 (信息管理),在 弹 出的快捷菜 单 中 选择 【 删 除 】 命令 项,即删 除了信息管理 这个 固定服 务 器角色成 员,也就是 断开 了 该 登 录账户与 固定服 务 器角色 间 的映射 关 系。
2)使用存 储过 程管理服 务 器角色在 SQL Server 2000中管理服 务 器角色的存 储过 程主要有,sp_addsrvrolemember(添加服 务 器角色成员 ),sp_dropsrvrrolemember( 删 除服 务 器角色成 员 )和 sp_helpsrvrolemember( 显 示服 务 器角色成 员信息)等 。
( 1) sp_addsrvrolemember 是 将 某一登 录 加入到服 务 器角色 内 使其成 为该 角色的成 员 。
sp_addsrvrolemember其 语 法格式 为,
sp_addsrvrolemember [@loginame =] 'login' [@rolename =] 'role'
参数说 明:
[@loginame =] 'login',为 登 录账户 等的名 称 。
[@rolename =] 'role':如前所述的服 务 器角色。
【 例 12-14】 首先 将 登 录账户,信息管理,加入到 sysadmin 角色中,其次 将 Windows 2000 Server用 户
Corporate\HelenS 添加到 serveradmin 固定服 务 器角色中。
exec sp_addsrvrolemember '信息管理 ','sysadmin '
go
exec sp_addsrvrolemember 'Corporate\HelenS','serveradmin '
go
( 2) sp_dropsrvrrolemember 用 来将 某一登 录账户从 某一服 务 器角色中 删 除。 当该 成 员从 服 务 器角色中被删 除后,便不再具有 该 服 务 器角色所 设 置的 权 限了。
sp_dropsrvrrolemember语 法格式 为,
sp_dropsrvrolemember [@loginame =] 'login' [@rolename =] 'role'
其中 参数 含 义与 sp_addsrvrolemember 的介 绍 相同。
1.固定 数 据 库 角色在 SQL Server 2000中的 数 据 库 角色是定 义 在 数 据 库级 上的,借助于 数 据 库 角色,可 对数 据 库用 户 的 权 限 进 行有效管理。 SQL Server 提供了 两种类 型的 数 据 库 角色:固定 数数 据 库 角色和用 户 自定 义 的 数 据 库 角色。
固定 数 据 库 角色是指在 SQL Server安装 时 定 义 的所有具有管理 访问数 据 库权 限的角色,可提供最基本的 数 据 库权 限的 设 置管理,并 且 SQL Server 管理者不能 对 其所具有的 权 限 进 行任何修改。固定 数 据 库 角能 为 某一用 户 或一 组 用 户 授予不同 级别 的 访问,管理 数 据 库 或 数 据 库对 象的 权 限,这 些 权 限是 数 据 库专 有的,而且 还 可以使一 个 用 户 具有 属 于同一 数 据 库 的多 个 角色,
因而其功能也 将 更加丰富,更易于 综 合管理。
各 种 固定 数 据 库 角色的具体含 义 及 权 限范 围 如表 12-3所示。
2,特殊 数 据 库 角色 public
SQL Server 2000下的每 个数 据 库 中,都有一 个 特殊的 数 据 库 角色,public角色,每 个数 据 库用 户 都 属 于 它 。 该 角色具有如下特点:
( 1) 捕 获数 据 库 中用 户 的所有默 认权 限 。
( 2) 无法 将 用 户,组 或角色指派 给它,因 为 默 认 情 况 下 它们 即 属 于 该 角色 。
( 3) 该 角色融含在每 个数 据 库 中,包括 master,msdb,tempdb,model 和所有用 户数 据 库 。
( 4) 该 角色无法 删 除 。
3,管理固定 数 据 库 角色通常可以利用企 业 管理器和 Transact_SQL下系 统 存 储过 程 语 句 来 管理固定 数 据 库 角色。
1)使用企 业 管理器管理固定 数 据 库 角色。
使用企 业 管理器可以完成 查 看固定 数 据 库 角色的 权 限、增加 与删 除固定 数 据 库 角色成 员 等功能。
12-4-2 固定 数 据 库 角色使用企 业 管理器管理固定 数 据 库 角色的步 骤 如下:
1 启动 SQL Server 企 业 管理器,登 录 到指定的服 务 器,展 开该 服 务 器下指定 数 据 库节 点,并选中 【 角色 】 图标 。
在右窗格中,右 击 用 户 所要加入的角色,在 弹 出的快捷菜 单 中 选择 【 属 性 】 命令,弹 出 【 数 据 库 角色属 性 】 对话 框,其中 显 示了 该数 据 库 角色下所有成 员 。
在 【 数 据 库 角色 属 性 】 对话 框中,可以 进 行增加 与删 除固定 数 据 库 角色成 员 。若要添加成 员,单击 "
添加 "按 钮,从弹 出的 对话 框中 将 所 选 取的一 个 或多 个 用 户 (登 录图 12-21 查 看,浏览数 据 库 角色 权限 对话 框 账户 )添加到 该数 据 库 角色中,成 为该数 据 库 角色的一 个 成 员 。
1 若要 删 除成 员,则 在 【 数 据 库 角色 属 性 】 对话 框的用 户 中,选择该 成 员,单击 "删 除 "按 钮 即可。
若要 浏览该数 据 库 角色的 权 限,则 在 【 数 据 库 角色 属 性 】 对话 框中,单击 "权 限 ",1 弹 出如 图
12-21所示的 【 数 据 库 角色 权 限 】 对话 框,其中 显 示了 该数 据 库 角色所具有的相 关权 限。
1 在 图 12-21中,单击 "确定 ",返回 图 12-20,并 再度 单击 "确定 "按 钮,完成固定 数 据 库 角色的管理。
2)使用存 储过 程管理固定 数 据 库 角色成 员 。
在 SQL Server中管理管理固定 数 据 库 角色成 员 的存 储过 程主要有,s_addrolemember(添加 数 据 库角色成 员 ),sp_droprolemember( 删 除 数 据 库 角色成 员 )和 sp_helprolemember( 显 示 当 前 数 据库 所有角色的成 员 )。
角 色 名 称 权 限 描 述
db_owner 可以执行所有数据库角色的活动,该角色包含其他各角色的所有权限 。
db_accessadmin 可以增加或删除 Windows 用户或组登录者及 SQL Server 用户 。
db_datareader 能对数据库中任何表执行 SELECT 操作,从而读取所有表的信息 。
db_datawriter 能对库中表执行 INSERT.UPDATE.DELETE操作,但 SELECT操作则不能 。
db_ddladmin 可以新建,删除,修改数据库中任何对象 。
db_securityadmin 可 以管理数据库角色的角色和成员,并管理数据库中语句和对象权限 。
db_backupoperator 可以备份数据库 。
db_denydatareader 不能查看数据库中的数据 。
db_denydatawriter 不允许更改数据库中的数据
( 1) sp_addrolemember 用 来 向 数 据 库 添加某一角色(可以是固定 数 据 库 角色,也可以是用 户 自定 义 的角色)成 员,但不能是 应 用角色。
固定 数 据 库 角色其 语 法格式 为,
sp_addrolemember [@rolename =] 'role',[@membername =]
'security_account'
参数 含 义说 明如下,
[@rolename =] 'role':指 数 据 库 角色。
[@membername =] 'security_account',添加到 SQL Server角色的成 员
(即安全 帐户,指 SQL Server 的用 户 或 NT 用 户 或用 户组 )。
【 例 12-17】 将 用 户,电 子商 务,加入到角色 db_owner中去。
Exec sp_addrolemember ’db_owner’,‘电 子商 务 ’
( 2) sp_droprolemember 是用 来删 除某一 数 据 库 角色的成 员 。
sp_droprolemember语 法格式 为
sp_droprolemember [@rolename =] 'role',[@membername =]
'security_account'
注:其中各 参数 的含 义参 看 sp_addrolemember 存 储过 程。
( 3) sp_helprolemember 用 来显 示某一 数 据 库 角色的所有成 员 。
sp_helprolemember语 法格式 为,
sp_helprolemember [ [ @rolename = ] 'role' ]
注:如未指明角色名 称,则显 示 当 前 数 据 库 所有角色的成 员 。
【 例 12-18】 显 示 pubs 数 据 库 中所有角色的成 员,并将 用 户,电 子商 务,从 角色
db_owner中 删 除。
use pubs
sp_helprolemember
go
输 出 结 果 为,
DbRole MemberName MemberSID
----------------------------------------------------------------
db_owner dbo 0x01
db_owner 信息管理 0x2188373E9B5CD411950630064AC10000
db_accessadmin guest 0x00
db_ddladmin 电 子商 务 0x2188373E9B5CD411950630064AC10000
(所影 响 的行 数为 4 行)
Exec sp_addrolemember ’db_owner’,‘电 子商 务 ’
go
1.用 户 自定 义数 据 库 角色在 SQL Server 2000中除了系 统预 定 义 的固定 数 据 库 角色之外,当 人 们 打算 为 某些 数 据库 用 户设 置某 种权 限,但是此 类权 限又不等同于 预 定 义 的固定 数 据 库 角色的 权 限 时,
用 户尚 可在 数 据 库 中 创 建新的自定 义 的 数 据 库 角色,以 满 足、完善 数 据 库 管理的需求和 发 展。用 户 自定 义 的 数 据 库 角色具有以下几 个优 点:
在同一 数 据 库 中用 户 可以具有多 个 不同的、自由 组 合的自定 义 角色。
SQL Server 数 据 库 角色可以包含 NT 用 户组 或用 户 。
角色可以 进 行嵌套 从 而在 数 据 库实现 不同 级别 的安全性。
2.管理自定 义数 据 库 角色通常,可以使用企 业 管理器和 Transact_SQL下系 统 存 储过 程 语 句 两种 方法 来 管理自定义数 据 库 角色。
1)使用企 业 管理器管理自定 义数 据 库 角色使用企 业 管理器可以完成自定 义数 据 库 角色的 创 建,删 除 与 授 权 等功能。
12-4-3 用 户 自定 义 角色使用 企业管理器管理 自定义数据库角色的步骤如下:
启动 SQL Server 企业管理器,登录到指定的服务器,展开该服务器下数据库节点中的指定数据库节点。
若 要进行自定义数据库角色(固定数据库角色用户不能删除)的 删除操作,点击 【 角色
【 图标,弹出如图 12-22所示的 【 数据库角色浏览 】 对话框,在该窗格的右侧右击要删除的角色,在弹出的快捷菜单中选择 【 删除 】 命令,即可删除该角色 。
若要进行自定义数据库角色的 添加操作,右击 【 角色 】 图标,在弹出的快捷菜单中选择
【 新建数据库角色 】 命令,弹出如图 12-23所示的 【 创建数据库角色 】 对话 框。
1在 【 创建数据库角色 】 对话框的 名称框中输入该数据库角色的名称,也可以在 【 数据库角色类型 】 选项栏中选择数据库角色类型:标准角色或应用程序角色,若选择标准角色,可单击 【 添加 】 按钮,将数据库用户增加到新建的数据库角色当中;若选择了应用程序角色,则在密码框中输入口令。
单击 【 确定 】 按钮,完成 自定义 2)使用存储过程管理自定义数据库角色在 SQL Server中管理自定义数据库角色的存储过程主要有:在 SQL Server 中支持 数据库角色管理的存储过程有 sp_addrole(创建数据库角色),sp_droprole(删除数据库角色)、
sp_addapprole(添加应用程序数据库角色),sp_dropapprole(删除应用程序数据库角色)
和 sp_helprole(返回当前数据库中角色信息)。
( 1) sp_addrole用来创建新数据库角色。
sp_addrole语法格式为:
sp_addrole [@rolename=]'role' [,[@ownername=]'owner']
参数说明:
[@rolename=]'role':要创建的数据库角色名称。
[@ownername=]'owner':新数据库角色的所有者,在缺省情况下是 dbo。
数据库角色的创建。
【 例 12-19】 在 学 生 数 据 库 中建立新的 数 据 库 角色 yyc和 Managers。
Use 学 生
Go
EXEC sp_addrole 'yyc'
EXEC sp_addrole 'Managers'
注,若建立 应 用角色可使用系 统过 程 sp_addapprole,其 语 法格式 与 sp_addrole 相同。
( 2) sp_droprole 用 来删 除 数 据 库 中某一自定 义 的 数 据 库 角色。
sp_droprole语 法格式 为,
sp_droprole [@rolename =] 'role'
其中,[@rolename =] 'role为 自定 义 的 数 据 库 角色名 称 。
注:如果 该数 据 库 角色中 还 有成 员 或仍 拥 有 数 据 库对 象 则 无法 删 除 该 角色,必 须 首先 删 除其中的成 员 或 数 据 库对 象。
【 例 12-20】 删 除 学 生 数 据 库 中所建的 yyc和 Managers数 据 库 角色。
Use 学 生
Go
EXEC sp_droprole 'yyc'
EXEC sp_droprole 'Managers'
注 注,若要 删 除 应 用角色可使用系 统过 程 sp_dropapprole,语 法格式 sp_droprole 相同。
( 3) sp_helprole用 来显 示 当 前 数 据 库 中所有 数 据 库 角色的信息。
sp_helprole语 法格式 为,
sp_helprole [[@rolename =] 'role']
其中,@rolename =] ‘ role’ 为数 据 库 角色(包括 预 定 义 的 数 据 库 角色)。
图 12-24 sp_helprole运 行 结 果 对话 框
[例 12-21】 显示信息管理数据库的所有数据库角色信息,输出结果信息如图 12-24所示 。
sp_helprole语法格式为:
sp_helprole [[@rolename =]
'role']
其中,@rolename =] 'role'为数据库角色(包括预定义的数据库角色)。
Use 信息管理
Go
EXEC sp_helprole
12-5 权 限
12-5-1 权 限 类 型
12-5-2 基于企 业 管理器管理 权 限
12-5-3 使用 Transact_SQL语 句管理 权 限定 义,在 SQL Server2000中 权 限分 为对 象 权 限( Object Permission,用于 处 理 数 据和 执 行 过程),语 句 权 限( Statement Permission,用于 创 建 数 据 库 或 数 据 库 中的 对 象)和 隐 含 权 限
( Implied Permission,用于授相 关 角色的 权 限)。
1,对 象 权 限对 象 权 限用于 决 定用 户对数 据 库对 象 进 行 数 据 处 理和 执 行存 储过 程等的操作 权 利,数 据 库对 象包括表,视图,存 储过 程等。 对 象 权 限的具体 内 容包括如下:
( 1) 应 用于表或 视图,是否允 许执 行 SELECT,INSERT,UPDATE 和 DELETE 语 句。
( 2) 应 用于表或 视图 的字段(列):是否允 许执 行 SELECT 和 UPDATE 语 句。
( 3) 应 用于存 储过 程和函 数,是否允 许执 行 EXECUTE 语 句。
2,语 句 权 限语 句 权 限用于 创 建 数 据 库 或 数 据 库 中 对 象(如表或存 储过 程)所涉及的操作 权 利,其适用于 语句自身,而不适用于 数 据 库 中定 义 的特定 对 象。
语 句 权 限尤指是否允 许执 行下列 语 句,CREATE DATABASE,CREATE DEFAULT、
CREATE FUNCTION,CREATE PROCEDURE,CREATE RULE,CREATE TABLE、
CREATE VIEW,BACKUP DATABASE,BACKUP LOG。
3,隐 含 权 限定义,隐 含 权 限系指系 统 定 义 而毋需授 权 就有的 权 限,相 当 于一 种内 置 权 限 。 其能由系 统预 定义 的固定成 员 或 数 据 库对 象所有者 执 行的活 动 。 包括固定服 务 器角色成 员,固定 数 据 库 角色成员 和 数 据 库对 象所有者所 拥 有的 权 限 。
固定服 务 器角色 拥 有一定的 权 限,如 sysadmin 固定服 务 器角色成 员拥 有在 SQL Server中 进 行任何操作或 查 看的全部 权 限 。 数 据 库对 象所有者 还 有 隐 含 权 限,可以 对 所 拥 有的 对 象 执 行一切活 动 。 例如,拥 有表的用 户 可以 查 看,添加或 删 除 数 据,更改表定 义,或控制允 许 其他用 户对表 进 行操作的 权 限 。
12-5-1 权 限 类 型如上所述,在三 种权 限中,隐 含 权 限是系 统 定 义 的,是不能 进 行 设 置修改的,因而 权 限的 设置管理 实际 上是就 对 象 权 限和 语 句 权 限而 进 行的,权 限可由 数 据 库 所有者和角色 来进 行管理。 权 限所涉及的操作包含:
授予( GRANT,?):允 许 用 户 或角色 对 一 个对 象 实 施某 种 操作或 执 行某 种语 句。
撤消( REVOKE,?):不允 许 用 户 或角色 对 一 个对 象 实 施某 种 操作或 执 行某 种语 句,或收回曾经 授予的某 种权 限,这与 授予 权 限正好相反。
拒 绝 ( DENY,?):拒 绝 用 户访问 某 个对 象,或 删 除以前授予的 权 限,停用 从 其 它 角色 继 承的 权限,确保不 继 承更高 级别 的角色等的 权 限。
1.管理 语 句 权 限使用企 业 管理器管理 语 句 权 限的步 骤 如下:
( 1) 启动 SQL Server 企 业 管理器,登 录 到指定的服 务 器,展 开该 服 务 器下 数 据 库节 点。
( 2)右 击将 欲被授予 语 句 权 限的用 户 所在的特定 数 据 库 (此 处为 信息管理 数 据 库 ),在 弹 出的快捷菜 单 中 选择 【 属 性 】 命令,弹 出 【 信息管理 属 性 】 对话 框。
( 3)在 该对话 框中点 击 【 权 限 】 选项 卡,弹 出如 图 12-25所示的 【 信息管理 数 据 库语 句 权 限 设置 】 对话 框。用 户 可在 诸 多 语 句 权 限(如表 12-4所示)中 选择 授予指定用 户 (信息管理)。
注,图 12-25所示的 对话 框中可供 选择 的操作如下:
1若要授予用 户 某 个语 句操作 权 限,请 在列表中 单击 相 应 方框使起出 现?标记 。
1若要撤消用 户 某 个语 句操作 权 限,请 在列表中 单击 相 应 方框使起出 现?标记 。
1若要拒 绝 用 户 某 个语 句操作 权 限,请 在列表中 单击 相 应 方框使起出 现?标记 。
( 4)点 击 【 确定 】 按 钮,完成 语 句 权 限的 设 置操作。
2.管理对象权限管理对象权限主要包括表,视图,存储过程,用户和角色等对象权限的设置管理,由于它们的操作十分类同,因而在此就融为一体加以描述 。
使用企业管理器管理对象权限的步骤如下:
( 1) 启动 SQL Server 企业管理器,登录到指定的服务器,展开该服务器下数据库节点 。
( 2)点击展开指定数据库(如信息管理),右击 【 用户或角色 】,在弹出的快捷菜单中选择 【 属性 】 命令,弹出 【 属性 】 对话框。
( 3)在该对话框中点击 【 权限 】 选项卡,弹出如图 12-26所示的 【 信息管理数据库对象权限设置 】
对话框。用户可以在此为用户或角色选择权限、设置操作。
( 4)点击 【 确定 】 按钮,便可完成对象权限的设置操作。
12-5-2 基于企 业 管理器管理 权限管理权限在 SQL Server 2000的 Transact-SQL
中,系 统 主要使用 GRANT,REVOKE
和 DENY三 种语 句 来 管理 权 限。
1.授予 权 限
( 1)功能:用 来 把 权 限授予某一用 户 以允 许该 用 户执 行 针对该对 象的操作。
( 2) GRANT语 法格式。
授予 对 象 权 限的 语 法格式如下:
GRANT
{ ALL [ PRIVILEGES ] | permission
[,..n ] }
{
[column [,..n ] ] ON { table |
view }| ON { table | view } [ column
[,..n ] ]
| ON { stored_procedure |
extended_procedure }| ON
{ user_defined_function }
}
TO security_account [,..n ] [ WITH
GRANT OPTION ] [ AS { group |
role } ]
授予 语 句 权 限的 语 法格式如下:
GRANT {ALL | statement[,..n]}
TO security_account[,..n]
( 3) 参数说 明
ALL:表示具有所有的 语 句或 对 象 权 限。 对 于 语 句 权 限来说 只有 sysadmin 角色才具有所有的 语 句 权 限; 对 于 对 象 权限 来说 只有 sysadmin 和 db_owner 角色才具有 访问 某一 数 据库 所有 对 象的 权 限。 TO:指定安全 帐户 列表。
statement:表示用 户 具有使用 该语 句的 权 限。 这 些 语 句包括 CREATE DATABASE,CREATE DEFAULT、
CREATE PROCEDURE,CREATE RULE,CREATE
TABLE,CREATE VIEW,BACKUP DATABASE、
BACKUP LOG。
security_account:是 权 限 将应 用的安全 帐户 。
PRIVILEGES:可以包含在符合 SQL-92 标 准的 语 句中的可 选关键 字。
Permission,当 前授予的 对 象 权 限。表、表 值 函 数 或 视图 上授予 对 象 权 限 时,权 限列表可包括 SELECT,INSERT、
DELETE,REFENENCES 或 UPDATE。
Column,当 前 数 据 库 中授予 权 限的列名。 Table,当 前数 据 库 中授予 权 限的表名。
View,当 前 数 据 库 中被授予 权 限的 视图 名。
stored_procedure,当 前 数 据 库 中授予 权 限的存 储过 程名。
extended_procedure:是 当 前 数 据 库 中授予 权 限的 扩 展存 储过 程名。
user_defined_function:是 当 前 数 据 库 中授予 权 限的用户 定 义 函 数 名。
WITH GRANT OPTION,该权 限授予者可向其 它 用 户授予 访问数 据 对 象的 权 限。
AS {group | role}:授予 权 限的用 户从 什 么 角色或何 处继 承 权 限。
12-5-3 使用 Transact_SQL语 句
【 例 12-22】 给 用 户,信息管理 与电 子商 务 及 Windows NT 组 YU2000\JSJ授予 创 建数 据 库 和表的 语 句 权 限。
GRANT CREATE DATABASE,CREATE TABLE
TO信息管理,电 子商 务,[YU2000\JSJ]
【 例 12-23】 给 public 角色授予 SELECT 权 限,并将 INSERT,UPDATE,DELETE
权 限授予用 户 Mary,John 和 Tom,使 这 些用 户 附有 对 数 据 库,信息管理,下,学 生,表的相 应对 象 权 限,且 它们 也 随 之具有向其 它 用 户 授予 访问数 据 对 象的 权 限。
USE 信息管理
GO
GRANT SELECT
ON 学 生 TO public with grant option
GO
GRANT INSERT,UPDATE,DELETE
ON学 生 TO Mary,John,Tom with grant option
GO
注,权 限只能授予本 数 据 库 的用 户 或 获 准 访问 本 数 据 库 的他 库 用 户 。
1若 将权 限授予了 public角色,则 所有 数 据 库 用 户 都默 认获 取了 该权 限。
1若 将权 限授予了 guest用 户,则该 服 务 器上的 连 接用 户 都默 认获 取了 该权 限 。
2.撤消 权 限
( 1)功能,撤消以前在 当 前 数 据 库内 的用 户 上所授予或拒 绝 的 权 限;或不允 许该 用 户执行 针对数 据 库对 象的某些操作,如 UPDATE,SELECT,DELETE,EXECUTE ;或不允 许 其 运 行某些 语 句,如 CREATE TABLE,REATE DATABASE等。
( 2) REVOKE语 法格式
授予 对 象 权 限的 语 法格式如下:
REVOKE [ GRANT OPTION FOR ]
{ ALL [ PRIVILEGES ] | permission [,...n ] }
{ [ ( column [,...n ] ) ] ON { table | view } | ON { table | view } [ ( column [,...n ] ) ]
| ON { stored_procedure | extended_procedure } | ON { user_defined_function }
}
{ TO | FROM } security_account [,...n ] [ CASCADE ] [ AS { group | role } ]
授予 语 句 权 限的 语 法格式如下:
REVOKE { ALL | statement [,...n ] } FROM security_account [,...n ]
图 12-10 分配 数 据库 访问权 限 对话 框授予 对 象 权 限的 语 法格式如下:
DENY
{ ALL [ PRIVILEGES ] | permission [,...n ] }
{ [ ( column [,...n ] ) ] ON { table | view } | ON { table | view } [ ( column [,...n ] ) ]
| ON { stored_procedure | extended_procedure } | ON { user_defined_function }
}
TO security_account [,...n ] [ CASCADE ]
授予 语 句 权 限的 语 法格式如下:
DENY { ALL | statement [,...n ] } TO security_account [,...n ]
( 3) 参数说 明,DENY语 句 参数与 GRANT,REVOKE完全一致,在此就不再 赘 述了。
【 例 12-25】 给 public角色授予 SELECT权 限。然后,拒 绝销 售,会计 和人事用 户的 SELECT,INSERT,UPDATE,DELETE权 限。使 这 些用 户 不具有,信息管理,数 据 库 下
“学 生,表的相 应对 象 权 限。
USE 信息管理
GRANT SELECT ON 学 生 TO public
GO
DENY SELECT,INSERT,UPDATE,DELETE ON 学 生 TO 销 售,会计,人事
GO
( 3) 参数说 明
CASCADE,应 用于在授予 权 限 时 使用了 WITH GRANT OPTION选项 的 状况 下。若 该 用户 所被授予的 权 限又 将 授予其他用 户,则 使用 CASCADE关键 字 将 撤消所有的已授 权 限。
REVOKE的其他 参数与 GRANT的 参数 相同。
【 例 12-24】 撤消例 12-22中所授予信息管理 与电 子商 务 及 Windows NT 组 YU2000\JSJ创建 数 据 库 和表的 语 句 权 限。
REVOKE CREATE TABLE,CREATE DATABASE
FROM 信息管理,电 子商 务,[YU2000\JSJ]
拒 绝权 限
( 1)功能:用 来 禁止用 户对 某一 对 象或 语 句的 权 限,明确禁止其 对 某一用 户对 象 执 行某些操作,
如 UPDATE SELECT DELETE EXECUTE; 或 运 行某些 语 句,如 CREATE TABLE
CREATE DATABASE等。
( 2) DENY语 法格式安全性管理 对 于一 个数 据 库 管理系 统 而言是至 关 重要的,是 数 据 库 管理中的 关键 的 环节,是 数据 库 中 数 据信息被合理 访问 和修改的基本保 证 。安全性系指允 许 那些具有相 应数 据 访问权 限的用 户 能 够 登 录 到 SQL Server 2000,访问数 据以及 对数 据 库对 象 实 施各 种权 限范 围内 的操作,并 拒 绝 所有的非授 权 用 户 的非法操作。
SQL Server 2000安全机制可分 为,操作系 统,SQL Server,数 据 库 和 数 据 库对 象的安全性四 个 等 级 。用 户 在使用 SQL Server时,需要 经过 身 份验证 和 权 限 认证两个 安全性 阶 段。
SQL Server2000提供了 权 限作 为访问许 可 设 置的最后一道 屏 障。 权 限系指用 户对数 据 库 中对 象的使用和操作 权 利,用 户 若要 进 行任何涉及更改 数 据 库 或 访问数 据 库 及 库 中 对 象的活 动,
则 必 须 首先要 获 得 拥 有者 赋 予的 权 限,也就是 说 用 户 可以 执 行的操作均由其被 赋 予的相 关权限 决 定。
SQL Server2000中安全 账户 有 两 大 类 型:其一是 创 建新的基于 SQL Server 2000的 账户 ;
其二 为从 Windows组 或者用 户 中 创 建或授 权 的安全 账户 。前者,基于混合身 份验证 模式:即
SQL Server验证 方式,必 须 有合法的 账号 和密 码 ;后者 实际 上是 将 Windows组 或者用 户 映射成 为 SQL Server 2000的登 录账户,并 通 过 授 权 等操作,实 施 对数 据 库 系 统 的管理。通常可以使用企 业 管理器和 Transact_SQL语 句 来 完成添加登 录账户 。在 SQL Server 2000中包含了具有特定 权 限和效用的三 种 特殊的 数 据 库 用 户,数 据 库 所有者( dbo),数 据 库对 象所有者和 guest。 数 据 库 用 户 用 来 指定 哪 些 户 用可以 访问哪 些 数 据 库 。
角色是 SQL Server 2000引 进 的、一 种 用 来 集中管理服 务 器或 数 据 库 的理念,不同的角色,
具有不同的 权 限( 类 同于生活在的官爵)。角色是 将数 据 库 中的不同用 户 集中到不同的 单 元中去,从 而以 单 元 为单 位 进 行 权 限管理。在 SQL Server 2000中主要有服 务 器 级 的固定服 务器角色和 数 据 库级 的 数 据 库 角色。
权 限系指用 户对数 据 库 中 对 象的使用和操作 权 利,用 户 若要 进 行任何涉及更改 数 据 库 或 访问数 据 库 及 库 中 对 象的活 动,则 必 须 首先要 获 得 拥 有者 赋 予的 权 限,也就是 说 用 户 可以 执 行的操作均由其被 赋 予的相 关权 限 决 定。 权 限分 为对 象 权 限,语 句 权 限和 隐 含 权 限。
12-6 本章小 结
1,何 谓 安全性?何 谓数 据的安全性?
2,简 述 SQL Server 2000安全性等 级 。
3,试问 用 户 在使用 SQL Server 2000时 需要 经历哪两个 安全性 阶 段? 简 述
SQL Server的身 份验证 模式。
4,简 述 SQL Server 2000权 限 认证 的作用。
5,简 述 SQL Server 2000中安全登 录账户 的 类 型和必 备 的 条 件。
6,试问 SQL Server 2000安装后系 统 有 哪 些 内 置登 录账户?
7,简 述添加登 录账户 的方法。 试 用 这 些方法 创 建一 个,电 子商 务,登 录账户 。
8,试将 WINDOWS用 户,PP2004\kjgl”设 定 为 SQL Server 登 录 者。
9,简 述 sp_password,sp_defaultdb,sp_defaultlanguage,sp_helplogins、
sp_revokelogin,sp_denylogin,sp_droplogin等系 统 存 储过 程 语 句的功能。
10,查询 登 录账户,财务 管理,的相 关 信息。
11,将 登 录账户,财务 管理,的密 码 由,god”改 为,good”,然后再由,good” 改 为
mygod,最 终 密 码 改 为,空,。
12,简 述 SQL Server 2000中包含了 哪 三 种 特殊的 数 据 库 用 户,简 述其作用。
13,何 谓数 据 库 用 户? 简 述其 创 建的方法和步 骤 。
14,何 谓 角色?在 SQL Server 2000中主要有 哪两种类 型的角色?
15,简 述常用固定服 务 器角色的 权 限。
16,简 述常用固定 数 据 库 角色的 权 限。
17,何 谓权 限? 简 述 SQL Server 2000中 权 限所涉及的方法,内 容和 类 型。
18,试 用 T-SQL语 句 创 建一 个 名 为,htgl”,密 码 是,99551039052”,默 认数 据库为,meg”的 帐户,而后 将该帐户设 置 为 固定服 务 器器角色,serveradmin”,并将 默 认数 据 库 改 为,网络 管理,,最后 删 除 该帐户 。
19,给 public 角色授予 SELECT 权 限,并将 UPDATE,DELETE权 限授予用 户
Tiger,Wolf 和 Horse,使 这 些用 户 附有 对数 据 库,Zoo”下,Animal”表的相 应对象 权 限。
20,删除数据库,Zoo” 中所建的 Tiger和 Horse数据库角色。
习题 十二