您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > SQL-Server-2008数据库的安全性管理
第9章SQLServer2008数据库的安全性管理9.0安全性问题黑客公开CSDN网站数据库600余万用户资料泄密(2011)9.0安全性问题如家汉庭酒店2000万开房数据1.71G/BAK,792M/CSV9.0安全性问题携程网全面瘫痪疑似数据库物理删除(2015)9.0安全性问题第一个安全性问题是:当用户登录数据库系统时,如何确保只有合法的用户才能登录到系统中呢?第二个安全性问题是:当用户登录到系统中,可以执行哪些操作,使用哪些对象和资源呢?9.1数据库安全性概述SQLServer的安全性管理是建立在认证(authentication)和访问许可(permission)这两种机制上的。用户访问数据库权限的设置是通过用户账号来实现的。角色简化了安全性管理。9.1数据库安全性概述所以在SQLServer的安全模型中包括以下几部分:SQLServer身份验证登录账户数据库用户角色权限架构9.1数据库安全性概述9.1.1身份验证简介SQLServer支持两种模式的身份验证:Windows验证模式混合验证模式9.1数据库安全性概述9.1.2验证模式的修改当安装SQLServer时,可以选择SQLServer的身份验证类型。安装完成之后也可以修改认证模式。修改步骤如下。(1)打开SQLServerManagementStudio。(2)在要更改的服务器上鼠标右键单击,在快捷菜单中选择属性,弹出服务器属性对话框。(3)单击左侧列表中的“安全性”项,出现“安全性”页面,如图15.1所示。在图中修改身份验证。9.1数据库安全性概述图9.1身份验证9.2管理服务器登录1.创建Windows登录账户(1)在“对象资源管理器”中,单击树型目录中的“安全性”节点,如图9.2所示。9.2管理服务器登录(2)鼠标右键单击“安全性”的子节点“登录名”,在快捷菜单中选择“新建登录名…”,出现“登录名-新建”对话框,如图15.3所示。9.2管理服务器登录(3)在“登录名”编辑框中输入登录名称,输入的登录名必须是已存在的Windows登录用户。可以单击“搜索…”按钮,出现登录“选择用户和组”对话框,如图15.4所示。在对象名称编辑框中输入用户或组的名称,单击“检查名称”按钮检查对象是否存在。输入完成,单击“确定”按钮关闭选择用户或组对话框。9.2管理服务器登录(4)确认选择的是“Windows身份验证”。指定账户登录的默认数据库。(5)单击窗口左侧列表中的“服务器角色”节点,指定账户所属服务器角色。(6)单击窗口左侧列表中的“用户映射”节点,右侧出现用户映射页面。可以查看或修改SQL登录账户到数据库用户的映射。选择此登录账户可以访问的数据库,对具体的数据库,指定要映射到登录名的数据库用户(默认情况下,数据库用户名与登录名相同)。指定用户的默认架构,首次创建用户时,其默认架构是dbo。(7)设置完成单击“确定”按钮提交更改。9.2管理服务器登录2.创建SQLServer登录账户一个SQLServer登录账户名是一个新的登录账户,该账户和Windows操作系统的登录账户没有关系。(1)打开新建登录名对话框,选择“SQLServer身份验证”,输入登录名,密码和确认密码,并选择缺省数据库,如图所示。9.2管理服务器登录(2)设置服务器角色和用户映射,请参考“创建Windows登录账户”的步骤5和步骤6。9.2管理服务器登录3.登录账户管理创建登录账户之后,在图9.2所示服务器安全性展开登录名节点上,鼠标右键单击相应的账户,出现快捷菜单,如图15.6所示,如果要修改该登录账户,选择属性菜单;如要删除该登录账户,则选择删除菜单。9.2管理服务器登录9.2.2使用Transact-SQL管理登录账户在Transact-SQL中,管理登录账户的SQL语句有:CREATELOGIN、DROPLOGIN、ALTERLOGIN。下面简要说明如何使用T-SQL来创建和维护登录账户。1.新建登录账户CREATELOGIN其语法格式为:CREATELOGINlogin_name{WITHoption_list1|FROMsources}9.2管理服务器登录【例9.2】创建带密码的登录名“test”。CREATELOGINtestWITHPASSWORD=‘123'2.删除登录账户DROPLOGIN其语法格式为:DROPLOGINlogin_name【例9.3】删除登录账户“test”。DROPLOGINtest9.2管理服务器登录3.更改登录账户ALTERLOGIN其语法格式为:ALTERLOGINlogin_name{status_option|WITHset_option[,...]}【例9.5】将“test”登录密码更改为456。ALTERLOGINtestWITHPASSWORD=456'【例9.6】将登录名“test”更改为“et”。ALTERLOGINtestWITHNAME=et9.3角色和用户管理9.3.1角色管理简介角色等价于Windows的工作组,将登录名或用户赋予一个角色,角色具有权限,登录名或用户作为角色成员,从而继承了所属角色的权限。如图所示。登录名或用户角色权限9.3角色和用户管理在SQLServer中角色分为服务器角色和数据库角色。而数据库角色又分为固有数据库角色、用户自定义数据库角色和应用程序角色。1.服务器角色服务器角色内建于SQLServer,其权限无法更改,每一个角色拥有一定级别的数据库管理职能,如图9.8所示。9.3角色和用户管理服务器角色包括以下几种。bulkadmin:可以运行BULKINSERT语句。dbcreator:可以创建任何数据库。diskadmin:管理磁盘文件。processadmin:可以终止SQLServer实例中运行的进程。securityadmin:管理登录名的密码。serveradmin:可以更改服务器范围的配置选项和关闭服务器。setupadmin:添加和删除链接服务器,并且也可以执行某些系统存储过程。sysadmin:可以在服务器中执行任何活动。9.3角色和用户管理2.固有数据库角色固有数据库角色是指这些角色的数据库权限已被SQLServer预定义,不能对其权限进行任何修改,并且这些角色存在于每个数据库中,如图9.9所示。9.3角色和用户管理固有数据库角色包括以下几种。db_accessadmin:可以为Windows登录账户、Windows组和SQLServer登录账户添加或删除访问权限。db_backupoperator:可以备份该数据库。db_datareader:可以读取所有用户表中的所有数据。db_datawriter:可以在所有用户表中添加、删除或更改数据。db_ddladmin:可以在数据库中运行任何数据定义语言(DDL)命令。db_denydatareader:不能读取数据库内用户表中的任何数据。9.3角色和用户管理db_denydatawriter:不能添加、修改或删除数据库内用户表中的任何数据。db_owner:可以执行数据库的所有配置和维护活动。db_securityadmin:可以修改角色成员身份和管理权限。public:当添加一个数据库用户时,它自动成为该角色成员,该角色不能删除,指定给该角色的权限自动给予所有数据库用户。db_owner和db_securityadmin角色的成员可以管理固有数据库角色成员身份;但是,只有db_owner数据库的成员可以向db_owner固有数据库角色中添加成员。9.3角色和用户管理3.用户自定义数据库角色当打算为某些数据库用户设置相同的权限,但是这些权限不等同于预定义的数据库角色所具有的权限时,就可以定义新的数据库角色来满足这一要求,从而使这些用户能够在数据库中实现某些特定功能。9.3角色和用户管理9.3.2角色的管理1.使用ManagementStudio管理角色(1)为服务器角色添加登录账户。(2)为固有数据库角色添加成员。(3)创建用户自定义角色。9.3角色和用户管理9.3.3用户管理简介用户对数据的访问权限以及对数据库对象的所有关系都是通过用户账号来控制的,用户账号总是基于数据库的,即两个不同数据库中可以有两个相同的用户账号。在数据库中,用户账号与登录账号是两个不同的概念,一个合法的登录账号只表明该账号通过了Windows认证或SQLServer认证,但不能表明其可以对数据库数据和数据对象进行某种操作。通常而言,数据库用户账号总是与某一登录账号相关联。9.3角色和用户管理(1)检查该登录用户是否有合法的用户名,如果有合法用户名,则允许其以用户名访问数据库,否则执行步骤2。(2)SQLServer检查是否有guest用户,如果有,则允许登录用户以guest用户来访问数据库,如果没有,则该登录用户被拒绝。用户通过Windows认证或SQLServer认证而成功登录到SQLServer之后的过程如下:9.3角色和用户管理9.3.4用户的管理1.使用ManagementStudio管理用户(1)在ManagementStudio对象资源管理器中,扩展指定的数据库节点,直到看到用户节点,如右图所示。(2)鼠标右键单击用户子节点,在弹出菜单中选择“新建用户…”,弹出“新建数据库用户”对话框,如图9.19所示。在用户名编辑框中输入用户名。9.3角色和用户管理9.3角色和用户管理2.使用Transact-SQL管理用户使用Transact-SQL管理用户的语句有CREATEUSER,DROPUSER,ALTERUSER。(1)创建用户:CREATEUSERCREATEUSER语法格式为:CREATEUSERuser_name[{{FOR|FROM}{LOGINlogin_name|CERTIFICATEcert_name|ASYMMETRICKEYasym_key_name}|WITHOUTLOGIN][WITHDEFAULT_SCHEMA=schema_name]9.3角色和用户管理【例9.13】首先创建名为“Teacher”且具有密码的服务器登录名,然后在数据库“TEACH”中创建对应的数据库用户“WangWei”。CREATELOGINTeacherWITHPASSWORD=‘123’;CREATEUSERWangWeiFORLOGINTeacher9.3角色和用户管理(2)更改用户名或更改其登录的默认架构ALTERUSER其语法格式为:ALTERUSERuser_nameWITHset_item[,...n]set_item::=NAME=new_user_name|DEFAULT_SCHEMA=schema_name【例9.15】更改数据库用户的名称。ALTERUSERWangWeiWITHNAME=Wangjf9.3角色和用户管理【例9.16】更改用户的默认架构。ALTERUSERWangWeiWITHDEFAULT_SCHEMA=Admining(3)删除用户:DROPUSER其语法格式为:DROPUSERuser_name【例9.17】删除用户“WangWei”。DROPUSERWangWei9.4SQLServer2008权限权限管理指将安全对象的权限授予主体,取消或禁止主体对安全对象的权限。SQLServer通过验证主体是否已获得适当的权限来控制主体对安全对象执行的操作。1.主体“主体”是可以请求SQLServer资源的个体、组和过程。主体分类如表9.1所示。主体内容Windows级别的主体Windows域登录名、Windows本地登录名SQLServer级别的主体SQLServer登录名数据库级别的主体数据库用户、数据库角色、应用程序角色9.4SQLServer2008权限2.安全对象安全对象是SQLServ
本文标题:SQL-Server-2008数据库的安全性管理
链接地址:https://www.777doc.com/doc-4992927 .html