购买

¥30.0

加入VIP
  • 专属下载券
  • 上传内容扩展
  • 资料优先审核
  • 免费资料无限下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 SQL-Server-2005的安全管理

SQL-Server-2005的安全管理.ppt

SQL-Server-2005的安全管理

烟雨梦兮
2018-10-14 0人阅读 举报 0 0 0 暂无简介

简介:本文档为《SQL-Server-2005的安全管理ppt》,可适用于IT/计算机领域

SQLServer数据库应用与开发第章SQLServer的安全管理内容提要:SQLServer数据库系统具有各种高度精确的可配置安全特性,可以实现经过优化的深度防御。本章主要介绍:SQLServer的安全体系结构两种验证模式及其设置登录账号的设置角色与用户的创建方法权限设置与使用第章SQLServer的安全管理本章内容:SQLServer的安全性机制管理服务器范围的安全性管理数据库范围的安全性管理密匙与证书权限管理小结SQLServer的安全性机制SQLServer的安全性机制主要包括以下个方面的内容:SQLServer客户机的安全机制。网络传输的安全机制。SQLServer服务器的安全机制。数据库的的安全机制。数据对象的安全机制。SQLServer的安全性机制基本概念若要在SQLServer的安全机制下首先需要了解下面常用的基本概念或术语。()主体(Principal)。主体是可以请求对SQLServer资源的访问权限的用户、组和进程。主体有几个共同的特征。每个主体都有自己的安全标识号(SID)。主体可以是主体的集合(比如数据库角色或Windows组)或不可分割的主体(比如本地登录或域登录)。每个主体有一个作用域作用域基于定义主体的级别。SQLServer的安全性机制基本概念()安全对象。安全对象是SQLServer数据库引擎授权系统控制对其进行访问的资源。通过创建可以为自己设置安全性的名为“范围”的嵌套层次结构可以将某些安全对象包含在其他安全对象中。安全对象范围包括服务器、数据库、架构和对象。SQLServer的安全性机制基本概念()用户、数据库用户、账户、账号、登录名和密码。用户是指能够在SQLServer安全机制下访问数据库对象中的数据的操作员或客户。用户若要访问数据库对象必须获得管理员分配的账号和密码。从SQLServer管理系统的角度来看用户就是一组匹配的账户和密码。账户和账号是一个概念的不同说法在服务器中的账户又叫登录名(Login)因此访问服务器也称为登录服务器。服务器的登录名可以映射到数据库中成为数据库用户。一个登录名可以映射多个数据库用户而一个用户只能映射一个登录名。SQLServer的安全性机制基本概念()角色(roles)。角色是SQLServer中管理权限相近的安全账户的集合相当于Windows域中的组。()权限。权限是SQLServer安全性的最后一个级别实际上是安全机制的设计者分配给某一个用户(或角色)访问数据库时对数据对象的可以进行的操作集合。要拥有对SQLServer上的安全对象的访问权限主体必须具有在在数据对象上执行操作的权限。SQLServer的安全性机制基本概念()身份验证与授权。身份验证(Authentication)是SQLServer系统标识用户或进程的过程SQLServer中有两种身份验证方式:Windows身份验证模式和混合身份验证模式。客户端自身必须通过服务器的身份验证后才可以请求其他资源。授权(Authorization)是授予通过身份验证的用户或进程以访问或修改资源的指定权限的过程。SQLServer的安全性机制查询权限用户可以利用fnmypermissions函数查询用户的有效权限该函数一般返回调用对方服务器的有效权限列表。fnmypermissions函数语法格式如下:fnmypermissions(securable,'securableclass')fnmypermissions函数的返回列如表所示SQLServer的安全性机制基本概念例列出对服务器的有效权限。程序代码如下:USEmasterGOSELECT*FROMfnmypermissions(,'SERVER')GO例列出对数据库test的有效权限程序代码如下:USEtestGOSELECT*FROMfnmypermissions(,'DATABASE')GOSQLServer的安全性机制基本概念例列出对表的有效权限。分析:以下示例返回调用方对teaching数据库内dbo架构中teacher的有效权限的列表。程序代码如下:USEteachingGOSELECT*FROMfnmypermissions('dboteacher','OBJECT')ORDERBYsubentityname,permissionname例列出一个用户的有效权限分析:以下示例返回数据库用户dbo对teaching数据库内dbo架构中score表的有效权限的列表。调用方需要对用户dbo具有IMPERSONATE权限。程序代码如下:EXECUTEASUSER='dbo'SELECT*FROMfnmypermissions('dboscore','OBJECT')ORDERBYsubentityname,permissionnameREVERTGO管理服务器范围的安全性服务器访问权限是属于SQLServer的第个安全层次该权限决定是否允许客户端访问服务器这个安全级别总是由DBA负责。SQLServer支持用Windows或SQLServer身份验证模式来验证客户端的身份。SQLServer的验证模式SQLServer的身份验证基于SQLServer存储在主数据库中的登录名和密码。客户端必须提供登录名和密码才能获得授权访问服务器。SQLServer的安全性是和Windows操作系统集成在一起的因此SQLServer提供了两种确认用户的验证模式:Windows验证和混合验证模式。管理服务器范围的安全性SQLServer的验证模式Windows身份验证模式SQLServer数据库系统通常运行在Windows服务器平台上其本身就具备管理登录、验证用户合法性的能力因此Windows验证模式正是利用了这一用户安全性和账号管理的机制允许SQLServer也可以使用Windows的用户账户和密码。在这种模式下用户只需要通过Windows的验证就可以连接到SQLServer而SQLServer本身也就不需要管理一套登录数据。Windows身份验证通常被认为更安全和更易维护。Windows身份验证对于用户和管理员来说都比较容易管理。管理服务器范围的安全性SQLServer的验证模式混合身份验证模式混合验证模式允许以SQLServer验证模式或者Windows验证模式来进行验证。混合验证模式先将客户机的账号和密码与SQLServer数据库中存储的账号和密码进行比较如果符合就通过验证如果不符合则再和Windows中存储的账号和密码进行比较如果符合就通过验证。Microsoft公司在SQLServer中对SQLServer身份验证作了一些改进。例如SQLServer实例可以设置为需要安全性更强的口令以及在指定时间段后要求更新口令。管理服务器范围的安全性SQLServer的验证模式.更新服务器的身份验证机制的步骤()在“对象资源管理器”中右击SQLServer数据库实例在弹出的快捷菜单中选择“属性”命令。()在“服务器属性”对话框中选择“安全性”选项卡。()在“服务器身份验证”区域可以设置服务器身份验证模式然后单击“确定”按钮即可完成设置。()重启SQLServer即可改变身份验证模式。管理服务器范围的安全性服务器角色SQLServer的安全体系结构中包括含有特定隐含权限的两类预定义的角色:服务器角色和固定数据库角色。服务器角色是执行服务器管理操作的具有相近权限的用户集合。根据SQLServer的管理任务和重要性等级来把具有SQLServer管理职能的用户划分到不同的服务器角色每一个角色所具有的管理SQLServer的权限都是SQLServer内置的。管理服务器范围的安全性服务器角色服务器角色是服务器级别的主体可以成为服务器角色的成员以控制服务器作用域中的可保护对象。表列出了SQLServer默认创建的服务器角色及其功能。SQLServer的服务器角色在实例中的位置如图所示。管理服务器范围的安全性管理登录名登录名就是可以访问SQLServer数据库系统的账户。.利用SQLServerManagementStudio创建登录名()启动SQLServerManagementStudio工具后在“对象资源管理器”下右击“安全性”下的“登录名”节点在弹出的快捷菜单中选择“新建登录名”命令。()在“登录名新建”界面上设置登录名(telogin)、身份验证模式(SQLServer身份验证)、密码()、默认数据库(teaching)和语言的类型等如图所示。管理服务器范围的安全性管理登录名.利用SQLServerManagementStudio创建登录名()可以选择“服务器角色”选项卡配置登录的服务器角色如sysadmin。()也可以选择其他选项卡进行“用户映射”、“安全对象”和“状态”的配置。()然后单击“确定”按钮即可完成登录名的创建。()可以在“对象资源管理器”下查看新建登录名如图所示。管理服务器范围的安全性管理登录名.利用SQLServerManagementStudio创建登录名()右击登录名telogin在弹出的快捷菜单中选择“编写登录脚本为:”|“CREATE到”|“新查询编辑器窗口”命令系统将创建登录名的过程以脚本形式保存下来。由此可知利用TransactSQL语句创建登录名的方法。脚本中的主要代码如下:CREATELOGINteloginWITHPASSWORD=N'',DEFAULTDATABASE=teaching,DEFAULTLANGUAGE=简体中文,CHECKEXPIRATION=OFF,CHECKPOLICY=OFFGOEXECsysspaddsrvrolememberloginame=N'telogin',rolename=N'sysadmin'GOALTERLOGINteloginDISABLE管理服务器范围的安全性管理登录名.测试登录名下面使用SQLServerManagementStudio测试新登录名是否成功连接服务器。()右击SQLServer中的实例在快捷菜单中选择“连接”命令。()在弹出的“连接服务器”界面中选择SQLServe身份验证然后输入登录名和密码如图所示。()单击“连接”按钮可以测试连接是否成功。如图所示。管理服务器范围的安全性管理登录名.利用系统过程管理登录名利用master数据库下的下列系统存储过程spaddlogin、spdroplogin、sppassword也可以用于管理SQLServer的登录名。()spaddlogin。系统过程spaddlogin可以用于创建SQLServer登录名用户可以通过该登录访问SQLServer系统其语法过程如下:spaddlogin‘loginname’,’passwd’,’database’,language’例利用系统过程spaddlogin向“职员管理”数据库创建个新登录。spaddlogin'rose','aabbcc','teaching'GOspaddlogin'hanry','aabbcc','teaching'GOspaddlogin'pool','aabbcc','teaching'GO管理服务器范围的安全性管理登录名.利用系统过程管理登录名()spdroplogin。利用系统存储过程spdroplogin可以删除一个现有的SQLServer登录名spdroplogin系统过程可以通过系统表syslogins中删除相应的行来达到删除登录名的目的。需要注意的是,正在访问的SQLServer系统中的任何一个数据库的SQLServer登录名是不能被删除的。若要删除某登录名必须先利用系统过程sprevokedbaccess删除相应的数据库用户。管理服务器范围的安全性管理登录名.利用系统过程管理登录名()sppassword。系统存储过程sppassword为SQLServer登录创建密码或替换现有的口令密码。利用该过程用户可以随时修改自己的口令密码系统管理员通过sppassword可以更改任何口令密码。例如:sppassword'aabbcc','','hanry'管理服务器范围的安全性管理登录名密码的复杂性策略SQLServer的密码复杂性策略是指一系列限制密码复杂性的规则。密码复杂性策略通过增加可能密码的数量来阻止强力攻击。实施密码复杂性策略时新密码必须符合以下原则:长度至少有个字符最多可包含个字符。密码包含以下类字符中的类:英文大写字母(AZ)、英文小写字母(az)、个基本数字()、非字母数字(例如:!、$、#或)字典中查不到且不是命令名、人名或用户名不得包含全部或部分用户名。定期更改且与以前的密码明显不同的密码。管理服务器范围的安全性管理凭据凭据是包含连接到SQLServer之外的资源所需的身份验证信息的记录。.凭据的构成大多数凭据包含一个Windows登录名和密码。通过凭据使用SQLServer身份验证连接到SQLServer的用户可以连接到Windows或其他SQLServer以外的资源。在创建凭据之后可以将凭据映射到登录名。单个凭据可映射到多个SQLServer登录名但是一个SQLServer登录名只能映射到一个凭据。系统凭据是自动创建的并与特定端点关联其名称以'##'开头。管理服务器范围的安全性管理凭据创建凭据的过程下面介绍创建凭据平局pingju的一般步骤。()在“对象资源管理器”下右击“安全性”下的“凭据”节点在弹出的快捷菜单中选择“新建凭据”命令。()在弹出的“新建凭据”对话框中输入凭据名称(pingju)、标识(JIANGNVJWXJAdministrator)和密码如图所示即可完成创建凭据的操作。管理服务器范围的安全性管理凭据创建凭据的过程例在syscredentials目录视图中查看凭据的有关信息。分析:用户可以利用SELECT语句在syscredentials目录视图中查看凭据的相关信息。程序代码如下:SELECT*FROMsyscredentials例创建映射到凭据的登录名分析:创建一个登录名USER然后将其映射到凭据pingju。程序代码如下:CREATELOGINUSERWITHPASSWORD=’ABCD’CREENTIAL=pingjuGO管理数据库范围的安全性访问一个服务器并不意味着用户自动拥有数据库的访问权限。DBA以下列方式之一指定一个数据库登录用户:在每个用户需要访问的数据库中创建一个与用户登录名对应的数据库用户。将数据库配置为把登录名或数据库用户作为数据库角色的成员对待的方式使得用户能够继承角色中的所有权限。将登录名设置为使用默认账户之一:guest或dbo(数据库拥有者)。一旦授予了对数据库的访问权限用户就可以看到所有数据库对象。管理数据库范围的安全性数据库角色数据库角色是在数据库级别定义的并且存在于每个数据库中是对数据库对象操作权限的集合。SQLServer的数据库角色分为固定数据库角色和用户自定义数据库角色。后者又分为标准角色和应用程序角色两种。.固定数据库角色固定数据库角色是数据库级别的主体可以管理数据库作用域的可保护对象其中public公有角色比较特殊。每个被授予对数据库的访问权限的用户会自动成为公有角色的成员并继承授予它的权限。管理数据库范围的安全性数据库角色.固定数据库角色一般情况下public角色允许用户做以下操作:public角色为数据库中所有用户保持默认权限。当尚未对某个用户授予或拒绝对安全对象的特定权限时则该用户将继承授予该安全对象的public角色的权限。通过guest账户访问任意数据库。用某些系统存储过程显示master数据库中的信息查看系统表。执行一些不需要权限的语句例如PRINT。表具体列出了所有数据库角色的功能。管理数据库范围的安全性数据库角色.固定数据库角色对于某个数据库而言每一个数据库角色都有它特定的许可。可以用系统过程spdbfixdrolepermission来查看每一个固定数据库角色的许可。如果不指定role的值所有固定服务器角色的许可都会显示出来。这个存储过程的语法结构为:spdbfixedrolepermissionrolename=’role’例如:EXECspdbfixedrolepermissiondbddladmin管理数据库范围的安全性数据库角色自定义数据库角色可以创建一个数据库角色并赋予对数据库作用域和架构作用域的可保护对象的访问权限。一个用户可以是若干个数据库角色的成员。创建角色的步骤如下()在“对象资源管理器”下展开数据库teaching右击“安全性”|“角色”在弹出的快捷菜单中选择“新建”|“数据库角色”命令。()在弹出的“数据库角色新建”窗体中的“常规”选项卡中输入角色名jsj、所有者名telogin并选择架构如图所示。管理数据库范围的安全性数据库角色自定义数据库角色创建角色的步骤如下()在“安全对象”选项卡中单击“添加”按钮在弹出的“添加对象”对话框中选择其中一项如“特定对象。()单击“确定”按钮按照示例提示选择数据对象。()单击“确定”按钮返回如图所示的“安全对象”选项卡中为表设置权限后。单击“确定”按钮数据库角色jsj创建完毕。管理数据库范围的安全性数据库角色应用程序角色应用程序角色(Applicationrole)是在没有成员的数据库级别上定义的Microsoft创建应用程序角色目的是防止用户直接访问底层表数据。应用程序角色可以加强对某一个特别的应用程序的安全性。例如某公司职员只是用某个特定的应用程序来修改员工数据信息那么就可以为其建立应用程序角色。管理数据库范围的安全性数据库角色应用程序角色应用程序角色和所有其他的角色都有很大不同。应用程序角色没有成员因为它们只是应用程序中使用所以不需要直接对某些用户赋予权限。必须为应用程序角色设计一个密码以激活它。当应用程序角色被应用程序的会话激活以后会话就会失去所有属于登录、用户账号或角色的权限会话只能通过guest用户账号的权限来访问其他数据库。如果在数据库中没有guest用户账号的话会话就不能获得访问数据库的权限。。管理数据库范围的安全性数据库角色应用程序角色()利用SQLServerManagementStudio创建应用程序角色的步骤①在“对象资源管理器”下展开数据库teaching右击“安全性”|“角色”在弹出的快捷菜单中选择“新建”|“应用程序角色”命令。②在弹出的“应用程序角色新建”对话框的“常规”选项卡中输入角色名称、默认架构和密码如图所示。管理数据库范围的安全性数据库角色应用程序角色()利用SQLServerManagementStudio创建应用程序角色的步骤③参照创建数据库角色时的步骤设置“安全对象”选项卡后单击“确定”按钮应用程序角色建成。④查看创建应用程序角色的脚本应用程序角色jsj的脚本如下:USEteachingGOCREATEAPPLICATIONROLEjsjWITHDEFAULTSCHEMA=dbo,PASSWORD=N'aaaaaa'管理数据库范围的安全性数据库角色应用程序角色()使用系统过程spaddapprole来创建应用程序角色并且赋予它们权限这个过程的语法结构为:spaddapprolerolename’role’passwdname=’password’()激活应用程序角色:当一个连接启动以后必须执行系统过程spsetapprole来激活应用程序角色所拥有的权限。这个过程的语法结构为:spsetapprolerolename’role’passwd=’password’,encrypt=’encryptstyle’例如激活应用程序角色jsj的命令如下:Execspsetapprole'jsj','aaaaaa'当用系统存储过程spsetapprole激活应用程序角色的时候可以了解到应用程序角色总是和数据库绑定的即应用的范围是当前数据库如果在会话中改变了当前数据库那么你就只能做那个数据库中允许的操作。管理数据库范围的安全性数据库角色.管理数据库架构架构(schema)是管理数据对象的逻辑单位是形成单个命名空间的数据库对象的集合。多个用户可以共享一个默认架构以进行统一名称解析。开发人员通过共享默认架构可以将共享对象存储在为特定应用程序专门创建的架构中而不是DBO架构中。SQLServer在引入架构后访问数据库对象的完全限定模式为:severdatabaseschemaobject管理数据库范围的安全性数据库角色.管理数据库架构下面介绍创建数据库架构的步骤。()在“对象资源管理器”下展开数据库teaching右击“安全性”|“架构”在快捷菜单中选择“新建架构”命令。()在弹出的“架构新建”窗体中的“常规”选项卡中输入架构名schema、架构所有者名public。()在“权限”选项卡中单击“添加”按钮在弹出的“选择用户和角色”对话框中选择对象类型和对象。()单击“确定”按钮在如图所示的“权限”选项卡中为用户和角色设置权限后。单击“确定”按钮数据库架构schema创建完毕。管理数据库范围的安全性数据库角色.管理数据库架构下面介绍创建数据库架构的步骤。()对“架构”项进行刷新即可观察到新建的架构schema。还可以通过执行创建脚本的操作查看创建架构的代码。同样:也可以通过SQLServerManagementStudio图形工具和TransactSQL命令对架构进行修改和删除。在SQLServer中多个用户可以通过角色和成员身份拥有一个架构可以对该架构进行安全权限的设置。多个用户可以共享一个默认架构进行统一的名称解析。删除数据库用户不必再修改和测试显示引用这些对象的应用程序。管理数据库范围的安全性管理数据库用户数据库用户是访问某个特定数据库的主体。.利用SQLServerManagementStudio创建数据库用户()在“对象资源管理器”下展开数据库teaching右击“安全性”|“用户”在弹出的快捷菜单中选择“新建”|“用户”命令。()在弹出的“数据库用户新建”窗体中的“常规”选项卡中输入用户名hans、选择登录名telogin并选择架构如图所示。也可以指定“默认架构”项。管理数据库范围的安全性管理数据库用户数据库用户是访问某个特定数据库的主体。.利用SQLServerManagementStudio创建数据库用户()在“安全对象”选项卡中添加用户的安全对象。()单击“脚本”按钮可以生成如下脚本代码:()单击“确定”按钮数据库用户hans创建完毕。管理数据库范围的安全性管理数据库用户.利用TransactSQL命令创建数据库用户向当前数据库添加用户的TransactSQL语法如下:CREATEUSERusername {{FOR|FROM}{LOGINloginname|CERTIFICATEcertname|ASYMMETRICKEYasymkeyname}|WITHOUTLOGIN WITHDEFAULTSCHEMA=schemaname例在teaching数据库中创建用户AbolCREATELOGINAbolWITHPASSWORD='Shy'USEteachingCREATEUSERAbolGO管理数据库范围的安全性特殊用户所有SQLServer数据库中均提供的一种特殊用户不能从任何数据库中删除该用户。.guest用户guest(游客)用户在默认情况下存在于所有数据库且是禁用的。授予guest用户的权限由在数据库中没有账号的用户继承。管理数据库范围的安全性特殊用户.guest用户guest用户还具有如下特点:()guest用户不能删除但可以通过在master和temp以外的任何数据库中执行REVOKECONNECTFROMGUEST来撤消该用户的CONNECT权限从而禁用该用户。()guest用户允许没有账号的用户访问数据库。()应用程序角色是数据库级别的主体只能通过其他数据库中授予guest用户的权限来访问这些数据库。因此任何已禁用guest用户的数据库对其他数据库中的应用程序角色都是不可访问的。管理数据库范围的安全性特殊用户.dbo用户dbo是具有在数据库中执行所有活动的暗示性权限的用户。固定服务器角色sysadmin的任何成员都映射到每个数据库内的称为dbo的特殊用户上由固定服务器角色sysadmin的任何成员创建的任何对象都自动属于dbo。另外dbo用户还具有如下特点:()dbo用户无法删除而且始终存在于每个数据库中。()只有固定服务器角色sysadmin的成员或dbo用户创建的对象才属于dbo。()dbo拥有和固定服务器角色dbowner中的成员有着同样的权力dbo是唯一一个能在dbowner角色中加入成员的用户。管理密匙与证书SQLServer的加密策略和机制对主要包括密码系统架构、密钥与证书的使用。利用此机制可以对数据库访问进行加密也可对数据进行加密。SQLServer的密码系统架构SQLServer用分层加密和密钥管理基础结构来加密数据。每一层都使用证书、非对称密钥和对称密钥的组合对它下面的一层进行加密。如图所示加密层次结构与权限层次结构中介绍的安全对象的层次结构相似。管理密匙与证书SQLServer的密码系统架构加密层次结构的每一层是如何对它下面的一层进行加密的:顶层的服务主密钥是用WindowsDPAPI进行加密的。服务主密钥是加密层次结构的根。此密钥是在安装MicrosoftSQLServer实例时自动生成的并受Windows数据保护API保护。只有创建服务主密钥的Windows服务账户或有权访问服务账户名称和密码的主体能够打开服务主密钥。具有重新生成或还原服务主密钥涉及解密和重新加密完整的加密层次结构。备份服务主密钥可以将备份副本存储在一个安全、较远的位置。管理密匙与证书创建密钥密钥分为非对称密钥和对称密钥。对称密钥是加密和解密都使用的一个密钥。使用对称密钥进行加密和解密非常快并且适用于使用数据库中的敏感数据的例程。对称密钥具有速度快系统占用资源少密钥的安全分发困难的特点。非对称密钥由私钥和对应的公钥组成。每个密钥都可以解密另一个密钥加密的数据。非对称加密和解密相对来说会消耗大量资源但它们比对称加密提供了更高的安全级别。非对称密钥可用于加密对称密钥以便存储在数据库中。非对称密钥具有加密、解密速度慢占用系统占用资源较多方便进行密钥分发的特点。管理密匙与证书创建密钥例创建和备份服务主密钥示例。生成新的服务主密钥ALTERSERVICEmasterKEYREGENERATEGO备份服务主密钥到文件BACKUPSERVICEmasterKEYTOFILE='F:SQLPROGRAMSMKBAK'ENCRYPTIONBYPASSWORD='PASSWORD'从备份文件还原服务主密钥。RESTORESERVICEmasterKEYFROMFILE='F:SQLPROGRAMSMKBAK'DECRYPTIONBYPASSWORD='PASSWORD'例创建数据库的主密钥示例USEtestGO为数据库创建数据库的主密钥CREATEmasterKEYENCRYPTIONBYPASSWORD='PASSWORD'GO查看数据库加密状态SELECTname,ismasterkeyencryptedbyserverFROMsysdatabasesWHEREname='test'例查看数据库主密的信息USETESTSELECT*FROMsyssymmetrickeysGO对数据库密进行备份USEtestGOBACKUPmasterKEYTOFILE='F:SQLPROGRAMDMKBAK'ENCRYPTIONBYPASSWORD='PASSWORD'GO管理密匙与证书创建证书公钥证书(通常只称为证书)是一个数字签名语句它将公钥的值绑定到拥有对应私钥的人员、设备或服务的标识上。证书是由证书颁发机构(CA)颁发和签名的。从CA接收证书的实体是该证书的主题。证书中通常包含下列信息:主题的公钥。主题的标识符信息如姓名和电子邮件地址。有效期。这是指证书被认为有效的时间长度。颁发者标识符信息。颁发者的数字签名。此签名用于证明主题的公钥和标识符信息之间的绑定的有效性。管理密匙与证书创建证书证书的主要好处是使主机不再需要为每个主题维护一组密码。相反主机只需要与证书颁发者建立信任关系然后证书颁发者就可以签名无限数量的证书。当主机(如安全Web服务器)将某个颁发者指定为受信任的根颁发机构时主机将隐式信任该颁发者用来建立它所发出的证书绑定的策略。主机可以通过将颁发者自签名的证书放入主机的受信任根证书颁发机构证书存储区将此颁发者指定为受信任的根颁发机构。颁发者可以在证书到期之前便撤消该证书。管理密匙与证书创建证书例创建证书mycert创建证书USEtestGOCREATECERTIFICATEmycertENCRYPTIONBYPASSWORD='PASSWORD'WITHSUBJECT='mycert',STARTDATE='',EXPIRYDATE=''GOselect*fromsyscertificatesGO备份导出证书和私钥USEtestGOBACKUPCERTIFICATEmycertTOFILE='F:SQLPROGRAMmycertcer'WITHPRIVATEKEY(DECRYPTIONBYPASSWORD='PASSWORD',FILE='F:SQLPROGRAMmycertpvt',ENCRYPTIONBYPASSWORD='PASSWORD')运行结果如图:管理密匙与证书创建证书例从证书mycert中创建数据库用户hongtaoliu。USEtestCREATEUSERhongtaoliuFORCERTIFICATEmycertGO程序执行成功后可以发现数据库test中用户hongtaoliu已经存在。管理密匙与证书加密实例下面看一个关于加密的例子。例利用前面的证书对字符串进行加密和解密。DECLAREsourcevarbinary()DECLAREencrytextvarbinary()SETsource=CONVERT(varbinary(),'Thisistest!')SETencrytext=EncryptByCert(CertID('mycert'),source)SELECTencrytextSELECTCONVERT(varchar(),DecryptByCert(CertID('mycert'),encrytext,N'PASSWORD'))asSource权限管理权限是SQLServer安全性的最后一个级别。权限可以明确用户能够使用哪些数据库对象并对它们进行何种操作。用户在数据库内的权限取决于用户账号的权限和该用户所属的角色的权限。在SQLServer中权限分为语句、对象和暗示性种类型:语句权限。在数据库中创建数据库或其他项目的活动时所受到的权限控制。对象权限。使用数据或执行程序的活动受到的权限控制。暗示性权限。执行只有固定角色的成员或数据库对象的所有者才能够秩序的某些活动权限不能授予、撤消或拒绝。权限管理语句权限语句权限授予用户某些TransactSQL语句的操作权力。语句权限是对语句本身定义的而不是在数据库中定义的一个特定项。.利用SQLServerManagementStudio管理语句权限在SQLServerManagementStudio中为查看现有的角色或用户的语句权限以及“授予”、“具有授予权限”、“允许”或“拒绝”语句权限提供了图形界面。SQLServer中可以通过多种方式获取这种图形界面。权限管理语句权限.利用SQLServerManagementStudio管理语句权限在“对象资源管理器”下右击“数据库”|“teaching”在弹出的菜单中选择“属性”然后选择“权限”选项卡可以查看、设置角色或用户的语句权限如图所示。“授予”表示指权限分配给用户或角色。“具有授予权限”是指用户或角色获得的权限可以再授予其他用户或角色。“拒绝”将覆盖表级对列级权限以外的所有层次的权限设置如果未进行任何设置将从其他组成员身份中继承权限。权限管理语句权限.利用TransactSQL语句管理语句权限数据控制语言(DCL)是用来设置或更改数据库用户或角色权限的语句包括GRANT、DENY和REVOKE等语句。种语句的功能如表所示。权限管理语句权限.利用TransactSQL语句管理语句权限下面对授予、拒绝和撤销安全对象的权限进行说明:授予权限将删除对所指定安全对象的相应权限的DENY或REVOKE权限。如果在包含该安全对象的更高级别拒绝了相同的权限则DENY优先。在SQLServer中在更高级别撤销已授予权限的操作并不优先表级DENY并不优先于列级GRANT。权限管理语句权限.利用TransactSQL语句管理语句权限下面对授予、拒绝和撤销安全对象的权限进行说明:REVOKE语句可用于删除已授予的权限或取消拒绝权限DENY语句可用于防止主体通过GRANT获得特定权限。数据库级权限在指定的数据库范围内授予。如果用户需要另一个数据库中的对象的权限请在该数据库中创建用户账户或者授权用户账户访问该数据库以及当前数据库。sphelprotect系统存储过程可报告对数据库级安全对象的权限。权限管理语句权限例在数据库teaching中为数据库用户hans和Abol设置DELETE、INSERT和SELECT语句权限。程序代码如下:useteachingGO为hans和Abol设置带有“具有授予权限”DELETE,UPDATE语句的权限WITHADMINOPTION为可选项允许被授权的用户将指定的权限再授予其他用户或角色。GRANTDELETE,UPDATETOhans,AbolWITHGRANTOPTIONGO为hans和Abol设置“授予”INSERT语句的权限GRANTINSERTTOhans,AbolGO为hans和Abol设置“拒绝”SELECT语句的权限DENYSELECTTOhans,AbolGO查看hans和Abol的权限EXECUTEsphelprotect,,,'S'GO权限管理对象权限对象权限就是指使用数据或执行程序的活动时受到的权限控制。对象权限表示对特定的数据库对象(表、视图、字段和存储过程)的操作权限它决定了能对表、视图等数据库对象执行的操作。.利用SQLServerManagementStudio管理对象权限在SQLServerManagementStudio中为查看现有的对象权限以及“授予”、“具有授予权限”、“允许”或“拒绝”语句权限提供了图形界面。权限管理对象权限.利用SQLServerManagementStudio管理对象权限在“对象资源管理器”下右击“数据库”|teaching|“表”|stscore在弹出的菜单中选择“属性”然后选择“权限”选项卡可以查看、设置表的对象权限如图所示。如果选择一个操作语句然后单击“列权限”按钮还可以设置表中某些列的权限如图所示。权限管理对象权限.利用TransactSQL语句管理对象权限管理对象权限的TransactSQL语句包括GRANT、DENY和REVOKE等语句。例在数据库teaching中为表stscore设置DELETE、INSERT和SELECT对象权限。程序代码如下:useteachingGO设置表上的对象权限GRANTINSERT,SELECTONdbostscoreTOAbolWITHGRANTOPTIONGOGRANTDELETEONdbostscoreTOAbolGODENYALTERONdbostscoreTOAbolGO设置列上的对象权限DENYUPDATEONdbostscore(studentno)TOAbolGOGRANTUPDATEONdbostscore(sname)TOAbolASdboGODENYUPDATEONdbostscore(courseno)TOAbolGOGRANTUPDATEONdbostscore(final)TOAbolWITHGRANTOPTIONASdboGO查看表stscore的所有对象权限EXECUTEsphelprotect'stscore'GO权限管理对象权限例在数据库teaching中撤销用户Abol在表stscore上设置的INSERT和SELECT对象权限。程序代码如下:useteachingGOCASCADE表示要撤消的权限也会从此主体授予或拒绝该权限的其他主体中撤消。REVOKEINSERT,SELECTonstscorefromAbolCASCADE查看表stscore的所有对象权限EXECUTEsphelprotect'stscore'GO权限管理解决权限冲突用户在登录到SQLServer后其用户账号所属的角色所被赋予的权限决定了该用户能够对哪些数据库对象执行哪种操作以及能够访问、修改哪些数据。在每个数据库中用户的权限独立于用户账号和用户在数据库中的角色每个数据库都有自己独立的权限系统。授予角色的权限由它们的成员继承。虽然用户可以在一个级别上授予或撤销权限但是若这些权限与更高级别上的权限发生冲突则可能拒绝或允许用户访问权限。权限管理解决权限冲突拒绝在SQLServer中除了表级的DENY优先权并不优先于列级GRANT外拒绝权限具有各层次的优先权在任何级别上的拒绝权限都拒绝该对象的权限无论该用户现有的权限是已经授予还是废止。SQLServer总是首先处理被拒绝的权限若对public角色设置拒绝权限则将禁止任何用户访问对象包括DENY语句的用户。权限管理解决权限冲突撤销撤销权限只删除所撤销级别(如包含该用户、组或角色)上的已经授予的权限或已经拒绝的权限。而在另一层次上所授予或拒绝的主体的同一权限仍然有效。REVOKE语句能够将在当前数据库内的用户或者角色上授予或拒绝的权限删除但是该语句并不影响用户或者角色从其他角色中作为成员继承过来的权限。权限管理解决权限冲突授权授予权限删除所授予级别(如包含该用户、组或角色)上的已经拒绝权限或撤销权限。而在另一级别上所拒绝的同一权限仍然有效。在另一级别上所撤销的同一权限仍然适用但它并不阻止用户访问该对象。因此用户得到的权限是在对象上所授予、拒绝或撤销的全部权限的并集其中拒绝权限比另一级别上授予或撤销的同一权限优先。小结数据的安全机制是防止数据以因不合法用户的访问而造成的泄密或破坏的保证。在本章的学习过程中应该掌握如下内容:主体、登录名、角色、用户、架构等基本概念SQLServer的安全机制。两种验证模式及其设置。登录名的创建和使用。角色与用户的创建、使用及权限设置。解决权限冲突的方法。

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

评分:

/74

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利