SQL的安全机制SQLserver的安全机制SQLserver的安全机制可以划分为4个等级:1、客户机操作系统的安全性2、SQLserver的等安全性3、数据库的使用安全性4、数据库对象的使用安全性每个安全等级就好象一道门,如果用户拥有开门的钥匙,则用户可以通过每一道门达到下一个安全等级,如果通过了所有的门,则用户就可以实现对数据的访问。用户客户机SQL服务器数据库数据库对象1234第十二章SQL的安全机制SQLserver的安全机制1、客户机操作系统的安全性在用户使用客户计算机通过网络实现对SQLserver服务器的访问时,用户首先要获得客户计算机操作系统的使用权。2、SQLserver的安全性SQLserver的服务器级的安全性建立在控制服务器登陆帐号和密码的基础上。用户在登录时提供的登录帐号和密码,决定了用户能否获得SQLserver的访问权,以及在登录以后,用户在访问SQLserver进程是可以拥有的权利。3、数据库的安全性在用户通过SQLserver服务器的安全性检验后,将直接面对不同的数据库入口。4、数据库对象的安全性第十二章SQL的安全机制SQLserver的安全机制为了实现安全性,每个网络用户在访问SQLServer数据库之前,都必须经过两个阶段的检验:身份验证阶段(Authentication):用户在SQLServer上获得对任何数据库的访问权限之前,必须登录到SQLServer上,并且被认为是合法的,SQLServer或者操作系统对用户进行验证。权限验证阶段(PermissionValidation):用户身份验证通过后,登录到SQLServer上,系统检查用户是否具有访问服务器上数据对象的权限。用户客户机SQL服务器数据库数据库对象1234身份验证权限验证第十二章SQL的安全机制SQLserver的安全机制身份验证阶段(Authentication):Windows验证模式和混合验证模式1、Windows验证模式在该验证模式下,SQLServer检测当前使用的Windows用户帐号,并在Syslogins表中查找该帐号,以确定该帐号是否有权登录。在这种方式下,用户不必提供密码或者登录名让SQLServer验证。Windows验证模式下主要有以下优点:1)数据库管理员的工作可以集中在管理数据库方面,而不是管理用户帐户。对用户帐户的管理可以交给WindowsNT/2000去完成。2)WindowNT/2000有着更强的用户帐户管理工具。可以设置帐户锁定、密码期限等。如果不是通过定制来扩展SQLServer,SQLServer是不具备这些功能的。3)WindowsNT/2000的组策略支持多个用户同时被授权访问SQLServer。但是,要在客户和服务器间建立连接,必须满足以下两个条件中的一个:1)客户端的用户必须有合法的服务器上的WindowsNT/2000帐户,服务器能够在自己的域中或者信任域中验证该用户。2)服务器启动了Guest帐户。但该方法会带来安全上的隐患,因而不是一个好的方法。第十二章SQL的安全机制SQLserver的安全机制2、混合验证模式混合验证模式允许以SQLServer验证模式或者Windows验证模式来进行验证。使用哪种模式取决于在最初通信时使用的网络库。如果一个用户使用的是TCP/IP的Sockets进行登录验证,则将使用SQLServer验证模式;如果用户使用命名管道,则登录时将使用Windows验证模式。但是对于Windows9X系列的操作系统,只能使用SQLServer验证模式。SQLServer验证模式下,处理登录的过程为:用户在输入登录名和密码后,SQLServer在系统注册表中检测输入的登录名和密码。如果输入的登录名存在,而且密码也正确,就可以登录到SQLServer上。混合验证模式具有以下优点:1)创建了WindowsNT/2000之上的另外一个安全层次。2)支持更大范围的用户,如非WindowsNT客户、Novell网用户等。3)一个应用程序可以使用单个的SQLServer登录帐号和口令。第十二章SQL的安全机制SQLserver的安全机制3、设置验证模式在第一次安装SQLServer,或者使用SQLServer连接其他服务器的时候,需要指定验证模式。对于已经指定验证模式的SQLServer服务器,在SQLServer中还可以进行修改。操作步骤如下:1)打开EnterpriseManager,展开“服务器组”文件夹,在其中的某个服务器上单击右键,在弹出的快捷菜单上选择“编辑SQLServer注册属性”菜单命令,这时“已注册的SQLServer属性”对话框。2)在对话框中设置验证模式后,单击“确定”按钮即可。注意:修改验证模式后,必须首先停止SQLServer服务,然后重新启动SQLServer,才能使设置生效。第十二章SQL的安全机制SQLserver的安全机制权限验证阶段用户必须使用特定的登录账户才能连接到SQLServer。建立连接以后,用户必须使用特定的用户账户才能对数据库进行访问,而且只能查看经授权可以查看的表和视图,只能执行经授权可以执行的存储过程和管理功能。当验证了用户的身份并允许其登录到SQLServer以后,在用户访问的每个数据库中都要求设置单独的用户账户。这样做的目的是防止—个用户在连接到SQLServer以后,对服务器上的所有数据库进行访问。第十二章SQL的安全机制SQLserver的安全机制权限验证阶段每个数据库中的用户账号都用于为该数据库的对象设置安全权限;无论是WindowsNT用户帐户、用户所属的WindowsNT组、还是SQLServer登录账户,都可以在数据库中映射为不同的数据库用户账户。如果不存在直接映射的账户,就可以允许用户以Guest账户在数据库中工作,前提是该账户已经存在。用户账户的数据库访问权限决定了用户在数据库中可以进行哪些操作。用户获得对数据库的访问权限以后,SQLServer就可以接受并执行命令。用户在数据库中所进行的所有活动都是通过Transact-SQL语句传到SQLServer中的。当SQLServer接收到这些语句时,将确定用户是否具有在数据库中执行该语句的权限。如果用户没有执行该语句的权限或者没有访问该语句所使用对象的权限,则SQLServer向用户返回一个权限错误。第十二章SQL的安全机制SQLserver的标准登陆模式服务器的安全性是通过设置系统登录账户的权限进行管理的。用户在连接到SQLServer2000时与登录账户相关联;在SQLServer2000中有两类登录账户:一类是登录服务器的登录帐号(LoginName),另外一类是使用数据库的用户帐号(UserName)。登录帐号是指能登录到SQLServer的帐号,它属于服务器的层面,本身并不能让用户访问服务器中的数据库,而登录者要使用服务器中的数据库时,必须要有用户帐号才能存取数据库。用户名要在特定的数据库内创建并关联一个登录名(当一个用户创建时,必须关联一个登录名)。用户定义的信息存放在服务器的每个数据库的sysusers表中,用户设有密码同它相关联。SQLServer通过授权给用户指定用户可以访问的数据库对象的权限。第十二章SQL的安全机制SQLserver的标准登陆模式1、查看登录帐号在安装SQLServer2000以后,系统默认创建三个登录帐号。进入EnterpriseManager,展开“SQLServer组”,找到所要连接的SQLServer服务器;展开该服务器对应的文件夹,再展开“安全性”文件夹,单击“登录”选项,即可看到系统创建的默认登录帐号及已建立的其他登录帐号。它们的含义如下:BUILTIN\Administrators:凡是WindowsNTServer/2000中的Administrators组的帐号都允许作为SQLServer登录账号使用。域名\Administrator:允许WindowsNTServer的Administrator帐号作为SQLServer登录账号使用。sa:SQLServer系统管理员登录帐号,该账号拥有最高的管理权限,可以执行服务器范围内的所有操作。此SQLServer的管理员不一定是WindowsNTServer/2000的管理员(但通常是)。第十二章SQL的安全机制SQLserver的标准登陆模式2、创建一个登录帐号要登录到SQLServer必须具有一个登录帐号,创建一个登录帐号的操作步骤如下:1)在SQLServer的EnterpriseManager下,展开“SQLServer组”文件夹,找到要建立登录帐号的服务器并展开其文件夹,再展开“安全性”文件夹,在“登录”选项上右击鼠标,在出现的快捷菜单中单击“新建登录”菜单命令,打开“SQLServer登录属性”对话框。2)“名称”文本框中输入要创建的登录帐号的名称,如“StudentAdm”,在“身份验证”选项组中,单击“SQLServer身份验证”单选钮并输入密码,然后在“默认设置”选项组中,选择数据库列表中的某个数据库,如“STUDENT”,表示该登录帐号默认登录STUDENT数据库中。3)在该对话框中,单击“服务器角色”选项卡,在此选项卡中,可设置登录帐号所属的服务器角色。第十二章SQL的安全机制SQLserver的标准登陆模式2、创建一个登录帐号4)在对话框中,单击“数据库访问”选项卡,在此选项卡中选择登录帐号可以访问的数据库,即选中所需数据库左面的复选框。5)设置完毕后,单击“确定”按钮,即可完成该登录帐号的创建。6)在步骤2)中,如果选择“Windows身份验证”单选钮,则“名称”文本框后面的按钮被激活,单击可打开选择Windows用户的对话框,。从该对话框中可选择Windows系统的用户作为SQLServer的登录帐号。查询分析器:命令:sp_addloginloginname,password,database例:execsp_addlogin‘zhx’,’aaa’,’pubs’第十二章SQL的安全机制SQLserver的标准登陆模式服务器角色是负责管理与维护SQLServer的组,一般指定需要管理服务器的登录帐号属于服务器角色。SQLServer在安装过程中定义几个固定的服务器角色,其具体权限如下:固定服务器角色描述Sysadmin全称为SystemAdministrators,可在SQLServer中执行任何活动Serveradmin全称为ServerAdministrators,可设置服务器范围的配置选项,关闭服务器Setupadmin全称为SetupAdministrators,可管理连接服务器和启动过程Securityadmin全称为SecurityAdministrators,可管理服务器登录,读取错误日志和更改密码Processadmin全称为ProcessAdministrators,可以管理在SQLServer中运行的进程Dbcreator全称为DatabaseCreators,可以创建、更改和删除数据库Diskadmin全称为DiskAdministrators,可以管理磁盘文件Bulkadmin全称为BulkInsertAdministrators,可以执行大容量插入注意:属于WindowsNT/2000Administrators组的帐号在SQLServer中被自动设置为sysadmin服务器角色。第十二章SQL的安全机制SQLserver的标准登陆模式3、更改、删除登录帐号属性进入EnterpriseManager,展开“SQLServer组”,找到所要连接的SQLServer服务器;展开该服务器对应的文件夹,再展开“安全性”文件夹,单击“登录”选项,在EnterpriseManager的右侧窗格中,可看到系统创建的默认登录帐号及已建立的其他登录帐号。在需要更改属性的帐号上单击右键,在出现的快捷菜单中,单击相应选项,即可可更改或删除登录帐号属性。4、禁止登录账号如