17网站一起做网店的流程闵行区教育局

当前位置: 首页 > news >正文

17网站一起做网店的流程,闵行区教育局,北京微信网站,德国红点设计奖官网七、数据库安全与保护 文章目录 七、数据库安全与保护安全性访问控制数据库安全性控制用户标识和鉴别存取控制自主存取控制(DAC)存取控制方法#xff1a;授权与回收GRANT授权REVOKE回收 强制存取控制(MAC) MySQL的安全设置用户管理1.创建登录用户2.修改用户密码3.修改用户名4.…七、数据库安全与保护 文章目录 七、数据库安全与保护安全性访问控制数据库安全性控制用户标识和鉴别存取控制自主存取控制(DAC)存取控制方法授权与回收GRANT授权REVOKE回收 强制存取控制(MAC) MySQL的安全设置用户管理1.创建登录用户2.修改用户密码3.修改用户名4.删除用户 权限管理1.授予权限grant2.撤销权限revoke小结SQL灵活的授权机制 角色管理 备份与恢复审计 问题的提出 数据库的一大特点是数据可以共享 数据共享必然带来数据库的安全性问题 数据库系统中的数据共享不能是无条件的共享 数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏。 系统安全保护措施是否有效是数据库系统主要的性能指标之一。 安全性 计算机系统存在技术安全、管理安全和政策法律三类安全性问题。 TCSEC/TDI 标准由安全策略、责任、保证和文档四个方面内容构成。 数据库的安全性是指保护数据库防止不合法的使用以免数据的泄露、更改或破坏。 数据库的安全性和完整性这两个概念听起来有些相似有时容易混淆但两者是完全不同的。 安全性保护数据以防止非法用户故意造成的破坏确保合法用户做其想做的整改。完整性保护数据以防止合法用户无意中造成的破坏确保用户所做的事情是正确的。 两者不同的关键在于“合法”和“非法”及“故意”与“无意”。 数据库的不安全因素 非授权用户对数据库的恶意存取和破坏数据库中重要或敏感的数据被泄露安全环境的脆弱性 为了保护数据库防止故意的破坏可以从低到高的5个级别上设置各种安全措施。 物理控制 计算机系统的机房和设备应加以保护通过加锁或专门监护等防止系统场地被非法进入从而进行物理破坏。法律保护 通过立法、规章制度防止授权用户以非法形式将其访问数据库的权限转授给非法者。操作系统支持 无论数据库系统是多么安全操作系统的安全弱点均可能成为入侵数据库的手段应防止未经授权的用户从操作系统处着手访问数据库。网络管理 由于大多数DBMS都允许用户通过网络进行远程访问所以网络软件内部的安全性是很重要的。DBMS实现 DBMS安全机制的职责是检查用户的身份是否合法及使用数据库的权限是否正确。 计算机系统安全模型 系统根据用户标识鉴定用户身份合法用户才准许进入计算机系统数据库管理系统还要进行存取控制只允许用户执行合法操作操作系统有自己的保护措施数据可以以密码形式存储到数据库中 数据库安全性控制的常用方法 用户标识和鉴定存取控制视图审计数据加密 访问控制 用户账号管理账户权限管理 数据库安全性控制 首先数据库管理系统对提出SQL访问请求的数据库用户进行身份鉴别防止不可信用户使用系统。 然后在SQL处理层进行自主存取控制和强制存取控制进一步可以进行推理控制。 还可以对用户访问行为和系统关键操作进行审计对异常用户行为进行简单入侵检测。 用户标识和鉴别 用户身份鉴别Identification Authentication 系统提供的最外层安全保护措施用户标识由用户名和用户标识号组成用户标识号在系统整个生命周期内唯一 用户标识和鉴别方法 静态口令鉴别 静态口令一般由用户自己设定这些口令是静态不变的。动态口令鉴别 口令是动态变化的每次鉴别时均需使用动态产生的新口令登录数据库管理系统即采用一次一密的方法。生物特征鉴别 通过生物特征进行认证的技术生物特征如指纹、虹膜和掌纹等。智能卡鉴别 智能卡是一种不可复制的硬件内置集成电路的芯片具有硬件加密功能。 存取控制 存取控制策略 数据库安全最重要的一点就是确保只授权给有资格的用户访问数据库的权限同时令所有未被授权的人员无法接触数据这主要通过数据库系统的存取控制策略来实现。 存取控制机制组成 定义用户权限并将用户权限登记到数据字典中 用户对某一数据对象的操作权力称为权限 DBMS提供适当的语言来定义用户权限存放在数据字典中称做安全规则或授权规则。合法权限检查 用户发出存取数据库操作请求 DBMS查找数据字典进行合法权限检查。 用户权限定义和合法权检查机制一起组成了数据库管理系统的存取控制子系统。 常用存取控制方法包括自主存取控制(DAC)和强制存取控制(MAC)两种。 自主存取控制Discretionary Access Control 简称 DAC 用户对不同的数据对象有不同的存取权限 不同的用户对同一对象也有不同的权限 用户还可将其拥有的存取权限转授给其他用户强制存取控制Mandatory Access Control简称 MAC 每一个数据对象被标以一定的密级 每一个用户也被授予某一个级别的许可证 对于任意一个对象只有具有合法许可证的用户才可以存取 自主存取控制(DAC) 自主存取控制(DAC)的 SQL 语句包括 GRANT 和 REVOKE 两个。 用户权限由数据对象和操作类型两部分构成。 定义用户存取权限定义用户可以在哪些数据库对象上进行哪些类型的操作。 定义存取权限称为授权。 权限类型 自主存取控制的权限类型分为两种即角色权限和数据库对象权限。 角色权限 给角色授权并为用户分配角色用户的权限为其角色权限之和。角色权限由DBA授予。数据库对象权限 不同的数据库对象可提供给用户不同的操作。该权限由DBA或该对象的所有者Owner授予用户。 存取控制方法授权与回收 定义一个用户的存取权限就是要定义这个用户可以在哪些数据对象上进行哪些类型的操作。在数据库系统中定义存取权限成为授权。 GRANT授权 grant [,]… on 对象类型 对象名 [,对象类型 对象名]… to 用户 [,用户]… [with grant option]将对指定操作对象的指定操作权限授予指定的用户发出该grant语句的可以是DBA也可以是已经拥有该权限的用户。接收权限的用户可以是一个或多个具体用户也可以是PUBLIC即全体用户。指定WITH GRANT OPTION子句则获得某种权限的用户还可以把这种权限授权给其他用户. grant all privileges on table student,sc to user1 with grant option;REVOKE回收 revoke [,]… on 对象类型 对象名 [,对象类型 对象名]… from 用户 [,用户]…cascade会级联依次向下收回权限 revoke insert on table student from user1 cascade;创建数据库模式的权限 create user username [with] [dba|resource|connect]强制存取控制(MAC) 自主存取能够通过授权机制有效地控制对敏感数据的存取但它存在一个漏洞——一些别有用心的用户可以欺骗一个授权用户采用一定的手段来获取敏感数据。 例如领导Manager是客户单Customer关系的物主他将“读”权限授予用户A且A不能再将权限转授他人其目的是让A审查客户信息看有无错误。现在A自己另外创建一个新关系A_Customer然后将自Customer读取的数据写入即复制到A_Customer。这样A是A_Customer的物主他可以做任何事情包括再将其权限转授给任何其他用户。 存在这种漏洞的根源在于自主存取控制机制仅以授权将用户主体与被存取数据对象客体关联通过控制权限实现安全要求对用户和数据对象本身未做任何安全性标注。强制存取控制就可以处理自主存取控制的这种漏洞。 强制存取控制MAC 保证更高程度的安全性用户不能直接感知或进行控制适用于对数据有严格而固定密级分类的部门 军事部门政府部门
在强制存取控制中数据库管理系统所管理的全部实体被分为主体和客体两大类。 主体是系统中的活动实体 数据库管理系统所管理的实际用户代表用户的各进程 客体是系统中的被动实体受主体操纵 文件、基本表、索引、视图 敏感度标记Label 对于主体和客体DBMS为它们每个实例值指派一个敏感度标记Label 敏感度标记分成若干级别 绝密Top SecretTS机密SecretS可信ConfidentialC公开PublicPTSSCP 主体的敏感度标记称为许可证级别Clearance Level 客体的敏感度标记称为密级Classification Level 强制存取控制规则 仅当主体的许可证级别大于或等于客体的密级时该主体才能读取相应的客体。仅当主体的许可证级别小于或等于客体的密级时该主体才能写相应的客体。 强制存取控制是对数据本身进行密级标记无论数据如何复制标记与数据都是一个不可分的整体只有符合密级标记要求的用户才可以操纵数据从而提供了更高级别的安全性。 强制存取控制的优点是系统能执行“信息流控制”。 【注意】这种方法在通用数据库系统中不是十分有用它只在某些专用系统中有用例如军事部门或政府部门。 MySQL的安全设置 MySQL安全设置用于实现“正确的人”能够“正确的访问”“正确的数据库资源”。 MySQL通过两个模块实现数据库资源的安全访问控制即身份认证模块和权限验证模块。 身份认证模块用于实现数据库用户在某台登录主机的身份认证只有通过身份认证的数据库用户才能登录主机并成功连接到MySQL服务器继而向MySQL服务器发送MySQL命令或SQL语句权限验证模块用于验证MySQL账户是否有权执行该MySQL命令或SQL语句确保“数据库资源”被真确地访问或者执行。 用户管理 1.创建登录用户 创建用户的语法形式如下 CREATE USER 用户 [IDENTIFIED BY [PASSWORD] 密码] [,用户 [IDENTIFIED BY [PASSWORD] 密码]]…;【说明】 用户的格式用户名主机名。其中主机名指定了创建的用户使用MySQL连接的主机。另外“%”表示一组主机localhost表示本地主机。IDENTIFIED BY子句指定创建用户时的密码。如果密码是一个普通的字符串则不需要使用PASSWORD关键字。 – 【例12-1】创建用户tempuser其口令为temp。 CREATE USER tempuserlocalhost IDENTIFIED BY temp;创建的新用户的详细信息自动保存在系统数据库mysql的user表中执行如下SQL语句可查看数据库服务器的用户信息。 USE mysql; SELECT * FROM user;2.修改用户密码 修改用户密码的语法形式如下 SET PASSWORD FOR 用户 新密码;– 【例12-2】修改用户tempuser的密码为abc。 SET PASSWORD FOR tempuserlocalhostabc;3.修改用户名 修改用户名的语法形式如下 RENAME USER 旧用户名 To 新用户名 [ ,旧用户名 To 新用户名] […]– 【例12-3】修改普通用户tempuser的用户名为temp_U。 RENAME USER tempuserlocalhost TO temp_Ulocalhost;4.删除用户 使用DROP USER语句可删除一个或多个MySQL用户并取消其权限。 其语法形式如下 DROP USER 用户[,…];– 【例12-5】删除用户temp_U。 DROP USER temp_Ulocalhost;权限管理 权限管理主要是对登录到MySQL服务器的数据库用户进行权限验证。所有用户的权限都存储在MySQL的权限表中。 合理的权限管理能够保证数据库系统的安全不合理的权限设置会给数据库系统带来危害。 权限管理主要包括两个内容即授予权限和撤销权限。 1.授予权限grant GRANT语句的一般格式 GRANT 权限[,权限]… ON 对象类型 对象名[,对象类型 对象名]… TO 用户[,用户]… [WITH GRANT OPTION];语义将对指定操作对象的指定操作权限授予指定的用户 发出GRANT 数据库管理员数据库对象创建者即属主Owner拥有该权限的用户 接受权限的用户 一个或多个具体用户PUBLIC即全体用户 WITH GRANT OPTION子句 指定可以再授予没有指定不能传播 不允许循环授权 – 【例】把查询Student表权限授给用户U1。 USE jwgl13; CREATE USER U1localhost IDENTIFIED BY 123456; GRANT SELECT ON TABLE Student TO U1localhost;#创建用户并授权后为了使其生效输入命令: FLUSH PRIVILEGES;2: – 【例】把对Student表的全部权限授予用户U2和U3。 USE jwgl13; CREATE USER U2localhost IDENTIFIED BY 123456; CREATE USER U3localhost IDENTIFIED BY 123456;GRANT ALL PRIVILEGES ON TABLE Student TO U2localhost,U3localhost; FLUSH PRIVILEGES;2.撤销权限revoke 授予的权限可以由数据库管理员或其他授权者用REVOKE语句收回。 REVOKE语句的一般格式为 REVOKE 权限[,权限]… ON 对象类型 对象名[,对象类型对象名]… FROM 用户[,用户]…[CASCADE | RESTRICT];例 – 【例】把用户U1查询student表的权限收回。 REVOKE SELECT ON TABLE student FROM U1localhost;– 【例】把用户U4修改学生姓名的权限收回。 REVOKE UPDATE(Sname) ON TABLE Student FROM U4localhost;– 【例】收回所有用户对表Score的查询权限。 REVOKE SELECT ON TABLE Score FROM PUBLIC;– 【例】把用户U5对Score表的INSERT权限收回。 REVOKE INSERT ON TABLE Score FROM U5localhost;小结SQL灵活的授权机制 数据库管理员 拥有所有对象的所有权限 根据实际情况不同的权限授予不同的用户 用户 拥有自己建立的对象的全部的操作权限 可以使用GRANT把权限授予其他用户 被授权的用户 如果具有“继续授权”的许可可以把获得的权限再授予其他用户 所有授予出去的权力在必要时又都可用REVOKE语句收回。 角色管理 数据库角色被命名的一组与数据库操作相关的权限。 角色是权限的集合可以为一组具有相同权限的用户创建一个角色简化授权的过程 1.角色的创建 CREATE ROLE 角色名 2.给角色授权 GRANT 权限[,权限]… ON 对象类型对象名 TO 角色[,角色]…3.将一个角色授予其他的角色或用户 GRANT 角色1[,角色2]… TO 角色3[,用户1]… [WITH ADMIN OPTION]该语句把角色授予某用户或授予另一个角色授予者是角色的创建者或拥有在这个角色上的ADMIN OPTION指定了WITH ADMIN OPTION则获得某种权限的角色或用户还可以把这种权限授予其他角色。 一个角色的权限直接授予这个角色的全部权限加上其他角色 授予这个角色的全部权限。 4.角色权限的收回 REVOKE 权限[,权限]… ON 对象类型 对象名 FROM 角色[,角色]…用户可以回收角色的权限从而修改角色拥有的权限。REVOKE执行者是角色的创建者拥有在这个些角色上的ADMIN OPTION 5.删除角色 语法形式如下 DROP ROLE角色[,角色,…];例 – 【例】通过角色来实现将一组权限授予一组用户。 – 步骤如下– 1首先创建一个角色 R1 USE jwgl13; CREATE ROLE R1localhost; – 2然后使用GRANT语句使角色R1拥有Student表的SELECT、UPDATE、INSERT权限。 GRANT SELECT, UPDATE, INSERT ON TABLE Student TO R1localhost; – 3创建用户U_A、U_B、U_C CREATE USER U_Alocalhost IDENTIFIED BY 111111; CREATE USER U_Blocalhost IDENTIFIED BY 111111; CREATE USER U_Clocalhost IDENTIFIED BY 111111; – 4将这个角色授予U_A、U_B、U_C使他们具有角色R1所包含的全部权限。 GRANT R1localhost TO U_Alocalhost,U_Blocalhost,U_Clocalhost;– 验证角色是否正确分配可使用SHOW GRANTS语句 SHOW GRANTS FOR U_Alocalhost USING R1localhost;– 注意用户在使用角色权限前必须激活角色命令形式如下 SET GLOBAL activate_all_roles_on_loginON;– 5可以一次性通过R1来回收U_A的这3个权限 REVOKE R1localhost FROM U_Alocalhost; 例2 – 【例】角色的权限修改。 – 使角色R1在原来的基础上增加了Student表的DELETE 权限。 GRANT DELETE ON TABLE Student TO R1localhost;– 【例】收回R1的SELECT权限。 REVOKE SELECT ON TABLE Student FROM R1localhost; – 【例】删除角色。 DROP ROLE R1localhost; 备份与恢复 导出一整个数据库 C:\WINDOWS\system32 mysqldump -u 用户名 -p 数据库名 导出的文件名C:\WINDOWS\system32 mysqldump -u root -p user d:\demo.sql导出一张表 C:\WINDOWS\system32 mysqldump -u 用户名 -p 数据库名 表名称 导出的文件名 C:\WINDOWS\system32 mysqldump -u root -p user user_1 d\demo.sql恢复 数据的回复必须要先登录,登录成功后新建一个数据库,进入到指定的数据库中执行如下命令 mysql Source 脚本目录(绝对路径) mysql Source C:\java\demo.sql审计 审计功能把用户对数据库的所有操作自动记录下来放入审计日记中。DBA可以利用审计跟踪的信息重现导致数据库出现现有状况的一系列事件中出非法存取数据的人、时间和内容等。审计通常是费时间和空间的一般主要用于安全性要求较高的部门。审计一般可以分为用户级审计和系统级审计。AUDIT语句用来设置审计功能NOAUDIT用来取消审计功能。 audit alter,update on student;noaudit all on student;