《数据库原理及应用(第二版)》课件 第8章 数据库系统的安全_第1页
《数据库原理及应用(第二版)》课件 第8章 数据库系统的安全_第2页
《数据库原理及应用(第二版)》课件 第8章 数据库系统的安全_第3页
《数据库原理及应用(第二版)》课件 第8章 数据库系统的安全_第4页
《数据库原理及应用(第二版)》课件 第8章 数据库系统的安全_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第8章

数据库系统安全本章要点◆ SQLServer安全控制机制。◆ SQLServer登录账号、角色、用户和访问权限的管理。◆MySQL安全控制机制。◆MySQL登录账号、角色、用户和访问权限的管理。2一、概述31、数据库系统的安全控制模型对数据库管理系统正常运行而进行的维护权限对数据库中的对象和数据的操作权限对数据库对象的权限对数据库数据的操作权用户按其操作权限的大小可分为数据库系统管理员数据库对象拥有者普通用户4一、概述2、

数据库权限和用户分类建立在认证和访问许可机制上的身份验证访问权验证操作权验证SQLServer登录账户的来源有两种:Windows授权用户:来自于Windows的用户或组;SQL授权用户:来自于非Windows的用户,我们也将这种用户称为SQL用户。2025/6/817:115一、概述3、SQLServer的安全机制(1)Windows身份验证模式

