《数据库原理与应用教程(第3版):第11章 安全管理》由会员分享,可在线阅读,更多相关《数据库原理与应用教程(第3版):第11章 安全管理(68页珍藏版)》请在金锄头文库上搜索。
1、数据库原理与应用教程(第3版)国家“十一五”规划教材第11章安全管理11.1 安全控制概述安全控制概述 11.2 登登录名名11.3 数据数据库用用户11.4 权限管理限管理11.5 角色角色*211.1安全控制概述数据库的安全控制是指:在数据库应用系统的不同层次提供对有意和无意损害行为的安全防范。在数据库中对有意的非法活动可采用加密存、取数据的方法控制;对有意的非法操作可使用用户身份验证、限制操作权来控制;对无意的损坏可采用提高系统的可靠性和数据备份等方法来控制。*3安全控制模型*411.1.2SQLServer安全控制过程在在大型大型DBMS中中,用,用户访问数据数据库数数据要据要经过三个
2、安全三个安全认证过程程:确确认用用户是否是数据是否是数据库服服务器的合法用器的合法用户(具有(具有登登录名名););第二个第二个过程,确程,确认用用户是否是要是否是要访问的的数据数据库的合法用的合法用户(是(是数据数据库用用户););第三第三过程,确程,确认用用户是否具有合适的操是否具有合适的操作作权限(限(权限限认证)。)。*5安全认证三个过程示意图*611.2登录名SQL Server 2005的安全的安全权限是基于限是基于标识用用户身份的登身份的登录标识符(符(Login ID,登,登录ID),登),登录ID就是控制就是控制访问SQL Server 数据数据库服服务器的登器的登录名名。1
3、1.2.1 身份身份验证模式模式11.2.2 建立登建立登录名名11.2.3 删除登除登录名名*711.2.1身份验证模式SQL Server 2005支持两支持两类登登录名名:由由SQL Server负责验证的登的登录名;名;Windows网网络账户,可以是,可以是组用用户。SQL Server 2005相相应地提供了两种身份地提供了两种身份验证模式:模式:Windows身份身份验证模式模式混合混合验证模式模式*8Windows身份验证模式SQL Server将用将用户的身份的身份验证交交给了了 Windows操作系操作系统来完成。来完成。在在这种身份种身份验证模式下,模式下,SQL Ser
4、ver 将通将通过Windows操作系操作系统来来获得用得用户信信息,并息,并对登登录名和密名和密码进行重新行重新验证。使使用用Windows身身份份验证模模式式时,用用户必必须先先登登录到到Windows操操作作系系统,然然后后再再登登录到到 SQL Server。*9混合身份验证模式允允许Windows授授权用用户和和SQL授授权用用户登登录到到SQL Server数据数据库服服务器。器。如果希望允如果希望允许非非Windows操作系操作系统的用的用户也能登也能登录到到SQL Server数据数据库服服务器上,器上,则应该选择混合身混合身份份验证模式。模式。SQL Server身份身份验证
5、的登的登录信息保存在信息保存在SQL Server实例上例上;Windows身份身份验证的登的登录信息由信息由Windows和和SQL Server实例共同保存。例共同保存。*10设置身份验证模式系系统管理管理员根据系根据系统的的实际应用情况用情况设置置SQL Server的身份的身份验证模式。模式。可以在安装可以在安装SQL Server 时设置置也可以在安装完成后通也可以在安装完成后通过SSMS工具工具进行行设置置。*11设置方法在在SSMS的的对象象资源管理器中,在源管理器中,在SQL Server实例上右例上右击鼠鼠标,选择“属性属性”命令。命令。在在“服服务器属性器属性”窗口左窗口左
6、边的的“选择页”上,上,单击“安全性安全性”选项。在在“服服务器身份器身份验证”部分,可以部分,可以设置置该实例的身份例的身份验证模式。模式。*12设置身份验证模式窗口11.2.2建立登录名建立登建立登录名有两种方法名有两种方法:通通过SSMS工具工具实现,通通过T-SQL语句句实现。*14建立Windows身份验证的登录名使用使用Windows登登录名名进行的行的连接,被称接,被称为信任信任连接接。在在SSMS的的对象象资源管理器中,依次展开源管理器中,依次展开“安全性安全性”“登登录名名”节点。点。在在“登登录名名”节点上右点上右击鼠鼠标,选择“新新建登建登录名名”命令命令。*15单击“搜
7、索搜索”按按钮,弹出出 “选择用用户或或组”窗口窗口。*16单击“高高级”按按钮,弹出出“选择用用户或或组”窗口窗口。*17单击“立即立即查找找”按按钮,在下面将在下面将列出列出查找的找的结果果。*18建立SQLServer身份验证的登录名在在SSMS的的对象象资源管理器中,依次源管理器中,依次展开展开“安全性安全性”“登登录名名”节点。点。在在“登登录名名”节点上右点上右击鼠鼠标,选择“新建登新建登录名名”命令命令。在在弹出的窗口中出的窗口中输入登入登录名。名。*19*20新建登录窗口的一些选项说明强制密制密码过期期对该登登录名名强制制实施密施密码过期策略。必期策略。必须先先选中中“强制制实
8、施密施密码策略策略”才能启用此复才能启用此复选框。框。用用户在下次登在下次登录时必必须更改密更改密码首次使用新登首次使用新登录名名时,SQL Server 将提示用将提示用户输入新密入新密码。*21新建登录窗口的一些选项说明默默认数据数据库指定指定该登登录名名初始登初始登录到到SSMS时进入入的数据的数据库。默默认语言言指定指定该登登录名名登登录到到SQL Server时使用的默使用的默认语言。言。*22用T-SQL语句建立登录名CREATE LOGIN login_name WITH | FROM := WINDOWS WITH , := PASSWORD = password , ,. *
9、23建立登录帐户的T-SQL语句(续) := SID = sid | DEFAULT_DATABASE = database | DEFAULT_LANGUAGE = language := DEFAULT_DATABASE = database | DEFAULT_LANGUAGE = language*24示例例例1创建建SQL Server身份身份验证的登的登录帐户。登。登录名名为:SQL_User2,密,密码为:a1b2c3XY。CREATE LOGIN SQL_User2 WITH PASSWORD = a1b2c3XY*25示例例例2创建建Windows身份身份验证的登的登录帐户。
10、从。从Windows域域帐户创建建 HYJWin_User2 登登录帐户。CREATE LOGIN HYJWin_User2 FROM WINDOWS*26示例例例3创建建SQL Server身份身份验证的登的登录帐户。登。登录名名为:SQL_User3,密,密码为:AD4h9fcdhx32MOP。要求。要求该登登录帐户首次首次连接服接服务器器时必必须更改密更改密码。 CREATE LOGIN SQL_User3 WITH PASSWORD = AD4h9fcdhx32MOP MUST_CHANGE*2711.2.3删除登录名依次展开依次展开“安全性安全性”“登登录名名”节点点。在要在要删除的
11、除的登登录名名上右上右击鼠鼠标,选择“删除除”命令命令,弹出出删除除登登录名名属性窗口属性窗口。单击“确定确定”按按钮。*28删除登录帐户的T-SQL语句DROP LOGIN login_name不能不能删除正在使用的登除正在使用的登录帐户,也不,也不能能删除除拥有任何数据有任何数据库对象、服象、服务器器级别对象的登象的登录帐户。例例1删除除SQL_User2登登录帐户。 DROP LOGIN SQL_User2*2911.3数据库用户11.3.1 建立数据建立数据库用用户 11.3.2 删除数据除数据库用用户 *3011.3.1建立数据库用户展开要建立数据展开要建立数据库用用户的数据的数据库
12、。展开展开“安全性安全性”节点,在点,在“用用户”节点上点上右右击鼠鼠标,选择“新建用新建用户”命令命令。在在“登登录名名”部分指定将要成部分指定将要成为此数据此数据库用用户的登的登录名。名。单击“登登录名名”文本框右文本框右边的的 按按钮,可以,可以查找某登找某登录名。名。*31用T-SQL语句建立数据库用户CREATE USER user_name FOR | FROM LOGIN login_name user_name:指定在此数据:指定在此数据库中用于中用于识别该用用户的名称。的名称。LOGIN login_name:指定要映射:指定要映射为数据数据库用用户的的SQL Server登
13、登录名。名。如果省略如果省略FOR LOGIN,则新的数据新的数据库用用户将被映射到同名将被映射到同名的的SQL Server登登录名。名。*32示例让SQL_User2登登录帐户成成为当前当前数数据据库中的用中的用户,并且用,并且用户名同登名同登录名。名。CREATE USER SQL_User2*33示例本示例首先本示例首先创建名建名为SQL_JWC且具有密且具有密码的的SQL Server身份身份验证的服的服务器登器登录名,然后在名,然后在students数据数据库中中创建与此登建与此登录帐户对应的数据的数据库用用户JWC。CREATE LOGIN SQL_JWC WITH PASSWO
14、RD = jKJl3$nN09jsK84;GOUSE students;GOCREATE USER JWC FOR LOGIN SQL_JWC;*34注意服服务器登器登录名与数据名与数据库用用户是两个完全是两个完全不同的概念。不同的概念。具有登具有登录名的用名的用户可以登可以登录到到SQL Server实例上,而且只局限在例上,而且只局限在实例上例上进行行操作。操作。数据数据库用用户则是登是登录名以什么名以什么样的身份在的身份在该数据数据库中中进行操作,是登行操作,是登录名在具体数名在具体数据据库中的映射,中的映射,这个映射名(数据个映射名(数据库用用户名)可以和登名)可以和登录名一名一样,也
15、可以不一,也可以不一样*3511.3.2删除数据库用户删除除数据数据库用用户,实际就是解除了登就是解除了登录名名和数据和数据库用用户之之间的映射关系。的映射关系。删除数据除数据库用用户之后,其之后,其对应的登的登录名仍名仍然存在。然存在。删除方法:除方法:展开展开“数据数据库”“students”“安全安全性性”“用用户”节点。点。在要在要删除的用除的用户名上右名上右击鼠鼠标,选择“删除除”命令命令。*36用T-SQL语句删除数据库用户语句句DROP USER user_name其中其中user_name为要在此数据要在此数据库中中删除的用除的用户名。名。示例示例删除除SQL_User2用用户
16、。DROP USER SQL_User2*3711.4管理权限11.4.1 权限种限种类及用及用户分分类11.4.2 权限的管理限的管理*38权限种类对象权限对象权限是对表、视图等对象中数据的操作权。是对表、视图等对象中数据的操作权。语句权限语句权限创建建对象的象的权限限。隐含权限隐含权限指由指由SQL Server预定义的服务器角色、数据库角色、预定义的服务器角色、数据库角色、数据库拥有者和数据库对象拥有者所具有的数据库拥有者和数据库对象拥有者所具有的权限。权限。 *39数据数据库用用户的分的分类系系统管理管理员在数据在数据库服服务器上具有全部的器上具有全部的权限。限。SQL Server
17、2005的默的默认系系统管理管理员是是“sa”。数据数据库对象象拥有者有者创建数据建数据库对象的用象的用户即即为数据数据库对象象拥有者。有者。数据数据库对象象拥有者有者对其所其所拥有的有的对象具有全部象具有全部权限。限。普通用普通用户只具有只具有对数据数据库数据的增、数据的增、删、改、改、查权限。限。11.4.2权限的管理授予权限授予权限:允许用户或角色具有某种操作权:允许用户或角色具有某种操作权收回权限收回权限:不允许用户或角色具有某种操作:不允许用户或角色具有某种操作权,或者收回曾经授予的权限。权,或者收回曾经授予的权限。拒绝权限拒绝权限:拒绝某用户或角色具有某种操作:拒绝某用户或角色具有
18、某种操作权,既使用户或角色由于继承而获得这种操权,既使用户或角色由于继承而获得这种操作权,也不允许执行相应的操作。作权,也不允许执行相应的操作。对象象权限的管理限的管理可以通可以通过SSMS工具工具实现,也可以通也可以通过T-SQL语句句实现。用用SSMS工具工具实现展开某数据库下的“安全性”“用户”,在要授权的用户上右击鼠标,在弹出的菜单中选择“属性”命令,弹出数据库用户属性窗口。单击窗口左边“选择页”中的“安全对象”选项,出现“安全对象”窗口。数据库用户属性中的“安全对象”页单击“ “添加添加” ” 弹出出“ “添加添加对象象” ”窗窗口口“添加对象”窗口在在这个窗口中个窗口中可以可以选择
19、要添要添加的加的对象象类型。型。默默认是添加是添加“特定特定对象象”类用用T-SQL语句句实现权限管理限管理用于管理用于管理权限的限的T-SQL语句有三个:句有三个:GRANT:用于授予:用于授予权限。限。REVOKE:用于收回或撤消:用于收回或撤消权限。限。DENY:用于拒:用于拒绝权限限授权语句GRANT 对象象权限名限名 , ON 表名表名 | 视图名名 TO 数据数据库用用户名名| 用用户角色名角色名 , *47收权语句 REVOKE 对象象权限名限名 , ON 表名表名|视图名名 FROM 数据数据库用用户名名|用用户角色名角色名 , *48拒绝语句DENY 对象象权限名限名 , O
20、N 表名表名|视图名名 TO 数据数据库用用户名名|用用户角色名角色名 , *49示例例例1为用户为用户user1授予授予Student表的查询权。表的查询权。 GRANT SELECT ON Student TO user1例例2为用户为用户user1授予授予SC表的查询权和插入权。表的查询权和插入权。 GRANT SELECT,INSERT ON SC TO user1例例3收回用户收回用户user1对对Student表的查询权。表的查询权。 REVOKE SELECT ON Student FROM user1例例4拒绝拒绝user1用户具有用户具有SC表的更改权。表的更改权。DENY
21、UPDATE ON SC TO user1 *50语句权限管理用用SSMS实现:基本同:基本同对象象权限管理。限管理。用用T-SQL语句句实现。语句权限管理的T-SQL语句授权语句授权语句 GRANT GRANT 语句权限名语句权限名 , TO TO 数据库用户名数据库用户名 | | 用户角色名用户角色名 , *52语句权限管理收收权语句句 REVOKE REVOKE 语句权限名语句权限名 , FROM FROM 数据库用户名数据库用户名| |用户角色名用户角色名 , *53收权语句拒拒绝语句句 DENY DENY 语句权限名语句权限名 , TO TO 数据库用户名数据库用户名 | | 用户角
22、色名用户角色名 , *54示例例例5授予授予user1具有创建表的权限。具有创建表的权限。 GRANT CREATE TABLE TO user1例例6授予授予user1和和user2具有创建表和视图的权具有创建表和视图的权限。限。 GRANT CREATE TABLE, CREATE VIEW TO user1, user2例例7收回授予收回授予user1创建表的权限。创建表的权限。 REVOKE CREATE TABLE FROM user1例例8拒绝拒绝user1创建视图的权限。创建视图的权限。DENY CREATE VIEW TO user1*5511.5角色为便便于于对用用户及及权限
23、限的的管管理理,可可以以将将一一组具具有有相相同同权限限的的用用户组织在在一一起起,这一一组具有相同具有相同权限的用限的用户就称就称为角色角色(Role)。SQL Server 2005中,角色分中,角色分为: 固定的服固定的服务器角色器角色固定的数据固定的数据库角色角色用用户自定自定义的角色的角色介介绍 *5611.5.1建立用户定义的角色属于数据属于数据库一一级的角色。的角色。用用户可以根据可以根据实际的工作的工作职能情况定能情况定义自己的一系列角色,并自己的一系列角色,并给每个角色授予每个角色授予合适的合适的权限。限。 用用户自定自定义的角色的成的角色的成员可以是数据可以是数据库的用的用
24、户,也可以是用,也可以是用户定定义的角色。的角色。 *57用SSMS建立用户角色展开某数据展开某数据库下的下的“安全性安全性”“角色角色”节点,点,在在“角色角色”上右上右击鼠鼠标,在,在弹出的菜出的菜单中中选择“新新建建”下的下的“新建数据新建数据库角色角色”命令,或者是在命令,或者是在“角角色色”节点下的点下的“数据角色数据角色”上右上右击鼠鼠标,在,在弹出的出的菜菜单中中选择“新建数据新建数据库角色角色”命令,命令,在在弹出出“新建数据新建数据库角色角色”窗口中窗口中进行相行相应设置。置。用T-SQL语句建立用户定义的角色CREATE ROLE role_name AUTHORIZATI
25、ON owner_name role_name:待:待创建角色的名称。建角色的名称。 AUTHORIZATION owner_name:将:将拥有新角色的数据有新角色的数据库用用户或角色。如果未指定用或角色。如果未指定用户,则执行行CREATE ROLE的用的用户将将拥有有该角色。角色。*59示例例例1.创建建用用户自自定定义角角色色:CompDept,拥有有者者为创建建该角色的用角色的用户。CREATE ROLE CompDept;例例2.创建用建用户自定自定义角色:角色:InfoDept,拥有者有者为 SQL_User1。 CREATE ROLE InfoDept AUTHORIZATIO
26、N SQL_User1;*6011.5.2为用户定义的角色授权对用用户角色的授角色的授权的方法的方法与与为数据数据库用用户授授权方法方法完全一完全一样。例例3.为Software角色授予角色授予students数据数据库中中Student表的表的查询权。 GRANT SELECT ON Student TO Software例例4.为Admin角色授予角色授予students数据数据库中中Student表的增、表的增、删、改、改、查权。 GRANT SELECT,INSERT,DELETE,UPDATE ON Student TO Admin*6111.5.3为用户定义的角色添加成员角色中的成
27、角色中的成员自自动具有角色的全部具有角色的全部权限,因限,因此在此在为角色授角色授权之后,就需要之后,就需要为角色添加成角色添加成员了。了。为角色添加成角色添加成员可以用可以用SSMS工具工具实现,也可,也可以同以同T-SQL语句句实现。用SSMS工具实现展开某数据展开某数据库下的下的“安全性安全性”“角色角色”节点,点,在要添加成在要添加成员的角色上右的角色上右击鼠鼠标,在,在弹出的出的菜菜单中中选择“属性属性”命令,命令,弹出数据出数据库角色角色属性窗口。属性窗口。单击“添加添加”按按钮,弹出出 “选择数据数据库用用户或角色或角色”窗口。窗口。进行相行相应选择用用T-SQL语句句实现使用使
28、用sp_addrolemember系系统存存储过程(存程(存储过程程是一段可是一段可调用用执行的代行的代码): sp_addrolemember rolename = role, membername = security_accountrolename = role:当前数据:当前数据库中的数据中的数据库角色的名称。角色的名称。membername = security_account :要添加到角色中的数据:要添加到角色中的数据库用用户名。名。security_account可以是数据可以是数据库用用户、数据、数据库角色、角色、Windows 登登录名或名或Windows组。示例例例5将将
29、Windows登登录名名HYJWin_User1添加到添加到 当前数据当前数据库的的Software角色中。角色中。 EXEC sp_addrolemember Software, HYJWin_User1 例例6将将SQL_User2添加到当前数据添加到当前数据库的的Admin角色中(假角色中(假设该角色已存在)。角色已存在)。 EXEC sp_addrolemember Admin, SQL_User211.5.4删除用户定义角色中的成员当不希望某用当不希望某用户是某角色中的成是某角色中的成员时,可将,可将用用户从角色中从角色中删除。除。从角色中从角色中删除成除成员可以通可以通过SSMS工
30、具工具实现,也可以通也可以通过T-SQL语句句实现。用SSMS工具实现展开某数据展开某数据库下的下的“安全性安全性”“角色角色”节点,点,在要添加成在要添加成员的角色上右的角色上右击鼠鼠标,在,在弹出的出的菜菜单中中选择“属性属性”命令,命令,弹出数据出数据库角色角色属性窗口。属性窗口。在窗口中,在窗口中,选中要中要删除的成除的成员名,名,单击“删除除”按按钮即可从角色中即可从角色中删除将所除将所选成成员。用T-SQL语句实现 sp_droprolemember rolename = role , membername = security_accountrolename = role:将从中:将从中删除成除成员的数据的数据库角色名。角色名。membername =security_account:被从数据:被从数据库角色中角色中删除的除的用用户名。名。例例7删除除Admin角色中的角色中的SQL_User2成成员。 EXEC sp_droprolemember Admin,SQL_User2*68