第12章 SQL Server的安全管理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2016年4月5日星期二 Page 4
4
12.1.2 SQL Server身份验证模式
SQL Server有两种安全验证机制:Windows验证 机制和SQL Server验证机制。由这两种验证机制 产生了两种SQL Server身份验证模式: Windows身份验证模式和混合验证模式。顾名思 义,Windows验证模式就是只使用Windows验 证机制的身份验证模式;而混合模式则是用户既 可以使用Windows验证机制也可以使用SQL Server验证机制。 注意:使用“Windows身份验证模式”的时候, SQL Server仅接受Windows系统中的帐户的登 录请求,这时如果用户使用SQL Server身份验证 的登录帐户请求,则会收到登录失败的信息。
2016年4月5日星期二 Page 14
12.3 数据库的安全性
• 一般情况下,用户登录SQL Server后,还 不具备访问数据库的条件,用户要访问数 据库,管理员还必须要访问的数据库中为 其映射一个数据库用户。数据库的安全性 主要是靠管理数据库用户帐号来控制的。
15
2016年4月5日星期二
Page 15
2016年4月5日星期二 Page 22
23
• 3.使用sp_addrole创建数据库角色 • 【例12.8】 使用系统存储过程sp_addrole, 在jxgl数据库中添加名为“role2”的数据库 角色。 • 运行如下命令。 USE jxgl GO EXECUTE sp_addrole 'role2' GO
21
2016年4月5日星期二
Page 21
22
• 1.使用SQL Βιβλιοθήκη Baiduerver Management Studio 创建数据库角色 • 在SQL Server Management Studio的 “对象资源管理器”中,依次展开到“数 据库”节点,选中要使用的数据库。 • 在目标数据库的安全性选项中,右击“角 色”,在弹出的快捷菜单中选择“新建” 命令,在级联菜单中选择“新建数据库角 色”命令,弹出“数据库角色-新建”对话 框
2016年4月5日星期二
Page 19
12.3.3 删除数据库用户
1.使用SQL Server Management Studio删除数 据库用户 2.使用sp_revokedbaccess删除数据库用户 • 【例12.7】 使用SQL语句删除用户“stu04”。 • 运行如下命令。 USE jxgl GO EXECUTE sp_revokedbaccess 'stu04' GO
7
2.使用SQL Server Management Studio创 建使用SQL Server身份验证的登录帐户
2016年4月5日星期二
Page 7
8
3.使用SQL语句创建两种登录帐户 • 基本语法格式如下。 EXECUTE sp_addlogin '登录名', '登录密码', '默认 数据库', '默认语言‘ • 【例12.1】 创建一个名为“stu04”,使用SQL Server身份验证的登录帐户,其密码为“stu04”, 默认数据库为jxgl,使用系统默认语言。 • 运行如下命令。 • EXECUTE sp_addlogin 'stu04','stu04',‘jxgl'
Page 13
14
• 【例12.4】 使用SQL语句,为Windows身份验 证的登录帐户“JSJ\test”和SQL Server身份验 证的登录帐户“stu04”指定磁盘管理员的服务器 角色diskadmin。完成后再取消该角色。其中 “6E137BC21534459”为计算机名,针对不同机
器会有所不同。
4.使用SQL语句删除登录帐户
• 系统存储过程sp_droplogin用于删除一个SQL Server身 份验证的登录帐户,其语法格式如下。 • EXECUTE sp_droplogin '登录名' • 系统存储过程sp_revokelogin用于删除Windows身份验 证的登录帐户,其语法格式如下。 • EXECUTE sp_revokelogin '登录名' • 【例12.3】 使用SQL语句删除Windows身份验证的登录 帐户“JSJ\test”和SQL Server身份验证的登录帐户 “stu04”。 • EXECUTE sp_droplogin 'stu04' • EXECUTE sp_revokelogin 'JSJ\test'
2016年4月5日星期二
5
Page 5
12.2 服务器的安全性
12.2.1 创建和修改登录帐户 • 1.使用SQL Server Management Studio 创建使用Windows身份验证的登录帐户
6
注意:在“登录名”文本框中,如果填写的名称在系统 帐户组或帐户中找不到,则显示出错信息。 2016年4月5日星期二 Page 6
12.2.2 禁止或删除登录帐户
• 禁止用户是暂时停止用户的使用权利,需要时可 以恢复;而删除用户则是彻底地将用户从服务器 中移除,是不能恢复的。禁止或删除用户均可以 采用图形界面方式或命令方式来完成。 1.使用SQL Server Management Studio禁止登 录帐户
10
2016年4月5日星期二
2016年4月5日星期二 Page 23
24
• 4.使用sp_droprole删除数据库角色 • 【例12.9】 使用系统存储过程sp_droprole,在jxgl数据 库中删除名为“role2”的数据库角色。 • 运行如下命令。 USE jxgl GO EXECUTE sp_droprole 'role2' GO • 注意:在删除角色时,如果角色中有成员,则会产生删除 失败的错误,为保证操作的成功运行,首先要删除角色中 的所有成员。
2016年4月5日星期二 Page 17
17
12.3.2 修改数据库用户
18
2016年4月5日星期二
Page 18
19
• 【例12.6】 使用SQL语句,为数据库用户test指定固定的 数据库角色db_ accessadmin。完成后再取消该角色。 • 运行如下命令。 USE jxgl GO EXECUTE sp_addrolemember 'db_accessadmin', 'test' GO EXECUTE sp_droprolemember 'db_accessadmin', 'test' GO
Page 10
11
2.使用SQL Server Management Studio删除登录帐户 • 在SQL Server Management Studio的“对象资源管理器” 窗格中,展开服务器节点,在目标服务器下,展开“安全 性”节点,单击“登录”按钮。 • 右击要删除的登录帐户,在弹出的快捷菜单中选择“删除” 命令或直接按Delete键。 3.使用SQL语句禁止Windows身份验证的登录帐户 • 语法格式如下。 • EXECUTE sp_denylogin '登录帐户' • 注意:该存储过程只能用于禁止Windows身份验证的登 录帐户,而不能用于禁止SQL Server身份验证的登录帐 户。 • 【例12.2】 使用SQL语句,禁止Windows身份验证的登 录帐户JSJ\test。 • 运行如下命令。 • EXECUTE sp_denylogin 'JSJ\test' 2016年4月5日星期二 Page 11
2016年4月5日星期二
Page 2
12.1 SQL Server的安全模型
3
• SQL Server的安全模型分为3层结构,分别为服务器安全 管理、数据库安全管理和数据库对象的访问权限管理。 • 服务器安全管理实现对SQL Server服务器实例的登录帐 户、服务器配置、设备、进程等方面的管理,这部分工作 通过固定的服务器角色来分工和控制。数据库安全管理实 现对服务器实例上的数据库用户帐号、数据库备份、恢复 等功能的管理,这部分工作通过数据库角色来分工和控制。 数据库对象的访问权限的管理,决定对数据库中最终数据 的安全性管理。数据对象的访问权限决定了数据库用户帐 号,对数据库中数据库对象的引用以及使用数据操作语句 的许可权限。
12.3.1 添加数据库用户
• 1.在SQL Server Management Studio的“对象 资源管理器”窗格中,依次展开“数据库”、 “安全性“及“用户”。
16
2016年4月5日星期二
Page 16
2.使用sp_grantdbaccess添加数据库用户
• 使用系统存储过程sp_grantdbaccess可以为一个登录帐 户在当前数据库中映射一个或多个数据库用户,使它具有 默认的数据库角色public。执行这个存储过程的语法格式 如下。 EXECUTE sp_grantdbaccess '登录名', '用户名' • 【例12.5】 使用SQL语句,在数据库xsgl中分别为 Windows身份验证的登录帐户“JSJ\test”和SQL Server 身份验证的登录帐户“stu04”建立用户名“test”和 “stu04”。 • 由于登录帐户“stu04”的登录名和用户名相同,可以不用 指定,运行如下命令。 USE xsgl GO EXECUTE sp_grantdbaccess 'JSJ\test','test' EXECUTE sp_grantdbaccess 'stu04' GO
12
2016年4月5日星期二
Page 12
12.2.3 服务器角色
• 固定的服务器角色是在服务器安全模式中定义的 管理员组,它们的管理工作与数据库无关。SQL Server在安装后给定了几个固定的服务器角色, 具有固定的权限。可以在这些角色中添加登录帐 户以获得相应的管理权限。
13
2016年4月5日星期二
第12章 SQL Server的安全管理
• • • • • 12.1 12.2 12.3 12.4 12.5 SQL Server的安全模型 服务器的安全性 数据库的安全性 数据库用户角色 权 限
2016年4月5日星期二
Page 1
2
通过学习本章,读者应掌握以下内容: • SQL Server的安全特性以及安全模型 • 使用SQL Server的安全管理工具构造灵活、 安全的管理机制
2016年4月5日星期二
Page 8
9
• 可以使用系统存储过程sp_grantlogin将一 个Windows系统帐户映射为一个使用 Windows身份验证的SQL Server登录帐户, 语法格式如下。 • EXECUTE sp_grantlogin '登录帐户'
2016年4月5日星期二
Page 9
20
2016年4月5日星期二
Page 20
12.4 数据库用户角色
• 数据库角色分为固定的数据库角色和用户自定义 的数据库角色,固定的数据库角色预定义了数据 库的安全管理权限和对数据库对象的访问权限, 用户定义的数据库角色由管理员创建并且定义对 数据库对象的访问权限。 12.4.1 固定数据库角色 12.4.2 自定义数据库角色 用户自定义数据库角色有两种:标准角色和应用 程序角色。标准角色是指可以通过操作界面或应 用程序访问的角色,而应用程序访问角色则只能 通过应用程序访问使用。这里只讨论标准角色。
2016年4月5日星期二
Page 3
12.1.1 SQL Server访问控制
与SQL Server安全模型的3层结构相对应, SQL Server的数据访问要经过3关的访问 控制。 • 第1关,用户必须登录SQL Server的服务 器实例。 • 第2关,在要访问的数据库中,用户的登录 名要有对应的用户帐号。 • 第3关,数据库用户帐号要具有访问相应数 据库对象的权限。
• 运行如下命令。 • EXECUTE sp_addsrvrolemember '6E137BC21534459\test','diskadmin' • EXECUTE sp_addsrvrolemember 'stu04','diskadmin' • EXECUTE sp_dropsrvrolemember '6E137BC21534459\test','diskadmin' • EXECUTE sp_dropsrvrolemember 'stu04','diskadmin'
4
12.1.2 SQL Server身份验证模式
SQL Server有两种安全验证机制:Windows验证 机制和SQL Server验证机制。由这两种验证机制 产生了两种SQL Server身份验证模式: Windows身份验证模式和混合验证模式。顾名思 义,Windows验证模式就是只使用Windows验 证机制的身份验证模式;而混合模式则是用户既 可以使用Windows验证机制也可以使用SQL Server验证机制。 注意:使用“Windows身份验证模式”的时候, SQL Server仅接受Windows系统中的帐户的登 录请求,这时如果用户使用SQL Server身份验证 的登录帐户请求,则会收到登录失败的信息。
2016年4月5日星期二 Page 14
12.3 数据库的安全性
• 一般情况下,用户登录SQL Server后,还 不具备访问数据库的条件,用户要访问数 据库,管理员还必须要访问的数据库中为 其映射一个数据库用户。数据库的安全性 主要是靠管理数据库用户帐号来控制的。
15
2016年4月5日星期二
Page 15
2016年4月5日星期二 Page 22
23
• 3.使用sp_addrole创建数据库角色 • 【例12.8】 使用系统存储过程sp_addrole, 在jxgl数据库中添加名为“role2”的数据库 角色。 • 运行如下命令。 USE jxgl GO EXECUTE sp_addrole 'role2' GO
21
2016年4月5日星期二
Page 21
22
• 1.使用SQL Βιβλιοθήκη Baiduerver Management Studio 创建数据库角色 • 在SQL Server Management Studio的 “对象资源管理器”中,依次展开到“数 据库”节点,选中要使用的数据库。 • 在目标数据库的安全性选项中,右击“角 色”,在弹出的快捷菜单中选择“新建” 命令,在级联菜单中选择“新建数据库角 色”命令,弹出“数据库角色-新建”对话 框
2016年4月5日星期二
Page 19
12.3.3 删除数据库用户
1.使用SQL Server Management Studio删除数 据库用户 2.使用sp_revokedbaccess删除数据库用户 • 【例12.7】 使用SQL语句删除用户“stu04”。 • 运行如下命令。 USE jxgl GO EXECUTE sp_revokedbaccess 'stu04' GO
7
2.使用SQL Server Management Studio创 建使用SQL Server身份验证的登录帐户
2016年4月5日星期二
Page 7
8
3.使用SQL语句创建两种登录帐户 • 基本语法格式如下。 EXECUTE sp_addlogin '登录名', '登录密码', '默认 数据库', '默认语言‘ • 【例12.1】 创建一个名为“stu04”,使用SQL Server身份验证的登录帐户,其密码为“stu04”, 默认数据库为jxgl,使用系统默认语言。 • 运行如下命令。 • EXECUTE sp_addlogin 'stu04','stu04',‘jxgl'
Page 13
14
• 【例12.4】 使用SQL语句,为Windows身份验 证的登录帐户“JSJ\test”和SQL Server身份验 证的登录帐户“stu04”指定磁盘管理员的服务器 角色diskadmin。完成后再取消该角色。其中 “6E137BC21534459”为计算机名,针对不同机
器会有所不同。
4.使用SQL语句删除登录帐户
• 系统存储过程sp_droplogin用于删除一个SQL Server身 份验证的登录帐户,其语法格式如下。 • EXECUTE sp_droplogin '登录名' • 系统存储过程sp_revokelogin用于删除Windows身份验 证的登录帐户,其语法格式如下。 • EXECUTE sp_revokelogin '登录名' • 【例12.3】 使用SQL语句删除Windows身份验证的登录 帐户“JSJ\test”和SQL Server身份验证的登录帐户 “stu04”。 • EXECUTE sp_droplogin 'stu04' • EXECUTE sp_revokelogin 'JSJ\test'
2016年4月5日星期二
5
Page 5
12.2 服务器的安全性
12.2.1 创建和修改登录帐户 • 1.使用SQL Server Management Studio 创建使用Windows身份验证的登录帐户
6
注意:在“登录名”文本框中,如果填写的名称在系统 帐户组或帐户中找不到,则显示出错信息。 2016年4月5日星期二 Page 6
12.2.2 禁止或删除登录帐户
• 禁止用户是暂时停止用户的使用权利,需要时可 以恢复;而删除用户则是彻底地将用户从服务器 中移除,是不能恢复的。禁止或删除用户均可以 采用图形界面方式或命令方式来完成。 1.使用SQL Server Management Studio禁止登 录帐户
10
2016年4月5日星期二
2016年4月5日星期二 Page 23
24
• 4.使用sp_droprole删除数据库角色 • 【例12.9】 使用系统存储过程sp_droprole,在jxgl数据 库中删除名为“role2”的数据库角色。 • 运行如下命令。 USE jxgl GO EXECUTE sp_droprole 'role2' GO • 注意:在删除角色时,如果角色中有成员,则会产生删除 失败的错误,为保证操作的成功运行,首先要删除角色中 的所有成员。
2016年4月5日星期二 Page 17
17
12.3.2 修改数据库用户
18
2016年4月5日星期二
Page 18
19
• 【例12.6】 使用SQL语句,为数据库用户test指定固定的 数据库角色db_ accessadmin。完成后再取消该角色。 • 运行如下命令。 USE jxgl GO EXECUTE sp_addrolemember 'db_accessadmin', 'test' GO EXECUTE sp_droprolemember 'db_accessadmin', 'test' GO
Page 10
11
2.使用SQL Server Management Studio删除登录帐户 • 在SQL Server Management Studio的“对象资源管理器” 窗格中,展开服务器节点,在目标服务器下,展开“安全 性”节点,单击“登录”按钮。 • 右击要删除的登录帐户,在弹出的快捷菜单中选择“删除” 命令或直接按Delete键。 3.使用SQL语句禁止Windows身份验证的登录帐户 • 语法格式如下。 • EXECUTE sp_denylogin '登录帐户' • 注意:该存储过程只能用于禁止Windows身份验证的登 录帐户,而不能用于禁止SQL Server身份验证的登录帐 户。 • 【例12.2】 使用SQL语句,禁止Windows身份验证的登 录帐户JSJ\test。 • 运行如下命令。 • EXECUTE sp_denylogin 'JSJ\test' 2016年4月5日星期二 Page 11
2016年4月5日星期二
Page 2
12.1 SQL Server的安全模型
3
• SQL Server的安全模型分为3层结构,分别为服务器安全 管理、数据库安全管理和数据库对象的访问权限管理。 • 服务器安全管理实现对SQL Server服务器实例的登录帐 户、服务器配置、设备、进程等方面的管理,这部分工作 通过固定的服务器角色来分工和控制。数据库安全管理实 现对服务器实例上的数据库用户帐号、数据库备份、恢复 等功能的管理,这部分工作通过数据库角色来分工和控制。 数据库对象的访问权限的管理,决定对数据库中最终数据 的安全性管理。数据对象的访问权限决定了数据库用户帐 号,对数据库中数据库对象的引用以及使用数据操作语句 的许可权限。
12.3.1 添加数据库用户
• 1.在SQL Server Management Studio的“对象 资源管理器”窗格中,依次展开“数据库”、 “安全性“及“用户”。
16
2016年4月5日星期二
Page 16
2.使用sp_grantdbaccess添加数据库用户
• 使用系统存储过程sp_grantdbaccess可以为一个登录帐 户在当前数据库中映射一个或多个数据库用户,使它具有 默认的数据库角色public。执行这个存储过程的语法格式 如下。 EXECUTE sp_grantdbaccess '登录名', '用户名' • 【例12.5】 使用SQL语句,在数据库xsgl中分别为 Windows身份验证的登录帐户“JSJ\test”和SQL Server 身份验证的登录帐户“stu04”建立用户名“test”和 “stu04”。 • 由于登录帐户“stu04”的登录名和用户名相同,可以不用 指定,运行如下命令。 USE xsgl GO EXECUTE sp_grantdbaccess 'JSJ\test','test' EXECUTE sp_grantdbaccess 'stu04' GO
12
2016年4月5日星期二
Page 12
12.2.3 服务器角色
• 固定的服务器角色是在服务器安全模式中定义的 管理员组,它们的管理工作与数据库无关。SQL Server在安装后给定了几个固定的服务器角色, 具有固定的权限。可以在这些角色中添加登录帐 户以获得相应的管理权限。
13
2016年4月5日星期二
第12章 SQL Server的安全管理
• • • • • 12.1 12.2 12.3 12.4 12.5 SQL Server的安全模型 服务器的安全性 数据库的安全性 数据库用户角色 权 限
2016年4月5日星期二
Page 1
2
通过学习本章,读者应掌握以下内容: • SQL Server的安全特性以及安全模型 • 使用SQL Server的安全管理工具构造灵活、 安全的管理机制
2016年4月5日星期二
Page 8
9
• 可以使用系统存储过程sp_grantlogin将一 个Windows系统帐户映射为一个使用 Windows身份验证的SQL Server登录帐户, 语法格式如下。 • EXECUTE sp_grantlogin '登录帐户'
2016年4月5日星期二
Page 9
20
2016年4月5日星期二
Page 20
12.4 数据库用户角色
• 数据库角色分为固定的数据库角色和用户自定义 的数据库角色,固定的数据库角色预定义了数据 库的安全管理权限和对数据库对象的访问权限, 用户定义的数据库角色由管理员创建并且定义对 数据库对象的访问权限。 12.4.1 固定数据库角色 12.4.2 自定义数据库角色 用户自定义数据库角色有两种:标准角色和应用 程序角色。标准角色是指可以通过操作界面或应 用程序访问的角色,而应用程序访问角色则只能 通过应用程序访问使用。这里只讨论标准角色。
2016年4月5日星期二
Page 3
12.1.1 SQL Server访问控制
与SQL Server安全模型的3层结构相对应, SQL Server的数据访问要经过3关的访问 控制。 • 第1关,用户必须登录SQL Server的服务 器实例。 • 第2关,在要访问的数据库中,用户的登录 名要有对应的用户帐号。 • 第3关,数据库用户帐号要具有访问相应数 据库对象的权限。
• 运行如下命令。 • EXECUTE sp_addsrvrolemember '6E137BC21534459\test','diskadmin' • EXECUTE sp_addsrvrolemember 'stu04','diskadmin' • EXECUTE sp_dropsrvrolemember '6E137BC21534459\test','diskadmin' • EXECUTE sp_dropsrvrolemember 'stu04','diskadmin'