2025/6/817:116一、概述3、SQLServer的安全机制Windows身份验证模式允许用户通过Windows家族的用户进行连接。只需选择Windows身份验证模式,而无需再提供登录账号和密码,系统会从用户登录到Windows时提供的用户名和密码中查找当前用户的登录信息,以判断其是否是SQLServer的合法用户。2025/6/817:117一、概述3、SQLServer的安全机制在该认证模式下,用户在连接SQLServer时必须提供登录名和登录密码,这些登录信息存储在系统表syslogins中,与操作系统的登录账号无关。(2)SQLServer身份验证模式2025/6/817:118一、概述3、SQLServer的安全机制在混合认证模式下,Windows认证和SQLServer认证这两种认证模式都是可用的。在使用客户应用程序连接SQLServer服务器时,如果没有传递登录名和密码,SQLServer将自动认定用户要使用Windows身份验证模式,并且在这种模式下对用户进行认证。如果传递了登录名和密码,则SQLServer认为用户要使用SQLServer身份验证模式,并将所传来的登录信息与存储在系统表中的数据进行比较。如果匹配,就允许用户连接到服务器,否则拒绝连接。(3)混合验证模式设置身份验证模式2025/6/817:119一、概述4、MySQL的安全机制MySQL中主要包含root用户和普通用户。root用户拥有一切权限,普通用户只能拥有部分权限。在MySQL的系统数据库mysql中存储着权限表,最主要有mysql.user、mysql.db、table_priv、columns_priv、procs_priv表。user表记录了允许连接到服务器的账号信息,里面的权限是全局级的。db表存储了用户对某个数据库的操作权限,决定用户能从哪个主机存取哪个数据库。tables_priv表用来对表设置操作权限,columns_priv表用来对表的某一列设置权限。procs_priv表用来对存储过程和存储函数设置操作权限。user表中的部分数据tables_priv表中的部分数据2025/6/817:1110一、概述4、MySQL的安全机制用户通过登录验证后,MySQL将对用户提交的每项数据库操作进行权限检查,判断用户是否具有足够的权限执行相应操作。2025/6/817:1111二、用户管理1、SQLServer登录名管理在SQLServer中,必须要有登录名才能连接到数据库服务器。sa为超级管理员登录名。系统登录账号新建对话框“常规”页2025/6/817:1112二、用户管理2、SQLServer用户管理在SQLServer中,数据库用户与登录名是两个不同的概念。一个合法的登录名只表明该登录名通过了Windows认证或SQLServer认证,但不能表明其可以对数据库数据和数据对象进行某种或某些操作,所以一个登录名总是与一个或多个数据库用户相对应,这样才可以访问数据库。例如,登录账号sa自动与每一个数据库用户dbo相关联。在SQLServer中创建数据库用户2025/6/817:1113二、用户管理3、MySQL用户管理在MySQL中,不需要像SQLServer一样单独创建一个登录名,用户名即登录名。可以通过可视化界面对用户进行管理。在MySQL中创建数据库用户(1)创建用户2025/6/817:1114二、用户管理3、MySQL用户管理MySQL和SQLServer等关系型数据库都提供命令方式创建用户,格式大同小异,以下是在MySQL中创建用户的语法格式:CREATEUSER[IFNOTEXISTS]'用户名'[@'主机地址或标识'][IDENTIFIED[WITHAUTH_PLUGIN]BY'用户口令'|RANDOMPASSWORD][WITHresource_option[resource_option]...][password_option];说明如下:(1)IFNOTEXISTS为可选参数,表示如果用户名不存在,则创建用户,否则不创建用户。(2)使用CREATEUSER语句可一次性创建多个用户,不同用户的配置信息使用逗号分隔。(3)创建用户时,可指定用户访问数据库时允许的主机信息,如主机标识或名称、主机地址或特殊符号,’%’表示任意位置。(4)IDENTIFY子句使用WITHAUTH_PLUGIN指定口令加密策略。通过BY关键字指明口令明文或随机口令RANDOMPASSWORD。(5)可选子句[WITHresource_option[resource_option]...]使用resource_option配置用户对数据库资源使用约束。(6)可选子句[password_option]设定口令策略。(7)CREATEUSER语句还提供了其他参数,如用户锁、用户连接安全策略等信息。(1)创建用户2025/6/817:1115二、用户管理3、MySQL用户管理【例8-1】创建一个只允许在MySQL所在服务器上登录的账户student,密码为student123,其他配置信息保持默认。CREATEUSERIFNOTEXISTS'student'@'localhost'IDENTIFIEDBY'student123';【例8-2】创建一个允许在任意机器上登录的账户user1,密码为Evt@123,其他配置信息保持默认。CREATEUSER'user1'@'%'IDENTIFIEDBY'Evt@123';(1)创建用户2025/6/817:1116二、用户管理3、MySQL用户管理【例8-3】创建一个只允许在192.168.1.100机器上登录的账户user2,密码为Small@123,其他配置信息保持默认。CREATEUSER'user2'@'192.168.1.100'IDENTIFIEDBY'Small@123';创建用户也可以直接在MySQL数据库的user表中添加数据,添加成功后使用如下指令使用户生效:FLUSHPRIVILEGES;(1)创建用户2025/6/817:1117二、用户管理3、MySQL用户管理可以使用RENAMEUSER语句重命名用户账号,语法格式如下:RENAMEUSER'原用户信息'TO'新用户信息'[,'原用户信息'TO'新用户信息']...【例8-4】

将已有用户stud重命名为student,将主机信息从localhost修改为%。RENAMEUSER'stud'@'localhost'to'student'@'%';(2)重命名用户2025/6/817:1118二、用户管理3、MySQL用户管理可以使用ALTERUSER语句修改用户口令,其语法格式如下:ALTERUSER'用户名'@'主机信息'IDENTIFIEDBY'新密码';【例8-5】将主机信息为localhost、用户名为zw3的用户口令修改为AX02t7964。ALTERUSER'zw3'@'localhost'IDENTIFIEDBY'AX02t7964';(3)修改用户口令2025/6/817:1119二、用户管理3、MySQL用户管理可以使用DROPUSER语句删除用户,其语法格式如下:DROPUSER'用户名'@'主机信息'[,'用户名'@'主机信息']【例8-6】删除主机信息为localhost用户名为student的用户DROPUSER'zw3'@'localhost';也可以在系统表user中删除用户。【例8-7】删除主机信息为localhost、用户名为student的用户。DELELEFROMmysql.user

