1 / 45

数据库基础与应用 -----SQL Server 2008

数据库基础与应用 -----SQL Server 2008. 第 9 章 SQL Server 2008 的安全机制. 本章主要内容. 1. SQL Server 2008 的安全机制概述. 2. 创建登录账户. 3. 创建数据库用户. 4. 角色. 5. 权限. 一 . SQL Server 2008 的安全机制概述. 安全性是所有数据库管理系统的一个重要特征。理解安全性问题是理解数据库管理系统安全性机制的前提。

snowy
Télécharger la présentation

数据库基础与应用 -----SQL Server 2008

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 数据库基础与应用-----SQL Server 2008 第9章 SQL Server 2008的安全机制

  2. 本章主要内容 1 SQL Server 2008的安全机制概述 2 创建登录账户 3 创建数据库用户 4 角色 5 权限

  3. 一. SQL Server 2008的安全机制概述 安全性是所有数据库管理系统的一个重要特征。理解安全性问题是理解数据库管理系统安全性机制的前提。 1.第一个安全性问题:当用户登录数据库系统时,如何确保只有合法的用户才能登录到系统中?这是一个最基本的安全性问题,也是数据库管理系统提供的基本功能。 • 在Microsoft SQL Server 2008系统中,通过身份验证模式和主体解决这个问题。

  4. 1)身份验证模式 Microsoft SQL Server 2008系统提供了两种身份验证模式:Windows身份验证模式和混合模式。 • Windows身份验证模式: 在该模式中,用户通过Windows用户账户连接SQL Server时,使用Windows操作系统中的账户名和密码。 • 混合模式: 在混合模式中,当客户端连接到服务器时,既可能采取Windows身份验证,也可能采取SQL Server身份验证。

  5. 查看与更改身份验证模式

  6. 2)主体 主体是可以请求系统资源的个体或组合过程。例如,数据库用户是一种主体,可以按照自己的权限在数据库中执行操作和使用相应的数据。 Microsoft SQL Server 2008系统有多种不同的主体,不同主体之间的关系是典型的层次结构关系,位于不同层次上的主体其在系统中影响的范围也不同。位于层次比较高的主体,其作用范围比较大;位于层次比较低的主体,其作用范围比较小。

  7. 2.第二个安全性问题:当用户登录到系统中,他可以执行哪些操作、使用哪些对象和资源?2.第二个安全性问题:当用户登录到系统中,他可以执行哪些操作、使用哪些对象和资源? • 在Microsoft SQL Server 2008系统中,通过安全对象和权限设置来解决这个问题。 主体和安全对象的结构示意图

  8. 3.第三个安全性问题:数据库中的对象由谁所有?如果是由用户所有,那么当用户被删除时,其所拥有的对象怎么办,难道数据库对象可以成为没有所有者的“孤儿”吗?3.第三个安全性问题:数据库中的对象由谁所有?如果是由用户所有,那么当用户被删除时,其所拥有的对象怎么办,难道数据库对象可以成为没有所有者的“孤儿”吗? • 在Microsoft SQL Server 2008系统中,这个问题是通过用户和架构分离来解决的。 数据库对象、架构和用户之间的关系示意图

  9. 安全机制的5个等级: • 客户机安全机制 • 网络传输的安全机制 • 实例级别安全机制 • 数据库级别安全机制 • 对象级别安全机制

  10. 二.创建登录账户 1.创建Windows登录账户

  11. 三.创建数据库用户

  12. 2.创建SQL Server登录账户

  13. 3.启用、禁用和解锁登录 要启用、禁用或解锁一个登录的操作步骤: (1)启动Microsoft SQL Server Management Studio,在“对象资源管理器”视图中,连接到适当的服务器,然后向下浏览至“安全性”文件夹。 (2)展开“安全性”文件夹和“登录名”文件夹以列出当前的登录。右击一个登录,然后从快捷菜单中选择“属性”以查看此登录的属性。这样会打开“登录属性”对话框。

  14. (3)在“登录属性”对话框左侧列表中选择“状态”选项,打开“状态”页面(3)在“登录属性”对话框左侧列表中选择“状态”选项,打开“状态”页面

  15. (4)然后可以进行以下操作: • 要启动登录,在“登录”选项区下选择“启用”单选按钮。 • 要禁用登录,在“登录”选项区下选择“禁用”单选按钮。 • 要解锁登录,清除“登录已锁定”复选框。 (5)最后单击“确定”按钮,完成操作。

  16. 4.修改登录 具体操作步骤如下: (1)打开“登录属性”对话框

  17. (2)单击“登录属性”对话框左侧的“用户映射”选项,可以为当前用户添加一个连接数据库“msdb”(2)单击“登录属性”对话框左侧的“用户映射”选项,可以为当前用户添加一个连接数据库“msdb”

  18. 5.删除登录 1)在Microsoft SQL Server Management Studio中删除登录账户 • 启动Microsoft SQL Server Management Studio,然后访问适当的服务器。 • 在服务器的“安全性”文件夹中展开“登录名”文件夹。 • 右击想要删除的登录,然后从快捷菜单中选择“删除”,要开“删除对象”对话框, 2)使用Transact-SQL语句删除登录账户 命令格式如下: DROP LOGIN login_name 【例9.1】删除已经创建好的“stu2”账户。 DROP LOGINstu2

  19. 三.创建数据库用户 1.通过设置“用户映射”指明数据库用户

  20. 2.创建数据库用户

  21. 四.角色 1.固定服务器角色 • 固定服务器角色是服务器级别的主体,它们的作用范围是整个服务器。 • 固定服务器角色已经具备了执行指定操作的权限,可以把其他登录名作为成员添加到固定服务器角色中,这样该登录名可以继承固定服务器角色的权限。 固定服务器角色的特点 • 在Microsoft SQL Server系统中,可以把登录名添加到固定服务器角色中,使登录名作为固定服务器角色的成员继承固定服务器角色的权限。 • 对于登录名来说,可以选择其是否成为某个固定服务器角色的成员

  22. 服务器角色

  23. 按照从最低级别的角色(bulkadmin)到最高级别的角色(sysadmin)的顺序进行描述:按照从最低级别的角色(bulkadmin)到最高级别的角色(sysadmin)的顺序进行描述: • Bulkadmin:这个服务器角色的成员可以运行BULK INSERT语句。这条语句允许从文本文件中将数据导入到SQL Server 2008数据库中,为需要执行大容量插入到数据库的域账户而设计。 • Dbcreator:这个服务器角色的成员可以创建、更改、删除和还原任何数据库。这不仅是适合助理DBA的角色,也可能是适合开发人员的角色。 • Diskadmin:这个服务器角色用于管理磁盘文件,比如镜像数据库和添加备份设备。它适合助理DBA。 • Processadmin:SQL Server 2008能够多任务化,也就是说可以通过执行多个进程做多个事件。例如,SQL Server 2008可以生成一个进程用于向高速缓存写数据,同时生成另一个进程用于从高速缓存中读取数据。这个角色的成员可以结束(在SQL Server 2008中称为删除)进程。

  24. Securityadmin:这个服务器角色的成员将管理登录名及其属性。他们可以授权、拒绝和撤销服务器级权限。也可以授权、拒绝和撤销数据库级权限。另外,它们可以重置SQL Server 2008登录名的密码。 • Serveradmin:这个服务器角色的成员可以更改服务器范围的配置选项和关闭服务器。例如SQL Server 2008可以使用多大内存或监视通过网络发送多少信息,或者关闭服务器,这个角色可以减轻管理员的一些管理负担。 • Setupadmin:为需要管理链接服务器和控制启动的存储过程的用户而设计。这个角色的成员能添加到setupadmin,能增加、删除和配置链接服务器,并能控制启动过程。 • Sysadmin:这个服务器角色的成员有权在SQL Server 2008中执行任何任务。 • Public:有两大特点,第一,初始状态时没有权限;第二,所有的数据库用户都是它的成员。

  25. 使用操作平台管理服务器角色 (1)查看服务器角色的属性 ①启动Microsoft SQL Server Management Studio,在“对象资源管理器”中依次展开“安全性|服务器角色”节点

  26. ②选择其中的一个服务器,在其上单击右键,在弹出的快捷菜单中选择“属性”选项。例如选择sysadmin这个服务器并右击,在快捷菜单中单击“属性”选项,打开如图所示“服务器角色属性”对话框,在该对话框中就可以查看sysadmin这个服务器角色的属性了。②选择其中的一个服务器,在其上单击右键,在弹出的快捷菜单中选择“属性”选项。例如选择sysadmin这个服务器并右击,在快捷菜单中单击“属性”选项,打开如图所示“服务器角色属性”对话框,在该对话框中就可以查看sysadmin这个服务器角色的属性了。

  27. (2)添加服务器角色的角色成员 ①为服务器角色添加“角色成员”,可以在服务器角色的“服务器角色属性”对话框中单击“添加”按钮。 ②单击“浏览”按钮,弹出“查找对象”对话框,单击要添加的登录名左边的复选框,单击“确定”按钮即可将选中的角色成员添加进来。

  28. (3)删除服务器角色的角色成员 要删除一个已经存在的角色成员,只需要选中该角色成员并在其上单击鼠标右键,然后在弹出的快捷菜单中选择“删除”选项,即可删除服务器角色。

  29. 2.数据库角色 三种类型的数据库角色: • 固定数据库角色:微软提供的作为系统一部分的角色; • 用户定义的标准数据库角色:你自己定义的角色,将Windows用户以一组自定义的权限分组; • 应用程序角色:用来授予应用程序专门的权限,而非授予用户组或者单独用户。

  30. 1)固定数据库角色 微软提供了9个内置的角色,以便于在数据库级别授予用户特殊的权限集合 • db_owner:该角色的用户可以在数据库中执行任何操作。 • db_accessadmin:该角色的成员可以从数据库中增加或者删除用户。 • db_backupopperator:该角色的成员允许备份数据库。 • db_datareader:该角色的成员允许从任何表读取任何数据。 • db_datawriter:该角色的成员允许往任何表写入数据。 • db_ddladmin:该角色的成员允许在数据库中增加、修改或者删除任何对象(即可以执行任何DDL语句)。

  31. db_denydatareader:该角色的成员被拒绝查看数据库中的任何数据,但是他们仍然可以通过存储过程来查看。db_denydatareader:该角色的成员被拒绝查看数据库中的任何数据,但是他们仍然可以通过存储过程来查看。 • db_denydatawriter: 像db_denydatareader角色,该角色的成员被拒绝修改数据库中的任何数据,但是他们仍然可以通过存储过程来修改。 • db_securityadmin:该角色的成员可以更改数据库中的权限和角色。 • public:在SQL Server 2008中每个数据库用户都属于public数据库角色。当尚未对某个用户授予或者拒绝对安全对象的特定权限时,这该用户将据称授予该安全对象的public角色的权限,这个数据库角色不能被删除

  32. 2)用户自定义数据库角色

  33. 3)应用程序角色 应用程序角色允许用户为特定的应用程序创建密码保护的角色。

  34. 1.常用的权限 五.权限

  35. 9.6.4 操作权限 权限分为3种状态:授予、拒绝、撤销,可以使用如下的语句来修改权限的状态。 • 授予权限(GRANT):授予权限以执行相关的操作。通过角色,所有该角色的成员继承此权限。 • 撤销权限(REVOKE):撤销授予的权限,但不会显示阻止用户或角色执行操作。用户或角色仍然能继承其他角色的GRANT权限。 • 拒绝权限(DENY):显式拒绝执行操作的权限,并阻止用户或角色继承权限,该语句优先于其他授予的权限。

  36. 1.授予权限 本语法格式: GRANT {ALL|statement[,..n] } TO security_account[,..n]

  37. 相关参数据说明如下: • ALL:表示希望给该类型的对象授予所有可用的权限。不推荐使用此选项,保留些选项仅用于向后兼容。授予ALL参数相当于授予以下权限: • 如果安全对象为数据库,则ALL表示CREATE DATABASE、CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE VIEW、CREATE TABLE、CREATE RULE等权限。 • 如果安全对象为标量函数,则ALL表示EXECUTE和REFERENCES。 • 如果安全对象为表值函数,则ALL表示SELECT、DELETE、INSERT、UPDATE、REFERENCES。 • 如果安全对象为存储过程,则ALL表示EXECUTE、SYNONYM。

  38. 如果安全对象为表,则ALL表示SELECT、DELETE、INSERT、UPDATE、REFERENCES。如果安全对象为表,则ALL表示SELECT、DELETE、INSERT、UPDATE、REFERENCES。 • 如果安全对象为视图,则ALL表示SELECT、DELETE、INSERT、UPDATE、REFERENCES。 • Statement:表示可以授予权限的命令,例如,CREATE DATABASE。 • security_account:表示定义被授予权限的用户单位。security_account可以是SQL Server的数据库用户,可以是SQL Server的角色,也可以是Windows的用户或工作组

  39. 【例9.2】使用GRANT命令授予角色“students_mag”对”students”数据库中“stu”表的DELETE、INSERT、UPDATE权限。【例9.2】使用GRANT命令授予角色“students_mag”对”students”数据库中“stu”表的DELETE、INSERT、UPDATE权限。 USE students Go GRANT DELETE, INSERT, UPDATE ON stu TO students_mag GO

  40. 2.撤销权限 语法格式: REVOKE{ALL|statement[,..n] } FROM security_account[,..n] 【例9.3】使用REVOKE语句撤销 “students_mag”角色对“stu”表所拥有的DELETE、INSERT、UPDATE权限。 USE students Go REVOKE DELETE, INSERT, UPDATE ON stu FROM students_mag CASCADE

  41. 3.拒绝权限 基本语法: DENY {ALL|statement[,..n] } TO security_account[,..n] 【例9.4】在数据库“students”的“stu”表中执行INSERT操作的权限授予了public角色,然后于拒绝用户guest拥有该项权限。 USE students Go GRANT INSERT ON stu TO public GO DENY INSERT ON stu TO guest

  42. 4.使用Microsoft SQL Server Management Studio管理平台管理权限 (1)启动Microsoft SQL Server Management Studio管理平台,连接到适当的服务器。 (2)在“对象资源管理器”中展开“数据库”,右击“students”,从弹出的快捷菜单中选择“属性”选项,在打开的“数据库属性-students”对话框中,选择“权限”选项

  43. (3)如果要对所有用户分配默认的权限,就为public角色分配权限。要添加用户或角色,单击“搜索”按钮,然后使用“选择用户或角色”对话框。单击“浏览”按钮,打开“查询对象”对话框,选择“public数据角色”

  44. (3)单击“确定”按钮,即可把“public数据角色”添加到“用户或角色”列表中。(3)单击“确定”按钮,即可把“public数据角色”添加到“用户或角色”列表中。 (4)要为个别用户或角色分配权限,首先选择一个用户或者一个角色,然后使用“public的权限”列表框根据需要允许或拒绝权限。清除所有“授予”或“拒绝”复选框,撤销先前授予或拒绝的权限

  45. Thank You !

More Related