您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 数据库原理-数据库安全性
数据库安全性问题的提出数据库的一大特点是数据可以共享数据共享必然带来数据库的安全性问题数据库系统中的数据共享不能是无条件的共享例:国家的数据泄露可能意味着国家机密的泄露,国家安全受到威胁;公司的数据泄露可能意味着公司商业秘密的泄露,公司利益受到威胁;数据库安全性如何限定有些用户只能访问特定的数据表或视图;如何使有些数据库只对指定的用户开放;以及如何阻止非法帐号登录?……这些问题都和数据库数据保护息息相关。本章主要内容计算机安全性概述数据库安全性控制使用T-SQL语句进行数据库安全性管理数据库其他安全机制一、计算机安全性概述计算机系统的安全性问题计算机系统安全性:为计算机系统建立和采取的各种安全保护措施,以保护计算机系统中的硬件、软件及数据,防止其因偶然或恶意的原因使系统遭到破坏,数据遭到更改或泄露等。•技术安全类•管理安全类•政策法律类数据的安全性是指保护数据以防止因不合法的使用而造成数据的泄露、更改和破坏。这就要采取一定的安全措施。数据库的安全性和计算机系统的安全性,包括计算机硬件、操作系统、网络系统等的安全性,是紧密联系、相互支持的。二、数据库安全性控制SQLServer2005的安全涉及要素:客户机的安全机制•网络安全机制的第一道防线服务器的安全机制•身份验证机制,决定了客户机能否登录到服务器上数据库的安全机制•决定用户可以使用哪个数据库数据对象的安全机制•最后才能访问数据对象,确定有什么样的访问权限(select等)1、SQLServer服务器的安全机制1)WindowsNT认证模式SQLServer数据库系统通常运行在WindowsNT服务器平台上,而NT作为网络操作系统,本身就具备管理登录、验证用户合法性的能力,因此WindowsNT认证模式正是利用了这一用户安全性和帐号管理的机制,允许SQLServer也可以使用NT的用户名和口令。在这种模式下,用户只需要通过WindowsNT的认证,就可以连接到SQLServer,而SQLServer本身也就不需要管理一套登录数据。2)混合认证模式在SQLServer认证模式下,SQLServer服务器要对登录的用户名进行身份验证。当采用混合模式时,SQLServer系统即允许windowsnt帐号登录,也允许使用SQLServer帐号登录。对于Windows9x系列的操作系统只能使用SQLServer认证模式,在WindowsNT或Windows2000上运行时,系统管理员设定登录认证模式的类型可为WindowsNT认证模式和混合模式。1)建立WindowsNT认证模式登录账号第一步:控制面板→管理工具→“计算机管理”→“本地用户和组”第二步:右击“用户”→“新用户”,输入用户名及密码,单击“创建”。第三步:打开SQLServer服务器目录树,选择“安全性”→“登录名”→“新建登录名”。第四步:在“常规”选项中选择用户名“WZ\wang”,选择Windows身份验证,单击“确定。在此输入用户名删除WindowsNT认证模式登录账号步骤如下:(1)以系统管理员身份进入企业管理器,并展开目录树;(2)在目录树的“登录名”节点下,选中待删除的名称“wang”,2)建立混合认证模式下SQLServer登录账号在WindowsNT或windows2000环境下,如果要使用SQLServer登录帐号登录SQLServer,首先应该将SQLServer的认证模式设置为混合模式。具体步骤为:(1)右击要登录的SQLServer服务器图标,选择菜单项“属性”,出现SQLServer服务器属性配置窗口。(2)选择“安全性”选项卡,选择身份验证方式为“SQLServer和Windows身份验证”,选择“确定”按钮。(3)打开对象资源管理器目录树,选择“安全性”→“登录”→“新建登录名”;(4)在“常规”选项中输入用户名“cheng”及密码;输入用户名cheng输入密码SQLServer2005密码复杂性策略:1.不得包含全部或部分(=3)用户帐号名;2.长度至少6个字符;3.密码包含4类字符:英文大写字母、小写字母、10个基本数字,非字母字符(!@等)(5)在“服务器角色”界面,暂时保持Public角色;(6)在“用户映射”界面,选中数据库“stu”,并分配数据库角色,如下图:测试SQL帐号能否连接到服务器:选择“新建连接”,在“连接到服务器”界面测试。2、SQLServer数据库的安全机制前面所介绍的都是服务器账号的管理,若一个用户登录到SQLServer服务器,还不能对数据库进行操作,因为系统管理员还没有为他在数据库中建立一个用户名;一个登录账号在不同的数据库中可以映射成不同的用户,从而可以具有不同的权限;每个数据库中都有两个默认的用户:dbo和guest。1)新建数据库用户连接对象资源管理器,选择目录树数据库“stu”→安全性→用户→“新建用户”。登录名和用户名登录名代表是服务器的权限;用户名代表是数据库上的权限;用户使用登录名登录服务器后,按照登录名的服务器权限可以操作服务器;使用登录名映射的用户名可以操作数据库。两者可相同也可不同,一般情况下选择相同。2)为数据库用户分配权限权限用来控制用户如何访问数据库对象。一个用户可以同时属于具有不同权限的多个角色,这些不同的权限提供了对同一数据库对象的不同的访问级别。SQLServer2005中的权限分为三种:语句权限:是否可以执行一些数据定义语句隐含权限:系统预定义的服务器角色或dbo和数据库对象拥有者所拥有的权限对象权限:※对象权限是指用户对数据库中的表、存储过程、视图等数据对象的操作权限。具体包括:对表和视图,是否可执行SELECT、INSERT、UPDATE、DELETE对表和视图的列,是否可执行SELECT、UPDATE对存储过程,是否可执行EXEC一个用户或角色的权限可以有以下三种存在形式:授权(Granted)回收(Revoked)拒绝(Deny)例1:把查询student表分配给数据库用户“wang”。例2:把查询course表及修改课程号的权限分配给数据库用户“cheng”。例3:把对表student的insert的权限分配给用户“cheng”,并允许将此权限再授予其他用户。例4:把对表student的Alter的权限同时分配给用户cheng及wang。3)创建及管理数据库角色数据库角色是为某一用户或某一组用户授予不同级别的管理或访问数据库以及数据库对象的权限,这些权限是数据库专有的,并且还可以使一个用户具有属于同一数据库的多个角色。SQLServer2005提供了三种类型的数据库角色固定数据库角色用户自定义数据库角色固定数据库角色创建用户自定义数据库角色创建数据库角色:登录到SQLServer服务器,选择数据库“stu”→安全性→角色→新建数据库角色;在常规选项中输入角色名称role及登录名cheng;对数据库角色赋予权限(如对学生表进行插入记录):在安全对象选项中单击“添加”,选择“特定数据对象”,选择对象类型(表),选择对象名称student;在安全对象选项中选择权限insert。对数据库角色添加数据库用户在常规选项中选择“添加用户”即可完成。例1:在数据库stu上定义一个数据库角色role,该角色中有数据库用户stu1、stu2,对数据表student可进行查询操作。具体操作步骤为:I.创建数据库用户stu1、stu2;II.创建数据库角色role并赋予查询表student的权限;III.将数据库用户加入数据库角色。连接对象资源管理器目录树,选择数据库“stu”→安全性→用户→“新建用户”(stu1和stu2)。i)创建数据库用户ii)创建数据库角色并赋予权限选择数据库“stu”→安全性→角色→新建数据库角色;在【常规】选项中输入角色名role及所有者cheng;在【安全对象】选项中单击“添加安全对象”,选择对象类型“表”,选中数据表”student”,单击确定;继续在【安全对象】选项中选择数据表student的权限(select);iii)将数据库用户加入数据库角色选择数据库“stu”→安全性→角色→数据库角色;双击角色名role;在”常规“选项中单击”添加角色成员“,依次选中数据库用户即可。注意:删除用户自定义的数据库角色时,首先应删除该角色的所有成员。三、使用T-SQL语句进行数据库安全性管理创建数据库用户为数据库用户分配权限创建数据库角色并指定权限给数据库角色添加用户1、创建数据库用户方法1:创建:CREATEUSERuser_name[FORLOGINlogin_name]删除:DROPUSERuser_name方法2:创建:sp_adduser[@loginame=]'login'[,[@name_in_db=]'user'][,[@grpname=]'role']删除:sp_dropuser[@name_in_db=]'name‘例1:请为数据库school创建用户stu1,混合方式登录,登录名为stu1.CREATEUSERstu1forloginstu1EXECsp_addlogin’stu1',’stu1','school'EXECsp_grantdbaccess’stu1',’stu1'例2:删除数据库stu创建用户stu1.DROPUSERstu1EXECsp_dropuser‘stu1’2、为数据库用户分配权限基本格式:GRANT权限[,权限]...ON对象类型[,对象名]...TO用户[,用户]...[WITHGRANTOPTION];例1:把查询Student表权限授给用户stu1;GRANTSELECTONStudentTOstu1例2:把对Student表和Course表的全部权限授予用户stu2和stu3;GRANTALLPRIVILEGESONStudent,CourseTOstu2,stu3例3:把查询Student表权限授所有用户;GRANTSELECTONStudentTOPublic例4:把查询Student表和修改学生学号的权限授给用户stu4,并允许他再将此权限授予其他用户;GRANTSELECT,UPDATE(Sno)ONStudentTOstu4WITHGRANTOPTION3、收回(取消)权限授予的权限可以由DBA或其他授权者用REVOKE语句收回。REVOKE语句的一般格式为:REVOKE权限[,权限]...[ON对象类型对象名]FROM用户[,用户]...;例1:把用户stu1查询student的权限收回;REVOKESELECTONStudentFROMstu1例2:收回所有用户查询Student表的权限;GRANTSELECTONStudentFROMPublic例3:把用户stu4对SC表的查询权限收回;GRANTSELECT,UPDATE(Sno)ONStudentFROMstu4CASCADE--权限收回的时候必须级联收回4、创建数据库角色并分配权限一、角色的创建:CREATEROLE角色名二、给角色授权:GRANT权限[,权限]…ON对象类型对象名TO角色[,角色]…三、将一个角色授予其他的角色或用户:GRANT角色1[,角色2]…TO角色3[,用户1]…[WITHADMINOPTION]--可将权限授予其他角色四、角色权限的收回:REVOKE权限[,权限]…ON对象类型对象名FROM角色[,角色]…定义角色创建角色R1EXECsp_addrole‘R1'删除角色Execsp_droprole‘R1‘为角色授权GRANTSELECTONStudentTOr15、给数据库角色添加用户添加成员:sp_addrolemember[@rolename=]'
本文标题:数据库原理-数据库安全性
链接地址:https://www.777doc.com/doc-3968415 .html