WHEREUser='student'andHost='localhost';直接从user表中删除数据后应使用“FLUSHPRIVILEGES”语句使操作生效。(4)删除用户2025/6/817:1120三、管理权限当用户成为数据库中的合法用户之后,除了具有一些系统表的查询权之外,并不对数据库中的对象具有任何操作权。因此,下一步就需要为数据库中的用户授予适当的操作权。1.对象权限对象权限是指用户对数据库中的表、视图、存储过程等对象的操作权,相当于数据库操作语言(DML)的语句权限,例如是否允许查询、增加、删除和修改数据等。具体包括:(1)对于表和视图,可以使用SELECT、INSERT、UPDATE、DELETE、REFERENCES等权限。(2)对于存储过程,可以使用EXECUTE权限、CONTROL和查看等权限。(3)对于标量函数,主要有执行、引用、控制等权限。(4)对于表值型函数,有插入、更新、删除、查询和引用等权限。2.语句权限语句权限相当于数据定义语言(DDL)的语句权限,这种权限专指是否允许执行语句CREATETABLE、CREATEPROCEDURE、CREATEVIEW等与创建数据库对象有关的操作。1、

权限管理简介2025/6/817:1121权限的管理包含如下三方面内容:(1)授予权限(GRANT):允许用户或角色具有某种操作权。(2)撤销权限(REVOKE):不允许用户或角色具有某种操作权,或者收回曾经授予的权限。(3)拒绝访问(DENY):拒绝某用户或角色具有某种操作权,即使用户或角色由于继承而获得这种操作权,也不允许执行相应的操作。三、管理权限1、

权限管理简介2025/6/817:1122权限的管理包含如下三方面内容:(1)授予权限(GRANT):允许用户或角色具有某种操作权。(2)撤销权限(REVOKE):不允许用户或角色具有某种操作权,或者收回曾经授予的权限。(3)拒绝访问(DENY):拒绝某用户或角色具有某种操作权,即使用户或角色由于继承而获得这种操作权,也不允许执行相应的操作。三、管理权限1、

权限管理简介2025/6/817:1123SQLServer可使用可视化工具和SQL命令管理数据库用户权限。三、管理权限2、

SQLServer权限管理安全对象分配权限2025/6/817:1124MySQL、SQLServer等数据库都可以使用GRANT命令授予用户或角色权限,其语法格式大同小异,MySQL的GRANT命令的基本语法如下:GRANT权限名称[(字段列表)][,权限名称[(字段列表)]]...ON授权层次及对象TO'用户名'@'主机信息'[,'用户名'@'主机信息']...[WITHGRANTOPTION];相关说明如下:①可以一次性将多个权限赋予用户,不同权限名称使用逗号分隔。②ON子句用于指明授权级别及对象,常见形式包括:*.*:服务器级别权限(全局权限),执行成功后修改mysql.user表中记录。db_name.*:数据库级别权限,执行成功后修改mysql.db表中记录。db_name.table_name:或列级别权限,授予表级别权限将修改mysql.tables_priv表中记录,授予列级别权限将修改mysql.columns_priv表中记录。db_name.routine_name:存储过程级别权限,执行成功后修改mysql.routines_priv表中记录。③TO子句用于指明授予的用户或角色,可以将权限授予多个用户。④WITHGRANTOPTION指示被授权者在获得指定权限的同时还可以将指定权限授予其他主体。三、管理权限3、MySQL权限管理(1)授予权限2025/6/817:1125【例8-8】

将选修表的查询权限授予用户zhangsan。命令如下:GRANTSELECTONscTOzhangsan【例8-9】

将学生表的查询、更新、删除权限授予用户zhangsan。命令如下:GRANTSELECT,UPDATE,DELETEONstudentTOzhangsan【例8-10】

