版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目10“在线商店”项目
的安全管理任务1理解数据库安全任务1理解数据库安全10.1.1权限分类10.1.2授权过程任务2用户管理任务3权限管理任务4“在线商店”项目的安全数据库安全概述数据库安全是指允许合法用户的合法访问,拒绝非法用户的访问和合法用户的非法访问,从而保护数据不被泄露、不被篡改、不被破坏。简单地说,就是允许哪个用户对什么数据进行什么操作哪个用户MySQL提供了用户账号,只允许合法的用户登录从什么途径MySQL对用户的访问途径做出限制,例如是否允许用户远程登录对什么资源指定可以访问的资源,资源是指数据库、表、列、存储函数或存储过程。例如可以访问哪一个数据库、哪张表,哪一列,或运行哪个存储函数或存储过程做什么操作指定具体的操作,例如查询数据,还是更新、插入或删除数据,对存储函数和存储过程,则指定是否有权限运行微课:10-1数据库安全10.1.1权限分类针对不同的数据库对象,权限也有不同,例如针对表是否有权查询、插入数据、更新数据和删除数据。表10.1所示是3大类(表、列和存储例程)权限设置权限信息所有安全相关的信息保存在系统数据库mysql中用户信息保存在系统数据库mysql中的user表授权信息保存在系统数据库mysql中的tables_priv
表(以及columns_priv、procs_priv表)select*frommysql.tables_priv;select*frommysql.user;10.1.2授权过程权限管理的原则是“拥有授权即可为,没有授权不可为”。就是说,任何一项权限都必须有明确的授权,否则就是没有权限。1.身份验证身份验证就是用户登录的验证过程MySQL客户端包括命令行客户端(Windows或Linux版)图形界面客户端(dbForge等)应用程序连接(PHP代码等)本地登录还是远程登录本地登录如果MySQL客户端和MySQL服务器在同一台计算机上,就是本地登录远程登录如果MySQL客户端和MySQL服务器不在同一台计算机上,就是远程登录用户MySQL客户端MySQL服务器10.1.2授权过程(续)2.权限核实MySQL是一个多用户的数据库管理系统,允许不同的用户登录,不同的用户具有不同的权限当一个用户登录后,需要核实该用户的权限,这个过程分为3个层次全局层次在用户表(user)中查询权限,如果获得权限,即认可这个授权,如果没有获得权限,则要进行数据库层次的授权。数据库层次在数据库表(db)中查询针对该数据库的权限,如果获得权限,即认可这个授权,如果没有获得权限,则要进行表、列和存储例程层次的授权。表、列和存储例程层次在tables_priv、columns_priv、procs_priv表中查询针对指定数据库的表、列、存储例程(存储函数、存储过程)的权限,如果获得权限,即拥有这个授权。如果在上述3个层次都没有获得权限,则拒绝授权。任务2用户管理任务1理解数据库安全任务2用户管理10.2.1用户管理概述10.2.2【实训10-1】用Createuser语句创建用户账号(Linux)10.2.3【实训10-2】用Createuser语句创建用户账号(Windows)10.2.4【实训10-3】用Grant语句创建用户账号(过时的功能)10.2.5【实训10-4】管理用户账号10.2.6MySQL5.7的安全性任务3权限管理任务4“在线商店”项目的安全10.2.1用户管理概述在管理用户时,需要同时关注用户可以从哪里登录登录方式有两种本地登录远程登录登录途径有三种本地登录MySQL服务器就在本地远程终端+本地登录MySQL服务器在远程远程登录MySQL服务器在远程在管理用户时关注的是登录方式,是否允许远程登录,如果允许,还可以指定允许从哪个IP地址登录无需关注登录途径,只允许本地登录的用户,也可以通过远程终端,使用远程的MySQL服务器10.2.2【实训10-1】创建用户账号(Linux)1.创建账号在远程终端上用root账号登录MySQL,执行下述两条语句,分别创建两个账号。(1)只能本地登录的账号下述命令创建一个用户huang,密码是huang123,只能从本地登录。(2)可以从任意主机登录的账号下述命令创建一个用户huangng,密码是huangng123,可以从任意主机登录。Createuser'huang'@'localhost'identifiedby'huang123';Createuser'huangng'@'%'identifiedby'huangng123';创建账号就这么简单,但是在实训时,要确认一下效果【实训10-1】2.验证本地登录2.验证本地登录退出MySQL,在远程终端上发出如下命令,分别以这两个新建的账号登录。可以证明,从本地登录,两个账号都能登
录成功,如图10.6所示。mysql-uhuangng-phuangng123mysql-uhuang-phuang1233.验证远程登录3.验证远程登录远程登录是要从一台计算机上的客户端登录到另一台计算机上的MySQL服务器在本实训中,就是从Windows登录到Linux上的MySQL服务器分别发出如下命令,以这两个新建的账号进行远程登录(其中的IP地址需要修改)验证远程登录的结果如图10.7所示,可以看到用户huang不能远程登录,而huangng可以远程登录为了实现远程登录,还需要进行下述配置4.设置MySQL服务器允许远程登录详见Jitor实训中的指导5.设置Linux服务器的防火墙允许3306端口通过详见Jitor实训中的指导mysql-h192.168.206.133-uhuangng-phuangng123mysql-h192.168.206.133-uhuang-phuang12310.2.3【实训10-2】创建用户账号(Windows)1.创建账号在Windows命令行或dbForge中登录MySQL,执行下述两条语句,分别创建两个账号。(1)只能本地登录的账号下述命令创建一个用户huang,密码是huang123,只能从本地登录。(2)可以从任意主机登录的账号下述命令创建一个用户huangng,密码是huangng123,可以从任意主机登录。Createuser'huang'@'localhost'identifiedby'huang123';Createuser'huangng'@'%'identifiedby'huangng123';【实训10-2】创建账号就这么简单,但是在实训时,要确认一下效果2.验证本地登录2.验证本地登录如果采用MySQL命令行客户端,则发出如下命令,分别以这两个新建的账号登录。如果采用dbForge则要新建一个Connection,指定账号和密码可以证明,从本地登录,两个账号都能登录成功mysql-uhuangng-phuangng123mysql-uhuang-phuang1233.验证远程登录3.验证远程登录远程登录是要从一台计算机上的客户端登录到另一台计算机上的MySQL服务器在本实训中,可以是从Linux登录到
Windows上的MySQL服务器,也可以是从另一台Windows计算机登录,只要有网络连接分别发出如下命令,以这两个新建的账号进行远程登录(其中的IP是Windows的IP地址)可以证明用户huang不能远程登录,而huangng可以远程登录注:为了实现远程登录,还需要设置MySQL服务器允许远程登录,以及设置Windows的防火墙允许3306端口通过,不同的防火墙软件,设置的方式不同mysql-h192.168.206.133-uhuangng-phuangng123mysql-h192.168.206.133-uhuang-phuang12310.2.5【实训10-4】管理用户账号1.列出用户账号列出所有用户账号需要访问mysql数据库的user表,语句如下。2.删除用户账号删除用户账号的语法格式如下。例如删除刚才创建的用户zhangsan,代码如下。创建用户、删除用户等与安全有关的操作都需要较高的权限,通常要以根用户身份登录后才能进行操作。Dropuserzhangsan@localhost;Selectuser,host,passwordfrommysql.user;Dropuser用户@主机;【实训10-4】10.2.5【实训10-4】管理用户账号(续)3.修改用户密码(MySQL5.6及之前的版本)修改用户密码的语法格式如下例如修改前述用户huang的密码为huang456,代码如下其中等号=之后的password()是一个密码加密函数,它将密码加密后保存到数据库中如果省略了“for用户@主机”部分,则是修改当前用户自己的密码只有具有一定权限的用户才能修改其他用户的密码Setpassword[for用户@主机]=password('密码');Setpasswordforhuang@localhost=password('huang456');10.2.6MySQL5.7和8.0的安全性自5.7版起,在安全性方面,取消了一些不够安全的功能,同时新增了一些功能1.过时的功能自5.7版起,在安全方面,MySQL取消的部分功能如下。取消了用Grant语句创建用户账号的功能,Grant语句仅用于授权,从而避免了误操作。取消了用Grant语句修改用户账号的其他属性的功能,从而避免了误操作。密码加密函数password()的过时,导致Setpassword语句不能使用password()函数来修改密码2.新增的功能自5.7版起,在安全方面,MySQL新增的部分功能如下。改用Alteruser语句修改用户密码。新增设置密码过期策略。可以用Alteruser语句锁定用户或解锁用户新增的功能(1)修改账号密码修改当前用户的密码的语句如下。其中,user()表示当前用户,单引号引起来的部分是新密码,如果提示密码太短,则可以用sasa作为新密码。修改其他用户的密码的语句如下,这时当前用户需要拥有修改密码的权限。Alteruseruser()identifiedby'sa';Alteruser'testuser'@'localhost'identifiedby'sa';新增的功能(2)设置密码过期策略密码过期策略的意思是一个密码达到使用期限后将会过期,然后需要重新设置密码,才能继续使用。例如指定'testuser'@'localhost'的密码30天过期,代码如下或者指定用户账号的密码永不过期,代码如下或者指定用户账号使用默认的密码过期全局策略,代码如下当密码过期后,用户登录时的提示信息如下这时必须使用Alteruser语句修改密码后,才能在MySQL中继续操作Alteruser'testuser'@'localhost'passwordexpireinterval30day;Alteruser'testuser'@'localhost'passwordexpirenever;Alteruser'testuser'@'localhost'passwordexpiredefault;ERROR1820(HY000):YoumustresetyourpasswordusingALTERUSERstatementbeforeexecutingthisstatement.新增的功能(3)锁定用户锁定用户是指不允许指定的用户账号登录,直到解锁该用户。锁定指定用户的语句如下。被锁定的用户登录时,会得到下述出错信息。解锁指定用户的语句如下。Alteruser'testuser'@'localhost'accountlock;Accessdeniedforuser'testuser'@'localhost'.Accountislocked.Alteruser'testuser'@'localhost'accountunlock;任务3权限管理任务1理解数据库安全任务2用户管理任务3权限管理10.3.1权限管理概述10.3.2【实训10-5】权限管理任务4“在线商店”项目的安全10.3.1权限管理概述MySQL设置了多种权限,一些主要的权限如表10.3所示。10.3.2【实训10-5】权限管理1.授予权限授予权限的语法格式如下。其中,权限列表是表10.3中权限名称的列表,用逗号分隔数据库名如果是星号表示所有数据库表名如果是星号表示所有表例如授予用户huangng访问eshop数据库的shop_staff表查询、删除权限,代码如下。如果要授予所有权限,可以用allprivileges表示所有的权限。Grant权限列表on数据库名.表名to用户@主机;Grantselect,deleteoneshop.shop_stafftohuangng@'%';【实训10-5】10.3.2【实训10-5】权限管理(续)2.权限的层次根据授予权限时“on数据库名.表名”的写法,权限可以分为表10.4所示的3个层次,这些权限分别保存在mysql数据库的user表、db表、tables_priv等表中。核实权限时,将根据表10.4所示的3个层次从上向下进行核实,一旦获得权限,表明获得相应的授权,如果在3个层次都没有获得权限,则拒绝授权。10.3.2【实训10-5】权限管理(续)3.查看权限例如查看用户huang所拥有的权限,代码如下。4.撤回权限撤回权限时可以撤回部分权限例如撤回用户huangng对eshop数据库的shop_staff表删除权限,代码如下。也可以撤回全部权限。例如撤回用户huangng的所有权限,代码如下。Showgrantsforhuangng@'%';Revokedeleteoneshop.shop_stafffromhuangng@'%';Revokeallprivileges,grantoptionfromhuangng@'%';任务4“在线商店”项目的安全任务1理解数据库安全任务2用户管理任务3权限管理任务4“在线商店”项目的安全10.4.1操作系统的安全10.4.2MySQL服务器的安全10.4.3应用软件的安全10.4.4【实训10-6】“在线商店”项目的安全10.4.1操作系统的安全本节介绍Linux的安全管理,Windows的安全管理原则上是相同的。1.账号管理Linux操作系统是一个多用户、多任务的分时操作系统,每个用户账号都拥有一个唯一的用户名和密码,其中根用户(root)是权限最高的用户账号密码管理中与安全有关的注意事项有设定密码策略、设定用户密码强度、禁止根用户远程登录(这时需要创建一个专门用于远程登录的账号)等。2.防火墙管理防火墙是在网络层面上实现的安全预防措施,Linux操作系统上的防火墙将外部网络与Linux系统隔离,防止受到外部攻击。防火墙设计的一个原则是仅提供最少的服务。例如,不要对外开放MySQL的3306端口,替代的办法是通过远程终端来完成,从而避免开放3306等端口。也就是说,先通过远程终端登录到Linux服务器,然后再在远程终端上通过本地登录来访问MySQL服务器。10.4.2MySQL服务器的安全一些与MySQL服务器安全有关的注意事项禁用MySQL远程登录:所有维护工作都应该通过远程登录Linux服务器来进行删除无关账号:无关的账号有匿名账号、密码为空的账号以及长期不用的账号等,这些账号可能留下安全漏洞。丢弃测试(test)数据库:在实际的生产环境下,测试数据库是没有用处的,还有可能造成漏洞设置安全密码:要保证密码的强度,密码长度为8字符以上,由大小写字母、数字和特殊符号组成更改根用户(root)的用户名:改名后只能用新的名字登录,从而提高根用户的安全性,注意MySQL服务器的root账号与Linux操作系统的root账号是完全不同的两个账号。只授予账号必须的权限:这个要求的安全性是显而易见的。除根用户root外,任何其他用户不应有mysql库的user表的访问权限,user表保存了用户账号信息,它的泄露本身就是一个巨大的安全隐患。定期备份数据库:在项目11讲解。10.4.3应用软件的安全除了操作系统和数据库服务器级别上的安全,应用软件本身的安全也需要考虑1.应用软件的专用连接账号一台MySQL服务器上可能有多个数据库,每个数据库为不同的应用软件提供数据支持每个数据库都有一个专用的连接账号,从而保证应用软件之间的安全隔离,避免访问其他应用软件的数据特别注意不应该将root账号作为应用软件的连接账号,因为这样不仅使应用软件可以访问所有数据库的数据,也容易造成root账号密码的泄露2.应用软件的用户认证系统每个数据库应用项目也需要一个自己的用户认证系统,在项目的需求分析阶段就应该考虑好,在数据结构设计中包含用户认证系统的设计在线商店项目拥有两套用户认证系统:一是客户认证系统,二是员工认证系统,客户表(shop_customer)和员工表(shop_staff)都有账号和密
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年黄山辅警招聘考试真题附答案详解(夺分金卷)
- 2023年驻马店辅警招聘考试题库及答案详解一套
- 2023年福州辅警招聘考试真题带答案详解(完整版)
- 2024年咸阳辅警协警招聘考试真题附答案详解(研优卷)
- 2024年大同辅警招聘考试真题及完整答案详解1套
- 2023年福建辅警协警招聘考试备考题库及答案详解(各地真题)
- 2024年内江辅警招聘考试题库附答案详解(能力提升)
- 2023年石家庄辅警协警招聘考试备考题库参考答案详解
- 2024年宜宾辅警协警招聘考试真题及完整答案详解
- 2025年江西省名校学术联盟高二化学第一学期期末综合测试试题含解析
- 热力公司安全检查表
- 2025宁都县源盛公用事业投资发展有限公司招聘员工9人笔试考试备考题库及答案解析
- 中远海运集团介绍
- 阳城消防比武活动方案
- 基于stm32的老人健康监测系统设计
- 2025年山东钢铁集团有限公司社会招聘(4人)考试参考试题及答案解析
- 静物摄影基础知识培训课件
- 美味的石榴课件
- GB/T 14999.1-2025高温合金检验方法第1部分:低倍组织
- TGGW102-2019普速铁路线路修理规则
- 微电网电力市场交易方案
评论
0/150
提交评论