资源预览内容
第1页 / 共36页
第2页 / 共36页
第3页 / 共36页
第4页 / 共36页
第5页 / 共36页
第6页 / 共36页
第7页 / 共36页
第8页 / 共36页
第9页 / 共36页
第10页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第16章 安全管理,本章从安全性的角度对SQL Server 2008系统的基本管理方法进行分析讲解,因为无论对于系统管理员还是数据库编程人员,甚至对于每个用户,数据库系统的安全性都是至关重要的。通过对本章的学习,可以了解到要想确保系统的安全性,应该学会使用用户账户,同时还应该给账户授予相应的权限,对用户、角色和权限的管理可以进行管理的操作。,16.1 SQL Server 2008的安全认证模式,当用户使用SQL Server 2008时,需要经过两个安全性阶段,身份验证阶段和权限认证阶段。 身份验证阶段:SQL Server 2008或者Windows对用户进行验证。如果验证通过,用户就可以连接到SQL Server 2008服务器上。否则,服务器将拒绝用户登录,从而保证系统的安全性。 权限认证阶段:身份验证的通过只表示用户可以连接到SQL Server 2008服务器上。然后,需要检测用户是否有访问服务器数据的权限,为此需要授予每个数据库中映射到用户登录的账户访问权限。,16.1.1 身份验证阶段,在验证阶段,系统对用户登录进行验证。SQL Server 2008和Windows是结合在一起的,它们会产生两种验证模式:Windows身份验证模式和混合身份验证模式。,16.1.2 权限认证阶段,为防止不合理的使用造成数据的泄密和破坏,SQL Server 2008数据库管理系统除使用身份验证方法来限制用户进入数据库系统外,还使用权限认证来控制用户对数据库的操作。当以用户身份通过验证连接到SQL Server 2008服务器后,在用户可以访问的每个数据库中都要求单独的用户账号,对于没有账户的数据库,将无法访问。 此时,用户虽然可以发送各种Transact-SQL语句,但是这些操作语句在数据库中是否能够成功地执行,还取决于该用户账户在该数据库中对这些操作拥有的权限。如果发出操作命令的用户没有执行该语句的权限或者访问该对象的权限,则SQL Server 2008将不会执行该操作语句。所以,若没有通过数据库的权限认证,即使用连接到SQL Server 2008服务器上,也无法使用数据库。,16.2 管理登录账户,在SQL Server 2008中可以通过SSMS和系统存储过程两种不同的方法来创建登录帐户。,16.2.1 使用SSMS创建SQL Server 2008登录账户,使用SQL Server Management Studio创建登录帐户的步骤如下:,16.2.2 使用系统存储过程创建SQL Server 2008登录账户,要在SQL Server 2008服务器中添加登录账户,可以使用系统存储过程sp_addlogin。其创建登录账号的语法格式如下: Sp_addloginloginame=login, password=password,defdb=,database ,deflanguage=language,sid=sid,encryptopt=encryption_ option,16.3 创建数据库的用户,SQL Server 2008账号有如下两种: 登录服务器的登录账号:指能登录到SQL Server 2008服务器的账号,属于服务器的层面。它本身并不能让用户访问服务器中的数据库。 使用数据库的用户账号:登录到SQL Server 2008服务器中的数据时,必须使用用户账号才能够存取数据库,就如同公司门口先刷卡进人,然后再拿钥匙打开自己的办公室一样。用户名要在特定的数据库内创建,并关联一个登录名。用户定义的信息存放在服务器的每个数据库的SYSUERS表中。通过授权给用户来指定用户可以访问对象的权限。,16.3.1 使用SQL Server Management Studio创建SQL Server 2008数据库用户,使用SQL Server Management Studio创建数据库用户的步骤如下: (1)在【对象资源管理器】面板中,展开某一数据库,如wj的文件夹。再展开【安全】选项,然后右击【用户】分支,在弹出的对话框中单击【新建用户】命令,弹出的【新建用户】对话框,如图16.9所示。 (2)选中【登录名】单选按钮,选择登录账号如wj_log登录账号。在【用户名】文本框中输入用户名如wj_user,也可以在【数据库角色成员身份】列表中选择新建用户应该属于的数据角色。 (3)设置完毕后,单击【确定】按钮,即可在wj数据库中创建一个新的用户账号。如果不想创建用户账号,单击【取消】按钮即可。,16.3.2 使用存储过程创建数据库用户,下面学习用于创建数据库用户的存储过程。 1使用sp_adduser创建数据库用户 该存储过程用于添加新的用户。语法格式如下: sp_adduser loginame= login ,name_in_db= user,grpname=group 2使用sp_grantdbaccess 本存储过程为SQL Server 2008或Windows用户或组在当前数据库中添加一个安全帐户,并使其能够被授予在数据库中执行活动的权限。语法格式为: sp_grantdbaccess loginame=login ,name_in_ db=name_in_ db,16.4 安全管理账户,在SQL Server 2008中管理着系统管理员、普通用户等多种帐户,这些帐户拥有自己的账号和密码及权限。本节学习如何对各类账户进行管理。,16.4.1 查看服务器的登录帐号,SQL Server 2008可以分别通过系统存储过程和SSMS来查看登录帐号。 1使用系统存储过程查看登录账号 2使用SSMS查看登录账号,16.4.2 修改登录帐号属性,同样,SQL Server 2008可以分别通过系统存储过程和SSMS来修改登录帐号。 1使用存储过程修改登录属性 2使用SQL Server Management Studio修改登录账户属性,16.4.3 查看数据库的用户,在SQL Server 2008中,也可以通过SSMS和存储过程来查看数据库的用户。 1使用SSMS查看数据库的用户 2用存储过程查看数据库的用户,16.5 删除登录和用户帐户,通过SQL Server 2008可以完成登录和用户帐户的创建,同样,也可以完成相应帐户的删除任务。本节将学习如何删除登录和用户帐户。,16.5.1 删除登录账号,在SQL Server 2008中可以通过SSMS和存储过程两种方式来删除登录帐号。 1使用SQL Server Management Studio删除登录账号 启动SQL Server Management Studio进入【对象资源管理器】面板,再展开【安全性】选项,展开【登录名】选项,选中要删除的登录名,再右击,在弹出的对话框中,选择【删除】命令即可确定。 2使用存储过程删除登录账号 使用存储过程sp_droplogin可删除某一登录账号,其语法格式如下: sp_droplogin login,16.5.2 删除用户账号,在SQL Server 2008中可以通过SSMS和存储过程来实现用户帐号删除。 1使用SQL Server Management Studio删除用户账号 在【对象资源管理器】面板中,展开某个数据库,展开【安全性】|【用户】选项,右击要删除的用户,在弹出的对话框中单击【删除】命令。在弹出的对话框中,单击【确定】按钮,即可完成操作。 2使用sp_revokedbaccess可删除用户账号 语法格式为: sp_revokedbaccess name,16.6 数据库用户和角色管理,角色是由一组用户所构成的组,可以分为服务器角色和数据库角色。本节将对数据库用户与角色管理的内容展开学习。,16.6.1 服务器角色管理,服务器角色是负责管理与维护SQL Server 2008的组,一般只会指定需要管理服务器登录账号属于服务器角色。,16.6.2 .标准角色与应用程序角色,在SQL Server 2008中,数据库角色可分为两种:标准角色和应用程序角色。 1标准角色 标准角色是由数据库成员所组成的组,此成员可以是用户或者其他的数据库角色,在创建一个数据库时,系统默认创建10个固定的标准角色,在【对象资源管理器】面板中,展开【数据库】选项,再展开某个数据库的文件夹,然后展开【安全性】选项,展开【角色】下面的【数据库角色】选项 2应用程序角色 应用程序角色用来控制应用程序存取数据的,本身并不包括任何成员。在编写数据库的应用程序时,可以自定义应用程序角色,让应用程序的操作能用编写的程序来存取SQL Server的数据。也就是说,应用程序的操作者本身并不需要在SQL Server 2008上拥有登录账号以及用户账号,但是仍然可以存取数据库。,16.6.3 创建新的角色,在SQL Server 2008中,可以通过存储过程和SSMS实现角色的创建。 1使用存储过程创建角色 使用sp_addrole在当前数据库中创建新角色,其语法格式: sp_addrole role, owner 使用SQL Server Management Studio创建角色 在【对象资源管理器】面板中,选择【数据库】选项,展开【wj】数据库的文件夹,然后在选择展开【安全性】选项。选中【角色】右击,在弹出的对话框中,单击【新建数据库角色】命令,弹出【数据库角色-新建】对话框。在该窗口中,输入相应的角色名称“wj_role1”和所有者“dbo”,选择角色拥有的架构及添加相应的角色成员即可,16.6.4 删除角色,在SQL Server 2008中可以通过SSMS和存储过程来实现角色的删除。 1使用SQL Server Management Studio删除角色 在【对象资源管理器】对话框中,选中【数据库】选项,展开某一数据库。然后展开【安全性】选项,再展开【角色】选项,在某一角色上右击,在弹出的对话框中单击【删除】命令即可。 2使用存储过程删除角色 使用sp_droprole从当前数据库删除指定的角色,其语法为: sp_ droprole role,16.6.5 查看角色的属性,通过SQL Server 2008还可以对各类角色的属性进行查看。以在wj数据库中的db_owner角色为例说明,操作步骤如下。 (1)在【对象资源管理器】面板中,选择【数据库】选项,展开某个数据库的文件夹,然后选择展开【安全性】选项,选中【角色】选项展开。 (2)右击如db_ower角色,在弹出的对话框中,选择【属性】命令,则弹出【数据库角色属性】对话框,可以看到相应的属性。在此对话框中,单击【添加】按钮,可为角色添加一个用户,单击【删除】按钮,可从角色中删除被选中的用户,但是dbo代表数据库的所有者,因此删除角色的时候是不能被删除的,如图16.23所示。,16.6.6 用户和角色的权限问题,用户是否具有对数据库存取的能力,不仅要看其权限的设置,而且还要受到角色权限的限制。 1用户权限继承角色的权限 在数据库角色中可以包含许多用户,用户对数据库对象的存取也就继承角色的权限。假设用户wj_ user属于角色wj_rolel,角色wj_rolel已经取得对student表的SELECT权限,则用户wj_user也自动取得对student表的SELECT权限。如果wj_rolel对student表没有INSERT权限,而wj_user取得对student表的INSERT权限,则wj_user取得对student表的INSERT权限,则wj_user最终也取得对student表的INSERT权限。而拒绝是优先的,只要wj_rolel和wj_user中的任伺一个拒绝,则该权限就是拒绝的。,2用户分属于不同角色 如果一个用户分属于不同的数据库角色。例如,用户wj_user既属于角色wj_rolel,又属于角色wj_ role2,则用户wj_user的权限基本上是以wj_rolel和wj_role2的并集为准,但是只要有一个拒绝,那么用户wj_user
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号