将学生表的查询权限授予用户zhangsan,并且允许zhangsan把此权限授予其他用户。命令如下:GRANTSELECTONstudentTOzhangsanWITHGRANTOPTION三、管理权限3、MySQL权限管理(1)授予权限2025/6/817:1126【例8-11】为user1用户赋予数据库服务器的所有使用权限(ALL),并允许权限由user1授予其他用户。命令如下:GRANTALLON*.*to'user1'@'%'WITHGRANTOPTION【例8-12】为user1用户赋予stu数据库上对象的查找、创建数据表和插入数据权限(SELECT、CREATE、INSERT),并不允许权限由user1授予其他用户。GRANTSELECT,CREATE,INSERTONstu.*to'user1'@'%'【例8-13】为user1用户赋予toyuniverse数据库上玩具表toys的查找、插入、更新和删除数据权限(SELECT、INSERT、UPDATE、DELETE),并不允许权限由user1授予其他用户。GRANTSELECT,INSERT,UPDATE,DELETEONtoyuniverse.toysTO'user1'@'%'三、管理权限3、MySQL权限管理(1)授予权限2025/6/817:1127【例8-14】为user2用户赋予toyuniverse数据库中订单表orders上cOrderNo字段和dOrderDate字段的查找数据权限(SELECT),并不允许权限由user2授予其他用户。GRANTSELECT(dOrderDate,dOrderDate)ONtoyuniverse.ordersTO'user2'@'192.168.1.100';【例8-15】为user3用户赋予在toyuniverse数据库中创建表和创建视图的权。GRANTCREATE,CREATEviewONtoyuniverse.*touser3三、管理权限3、MySQL权限管理(1)授予权限2025/6/817:1128使用GRANT语句的其他注意事项:①MySQL8不允许为不存在用户授权,所以不能使用GRANT语句达到授权同时创建用户的目的,必须先创建用户,然后才能授权;②对于字段级别权限,由于只能对字段进行查询、插入和更新操作,所以字段级别权限只支持SELECT、INSERT和UPDATE权限;③使用GRANT语句授予不同级别的权限,将在相应的权限表格中,创建或修改相应记录。三、管理权限3、MySQL权限管理(1)授予权限2025/6/817:1129如果要查看用户的权限,可以使用SHOWGRANTS语句,格式如下:SHOWGRANTSFOR'用户名'@'主机信息';【例8-16】查看user1用户的权限授予情况。SHOWGRANTSFOR'user1'@'%';如果要查看当前用户的权限授予情况,可以使用以下语句:SHOWGRANTSFORCURRENT_USER;三、管理权限3、MySQL权限管理(2)查看权限2025/6/817:1130REVOKE命令用于撤销以前授予的权限,并不禁止用户、角色通过别的方式获得的权限。REVOKE命令的语法如下:REVOKE权限名称[(字段列表)][,权限名称[(字段列表)]]...ON回收权限的层次及对象FROM'用户名'@'主机信息'[,'用户名'@'主机信息']...;【例8-17】回收user1用户对stu数据库中对象的DELETE权限和SELECT权限。命令如下:REVOKESELECT,DELETE

ONstu.*FROM'user1'@'%';三、管理权限3、MySQL权限管理(3)回收权限2025/6/817:1131角色(Role)是对权限集中管理的一种机制,是权限的集合。通常根据特定需要,将一系列权限集中在一起构成角色。三、管理权限4、

角色表1的查询权表2的删除权表2的删除权表3的查询权表4的插入权用户1用户2用户3用户4角色1角色2可以将用户添加到角色中,使其成为角色中的成员,从而具有角色的权限。一个用户可以分配多个角色,也允许一个角色分配给多个用户。2025/6/817:1132创建角色的语法格式如下:CREATEROLE'角色名称'【例8-18】创建一个学生角色teacher。CREATEROLEteacher三、管理权限4、

角色(1)创建角色2025/6/817:1133可使用Grant语句将权限赋予角色。【例8-19】为教师角色teacher授予服务器级别全局权限。GRANTALLPREVILEGEON*.*TOteacher;【例8-20】为学生角色stu授予sc表的查找SELECT、插入数据INSERT、更新数据UPDATE和删除数据DELETE权限。GRANTSELECT,INSERT,UPDATE,DELETEONscTOstu;三、管理权限4、

角色(2)为角色授权2025/6/817:1134可使用GRANT语句为用户分配

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论