第四章 数据库安全性

第四章 数据库安全性

文章目录

  • 第四章 数据库安全性
    • 4.1 数据库安全性概述
      • 4.1.1 数据库的不安全因素
        • 1. 非授权用户对数据库的恶意存取和砐坏
        • 2. 数据库中重要或敏感的数据被泄露
        • 3.安全环境的脆弱性
      • 4.1.2 安全标准简介
    • 4.2 数据库安全性控制
      • 4.2.1 用户身份鉴别
        • 1. 静态口令鉴别
        • 2. 动态口令鉴别
        • 3. 生物特征鉴别
        • 4. 智能卡鉴别
      • 4.2.2 存取控制
        • 1. 定义用户权限, 并将用户权限登记到数据字典中
        • 2. 合法权限检查
      • 4.2.3 自主存取控制方法
      • ==4.2.4 授权: 授予与收回==
        • ==必须先学会的知识!!!==
          • 1. 数据库用户的创建
        • ==1. GRANT——授权==
          • 例题
        • ==2. REVOKE——权限收回==
      • 4.2.5 数据库角色
        • 怎样理解数据库的角色与用户
        • 1. 角色的创建
        • 2. 给角色授权
        • 3. 将一个角色授予其他的角色或用户
        • 4.角色权限的收回

导读:这一章篇幅短,一般来说,一节课就会讲完,概念较少,但对他的知识梳理还是必要的。

4.1 数据库安全性概述

数据库安全性的定义:数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄谣、 更改或破坏。

4.1.1 数据库的不安全因素

1. 非授权用户对数据库的恶意存取和砐坏
2. 数据库中重要或敏感的数据被泄露
3.安全环境的脆弱性

简而言之:了解即可

4.1.2 安全标准简介

第四章 数据库安全性_第1张图片

TCSEC/TD1安全级别划分

简而言之:知道保护能力的大小顺序即可,记住:

  1. 相同字母下标数字越大,安全性越高
  2. 安全级别A1最大、D最小

4.2 数据库安全性控制

4.2.1 用户身份鉴别

1. 静态口令鉴别
2. 动态口令鉴别
3. 生物特征鉴别
4. 智能卡鉴别

简而言之:了解即可

4.2.2 存取控制

存取控制机制主要包括定义用户权限和合法权限检查两部分。

1. 定义用户权限, 并将用户权限登记到数据字典中
2. 合法权限检查

4.2.3 自主存取控制方法

定义 存取权限称为授权 (authorization)。

4.2.4 授权: 授予与收回

必须先学会的知识!!!
1. 数据库用户的创建
create user '[用户名称]'@'%' identified by '[用户密码]';--创建用户
密码8位以上,包括:大写字母、小写字母、数字、特殊字符
%:匹配所有主机,该地方还可以设置成‘localhost’,代表只能本地访问,例如root账户默认为‘localhost‘

2.代码实现部分

CREATE USER 'u1'@'%' IDENTIFIED by '123456';
CREATE USER 'u2'@'%' IDENTIFIED by '123456';
CREATE USER 'u3'@'%' IDENTIFIED by '123456';
CREATE USER 'u4'@'%' IDENTIFIED by '123456';
CREATE USER 'u5'@'%' IDENTIFIED by '123456';

小知识:权限最大的叫做root用户,也就是我们每次登录的用户。

用cmd登录的时候 ——mysql -u root -p中的root就是用户名称。

如果要登录u1用户则可以这样写——mysql -u u1 -p

1. GRANT——授权

基本格式

GRANT<权限>[,<权限>]…
ON<对象类租><对象名>[,<对象类型><对象名>)… TO<用户> [,<用户>]…
[WITH GRANT OPTION];

  • 例题
    • 1、 最简单的结构

      把查询 Student 表的权限授给用户 U1 。

      GRANT SELECT

    ​ ON TABLE Student

    ​ TO U1;

    • 2、 ALL PRIVILEGE——所有权限的授予

      把对 Student 表和 Course 表的全部操作权限授予用户 U2 和 U3。

      GRANT ALL PRIVILEGES

      ON TABLE Student, Course

      TO U2,U3;

    • 3、 授权某一属性的权限

      把查询 Student 表和修改学生学号的权限授给用户 U4。

      GRANT UPDATE(Sno),SELECT

      ON TABLE Student
      TO U4;

    • WITH GRANT OPTION——4、允许把自己的权限再授予其他用户

      把对表 SC 的 INSERT 权限授予 U5 用户,并允许将此权限再授予其他用户。

      GRANT INSERT
      ON TABLE SC
      TO U5
      WITH GRANT OPTION:

2. REVOKE——权限收回

基本格式:REVOKE<权限>[,<权限>)…
ON <对象类型><对象名>[,<对象类型><对象名>]… FROM <用户>[,<用户>]· · · [CASCADE|RESTRICT];

  • 例题

    • 收回 GRANT OPTION的权限时,会收回从该用户授予其他用户的权限

      把用户U5对SC表的INSERT权限收回。

      REVOKE lNSERT

      ON TABLE SC

      FROM U5 CASCADE;

4.2.5 数据库角色

怎样理解数据库的角色与用户

MySQL 8才开始引入角色的概念。

一个数据库可能有多个用户需要访问,为了方便管理,可以先将权限分组,并授予给角色。每一个权限组对应一个角色。对于不同权限级别的用户,可以将对应的角色授予用户,相当于批量授予用户需要的权限,而不需要逐个授予权限。

例如:一个公司可以有多个财务,财务有发放工资和拨款等权限。财务就是一个角色。

角色不属于任何用户可以理解为:角色不是某个用户私有的,多个用户都可以拥有这个角色。如财务是角色,但财务这个角色不是任何一个员工私有的,多个员工可以拥有财务这个角色。

假设smith用户创建了对象staffs,那么smith.staffs就是smith用户私有的。其他用户若拥有权限,可以对smith.staffs进行访问或操作,但smith.staffs只属于smith用户。——引用华为云上的讲解

1. 角色的创建

基本格式CREATE ROLE<角色名>

2. 给角色授权

GRANT<,权限>[,<权限>]…

ON<对象类型>对象名
TO<角色>[,<角色>)…

3. 将一个角色授予其他的角色或用户

GRANT<角色l>[,<角色2>]…

TO<角色3>[,<用户l>]…
(WITH ADMIN OPTION]

4.角色权限的收回

REVOKE<权限>[,<权限>]…

ON<对象类型><对象名>

FROM<角色>[,<角色>]…

简而言之:GRANT role 或者 权限

​ ON role 或者 用户

​ WITH ADMIN OPTION(被授予权限的用户 或者 角色,有没有能授予其他用户自己权限的能力)

你可能感兴趣的:(数据库)