【文档说明】第16章 安全管理.pptx,共(36)页,85.812 KB,由精品优选上传
转载请保留链接:https://www.ichengzhen.cn/view-288570.html
以下为本文档部分文字说明:
第16章安全管理本章从安全性的角度对SQLServer2008系统的基本管理方法进行分析讲解,因为无论对于系统管理员还是数据库编程人员,甚至对于每个用户,数据库系统的安全性都是至关重要的。通过对本章的学习,可以了解到要想确保系统的安全性,应该学会使用用户账户,同时还应该给账户授予相应
的权限,对用户、角色和权限的管理可以进行管理的操作。16.1SQLServer2008的安全认证模式当用户使用SQLServer2008时,需要经过两个安全性阶段,身份验证阶段和权限认证阶段。身份验证阶段:SQLServer20
08或者Windows对用户进行验证。如果验证通过,用户就可以连接到SQLServer2008服务器上。否则,服务器将拒绝用户登录,从而保证系统的安全性。权限认证阶段:身份验证的通过只表示用户可以连接到SQLServer2008服务器上。然后
,需要检测用户是否有访问服务器数据的权限,为此需要授予每个数据库中映射到用户登录的账户访问权限。16.1.1身份验证阶段在验证阶段,系统对用户登录进行验证。SQLServer2008和Windows是结合在一起的,它们会产生两种验证模式:Windows身份验证模式和混合身份验证模式。16
.1.2权限认证阶段为防止不合理的使用造成数据的泄密和破坏,SQLServer2008数据库管理系统除使用身份验证方法来限制用户进入数据库系统外,还使用权限认证来控制用户对数据库的操作。当以用户身份通过验证连接到SQLServer2008服务器后,在用户可以访问的每个数据库中都要求单独的用户账号,
对于没有账户的数据库,将无法访问。此时,用户虽然可以发送各种Transact-SQL语句,但是这些操作语句在数据库中是否能够成功地执行,还取决于该用户账户在该数据库中对这些操作拥有的权限。如果发出操作命令的用户没有执行该语句的权限或者访问该对象的权限,则SQLSe
rver2008将不会执行该操作语句。所以,若没有通过数据库的权限认证,即使用连接到SQLServer2008服务器上,也无法使用数据库。16.2管理登录账户在SQLServer2008中可以通过SSMS和系统存储过程两种不同
的方法来创建登录帐户。16.2.1使用SSMS创建SQLServer2008登录账户使用SQLServerManagementStudio创建登录帐户的步骤如下:16.2.2使用系统存储过程创建SQLServer2008登录账户要在SQLServer2008服务器中添加登录账户,可以使用系统存储
过程sp_addlogin。其创建登录账号的语法格式如下:Sp_addlogin[@loginame=]'login'[,[@password=]'password'][,[@defdb=],'database'][,[@deflanguage=]'language'][,[@s
id=]sid][,[@encryptopt=]'encryption_option']16.3创建数据库的用户SQLServer2008账号有如下两种:登录服务器的登录账号:指能登录到SQLServer2008服务器的账号,属于服务器的层面。
它本身并不能让用户访问服务器中的数据库。使用数据库的用户账号:登录到SQLServer2008服务器中的数据时,必须使用用户账号才能够存取数据库,就如同公司门口先刷卡进人,然后再拿钥匙打开自己的办公室一样。用户名要在特定的数据库内创建,并关联一个登录名。用户定义的信息存放在服务器的每个
数据库的SYSUERS表中。通过授权给用户来指定用户可以访问对象的权限。16.3.1使用SQLServerManagementStudio创建SQLServer2008数据库用户使用SQLServerManagementStudio创建数
据库用户的步骤如下:(1)在【对象资源管理器】面板中,展开某一数据库,如wj的文件夹。再展开【安全】选项,然后右击【用户】分支,在弹出的对话框中单击【新建用户】命令,弹出的【新建用户】对话框,如图16.9所示。(2)选中【登录名】单选按钮,选择
登录账号如wj_log登录账号。在【用户名】文本框中输入用户名如wj_user,也可以在【数据库角色成员身份】列表中选择新建用户应该属于的数据角色。(3)设置完毕后,单击【确定】按钮,即可在wj数据库中创建一个新的用户账号
。如果不想创建用户账号,单击【取消】按钮即可。16.3.2使用存储过程创建数据库用户下面学习用于创建数据库用户的存储过程。1.使用sp_adduser创建数据库用户该存储过程用于添加新的用户。语法格式如下:sp_adduser[@loginame=]'l
ogin'[,[@name_in_db=]'user'][,[@grpname=]'group']2.使用sp_grantdbaccess本存储过程为SQLServer2008或Windows用户或组在当前数据库中添加一个安全帐户,并使其能够被授予在数据库中执行活动的权限。语法格式
为:sp_grantdbaccess[@loginame=]'login'[,[@name_in_db=]'name_in_db’]16.4安全管理账户在SQLServer2008中管理着系统管理员、普通用户等多种帐户,这
些帐户拥有自己的账号和密码及权限。本节学习如何对各类账户进行管理。16.4.1查看服务器的登录帐号SQLServer2008可以分别通过系统存储过程和SSMS来查看登录帐号。1.使用系统存储过程查看登录账号2.使用SSMS查看登录账号16.4.2修改登
录帐号属性同样,SQLServer2008可以分别通过系统存储过程和SSMS来修改登录帐号。1.使用存储过程修改登录属性2.使用SQLServerManagementStudio修改登录账户属性16.4.3查看数据库的用户在SQLServer200
8中,也可以通过SSMS和存储过程来查看数据库的用户。1.使用SSMS查看数据库的用户2.用存储过程查看数据库的用户16.5删除登录和用户帐户通过SQLServer2008可以完成登录和用户帐户的创建,同样,也可以完成相应帐户的删除任务。本节将学习如何删除登录和用户帐户。16.5.1删除登录账号在
SQLServer2008中可以通过SSMS和存储过程两种方式来删除登录帐号。1.使用SQLServerManagementStudio删除登录账号启动SQLServerManagementStudio进入【对象资源管理器】面板,再展开【安全性】选项,展开【登录名】选项,选中要删
除的登录名,再右击,在弹出的对话框中,选择【删除】命令即可确定。2.使用存储过程删除登录账号使用存储过程sp_droplogin可删除某一登录账号,其语法格式如下:sp_droplogin'login
'16.5.2删除用户账号在SQLServer2008中可以通过SSMS和存储过程来实现用户帐号删除。1.使用SQLServerManagementStudio删除用户账号在【对象资源管理器】面板中,展开某个数据库,展开【安全性】|【用户】选项,
右击要删除的用户,在弹出的对话框中单击【删除】命令。在弹出的对话框中,单击【确定】按钮,即可完成操作。2.使用sp_revokedbaccess可删除用户账号语法格式为:sp_revokedbaccess'name'16.6数据库用
户和角色管理角色是由一组用户所构成的组,可以分为服务器角色和数据库角色。本节将对数据库用户与角色管理的内容展开学习。16.6.1服务器角色管理服务器角色是负责管理与维护SQLServer2008的组,一般只会指定需要管理服务器登录账
号属于服务器角色。16.6.2.标准角色与应用程序角色在SQLServer2008中,数据库角色可分为两种:标准角色和应用程序角色。1.标准角色标准角色是由数据库成员所组成的组,此成员可以是用户或者其他的数据库角色,在创建一个数据库时,系统默认
创建10个固定的标准角色,在【对象资源管理器】面板中,展开【数据库】选项,再展开某个数据库的文件夹,然后展开【安全性】选项,展开【角色】下面的【数据库角色】选项2.应用程序角色应用程序角色用来控制应用程序存取数据的,本身并不包括任何成员。在编写数
据库的应用程序时,可以自定义应用程序角色,让应用程序的操作能用编写的程序来存取SQLServer的数据。也就是说,应用程序的操作者本身并不需要在SQLServer2008上拥有登录账号以及用户账号,但是仍然可以存取数据库。16.6.3创建新
的角色在SQLServer2008中,可以通过存储过程和SSMS实现角色的创建。1.使用存储过程创建角色使用sp_addrole在当前数据库中创建新角色,其语法格式:sp_addrole'role','owner'2.使用SQLServ
erManagementStudio创建角色在【对象资源管理器】面板中,选择【数据库】选项,展开【wj】数据库的文件夹,然后在选择展开【安全性】选项。选中【角色】右击,在弹出的对话框中,单击【新建数据库角色】命令,弹出【数据库角色-新建】对话框。在该窗口中
,输入相应的角色名称“wj_role1”和所有者“dbo”,选择角色拥有的架构及添加相应的角色成员即可16.6.4删除角色在SQLServer2008中可以通过SSMS和存储过程来实现角色的删除。1.使用SQLServerMana
gementStudio删除角色在【对象资源管理器】对话框中,选中【数据库】选项,展开某一数据库。然后展开【安全性】选项,再展开【角色】选项,在某一角色上右击,在弹出的对话框中单击【删除】命令即可。2.使用存储过程删除角色使用sp_droprole从当前数据
库删除指定的角色,其语法为:sp_droprole'role'16.6.5查看角色的属性通过SQLServer2008还可以对各类角色的属性进行查看。以在wj数据库中的db_owner角色为例说明,操作
步骤如下。(1)在【对象资源管理器】面板中,选择【数据库】选项,展开某个数据库的文件夹,然后选择展开【安全性】选项,选中【角色】选项展开。(2)右击如db_ower角色,在弹出的对话框中,选择【属性】命令,则弹出【数据库角色属性】对话框
,可以看到相应的属性。在此对话框中,单击【添加】按钮,可为角色添加一个用户,单击【删除】按钮,可从角色中删除被选中的用户,但是dbo代表数据库的所有者,因此删除角色的时候是不能被删除的,如图16.23所示。16.6.6用户和角色的权限问题用户是
否具有对数据库存取的能力,不仅要看其权限的设置,而且还要受到角色权限的限制。1.用户权限继承角色的权限在数据库角色中可以包含许多用户,用户对数据库对象的存取也就继承角色的权限。假设用户wj_user属于角色wj_rolel,角色wj_rol
el已经取得对student表的SELECT权限,则用户wj_user也自动取得对student表的SELECT权限。如果wj_rolel对student表没有INSERT权限,而wj_user取得对student表的INSERT权限,则wj_user取得对st
udent表的INSERT权限,则wj_user最终也取得对student表的INSERT权限。而拒绝是优先的,只要wj_rolel和wj_user中的任伺一个拒绝,则该权限就是拒绝的。2.用户分属于不同角色如果一个用户分属
于不同的数据库角色。例如,用户wj_user既属于角色wj_rolel,又属于角色wj_role2,则用户wj_user的权限基本上是以wj_rolel和wj_role2的并集为准,但是只要有一个拒绝,那么用户wj_user的权限就是拒绝的。16.7数据库用户帐号的权限管理在SQLServe
r2008中包含有多个不同的数据库,各数据库含有不同的数据库用户,本节学习如何对这些数据库用户的帐号进行权限管理。16.7.1权限类型用户登录到SQLServer2008服务器后,角色和用户的权限已被决定对数据库所能执行的操作权限,在SQLServer中分为3类,分别是对象权限
、语句权限和隐含权限。1.对象权限2.语句权限3.隐含权限16.7.2使用管理工具设置权限设置权限有两种方法,一种方法是使用SQLServerManagementStudio对象资源管理器,另一种方法
是使用Transact-SQL语句管理权限。使用SQLServerManagementStudio操作简单、直观,但是它不能设置表或视图的列权限;使用T-SQL语句操作很繁琐,但是它功能齐全。16.7.3使用SQL语句设置权限本节学习如何通过SQL语句对权限进行管理。1.
授予权限2.拒绝权限。3.撤销权限16.8高级安全特性本节学习SQLServer2008的高级安全特性,包括通知服务安全、分析服务安全、集成服务安全、报表服务安全、服务代理安全。16.8.1通知服务安全通知服务(NotificationS
ervices)向数据库管理员提出了一些独特的安全方面的挑战。DBA不仅要考虑数据库的安全,同时还要考虑用于创建通知服务应用的XML文件的安全。在许多组织中,文件系统安全是由网络或系统管理员负责的。这是数
据库管理员必须与其他团体密切合作的领域。Microsoft建议在脆弱的域或本地账户下不要使用本地系统、本地服务或网络服务账户或系统管理员组的任何账户。如果运行服务所使用的传送协议需要具有其他特权的账户时,就必须具有更高的权限。例如,使用IISSMTP服务发送通告要求在实例的W
indows服务运行下的账户是本地管理员组的一个成员。16.8.2SQLServiceBroker安全SQLServerServiceBroker为消息和队列应用程序提供SQLServer数据库引擎本机支持。这使开发人员可以轻松地创建使用数据库引擎组件,在完全不
同的数据库之间进行通信的复杂应用程序。开发人员可以使用ServiceBroker轻松生成可靠的分布式应用程序。因此,需要为其提供良好的安全机制。SQLServiceBroker有两种安全类型:会话安全和传输安全。会话安全对单个会话信
息进行加密,并检验会话参与者的身份。会话安全还提供远程认证和消息完整性检查。会话安全在两个服务之间建立认证和加密的通信。传输安全防止未认证的数据库向本地数据库实例传送服务代理消息。传输安全在两个数据库间建立了认证的网络连接。SQLServiceBroker使用证书为本地和远程服务器之间的
通信进行认证。16.8.3分析服务的安全性微软在SQLServer7中就已经推出分析服务,直到最近几年,分析服务/商业智能市场才成为主流。商业智能(BI)应用通常位于信息金字塔的顶部,只有某些部门能够访问重要的商业报表。随着BI成为主流,更好地控制访问和报表变得非常
重要。在用户连接到分析服务后,用户在分析服务中的许可权由分配给用户所属的分析服务角色的权限决定,可以直接也可以通过Windows角色的成员关系进行。让操作系统执行认证,分析服务就可以利用Windows的安全特
性了,包括安全验证和密码加密、审计、密码过期、最小密码长度以及多次无效登录后账户锁定。16.8.5SQLServer集成服务安全特性集成服务是SQLServer2008中面向高性能数据集成的功能组成,它有一个配套的数据流
机制和控制流机制,并且可以为数据分析服务提供必要的ETL支持。在SQLServer2008中,SQLServer集成服务(SSIS)已经整理了它的安全模型。集成服务现在提供任务级和包级安全基础设施,该设施充分利用WindowsServer2003和SQLServe
r2008中的证书技术。16.8.6报表服务安全SQLServer2008提供的所有关键技术中,报表服务无疑是最值得注意的一个,因为它是整个组织能够直接访问的。因为报表在大多数组织中正在逐步变成主流,了解它是如何实现的极其重要。从
管理者的观点看,报表服务需要协调一些团队的功能。报表服务是属于IIS并基于Internet的应用。因此,IIS管理员和Windows管理员需要共同使用正确的许可级配置IIS和Windows。另外,报表数据本身需要通过某些用户账户导出,DBA需要配置这些。对于新的报表生成器功能,必须做些额外的工
作来保护报表模型,因为它以报表模型的形式向用户显示元数据。16.9小结安全是一个非常重要的范畴,为了防止非法用户对数据库进行操作,以保证数据库的安全运行,SQLServer2008提供了强大的内置的安全性和数据保护,来帮助实现这些要求。在本章的学习中,我们要重点掌握SQL
Server2008的安全验证模式,各类账户的分类、创建和管理,用户和角色的分类、创建和管理以及SQLServer2008提供的高级安全特性。本章的难点在于SQLServer2008的权限管理。在下一章,我们将继续学习SQLServer2008的高级
功能。