• 授权控制-数据库用户分类、授权(GRANT)、收权(REVOKE)


    一、引言

    SQL语言的数据控制功能,体现在DBMS的授权机制上,目的是实现数据库的安全访问,确保只有授权用户才能访问数据库,所有未被授权的用户无法获取数据,如何利用SQL语言提供的授权(GRANT)语句和收权(REVOKE)语句来实现自主访问控制功能,这些功能大部分DBMS都支持

    二、自主访问控制

    自主访问控制就是用户自主控制对数据对象的操作权限

    操作权限:用户对某一数据对象的操作权利

    1、在DBMS中,用户对数据库的访问权限由两个要素组成:数据库对象和操作权限

    2、数据库对象包括数据库、基本表、视图、索引

    3、操作权限包括创建(CREATE)、修改(ALTER)、删除(DROP)、查询(SELECT)、更新(插入(INSERT)、修改(UPDATE)、删除(DELETE)),有的DBMS中用ALL PRIVILEGES表示所有操作权限

    4、数据库用户

    (1)系统管理员。DBMS在安装时,至少有一个系统管理员用户,系统管理员在DBMS上拥有一切权限,负责整个系统的管理

    (2)数据库管理员(DBA)。该用户在自己所创建的数据库上拥有一切权限

    (3)数据库对象用户。该用户可以建立数据库对象,如表、视图等,在这些数据库对象上拥有全部的操作权限

    (4)数据库访问用户。可以对被授权的数据库对象进行操作,如查询数据、修改数据等

    5、可以实现不同用户对于不同数据库对象有不同的操作权限,也可以实现不同用户对同一数据库对象有不同的操作权限

    三、授权GRANT

    1、GRANT语句用来实现权限的授予,向用户授予对某个或者某些数据库对象的操作权限

    2、GRANT授权语句的一般格式

    GRANT <权限列表>

    ON <数据库对象>

    To <用户列表>

    WITH GRANT OPTION

    注:加了WITH GRANT OPTION的GRANT授权语句可以使得被授权的用户可以将权限继续转授给其他用户 

    3、举例1:将查询sC表和修改学生成绩的权限授给用户user1

    1. grant select,update(grade)
    2. on sC
    3. to user1
    4. with grant option;

    四、收权REVOKE

    1、REVOKE收权语句的一般格式:

    REVOKE 【GRANT OPTION FOR】<权限表>

    ON <数据库对象>

    FROM <用户表>

    【CASCADE|RESTRICT】

    注:

    (1)GRANT OPTION FOR:只有授权权限被收回

    (2)CASCADE:把该用户授权给其他用户的权限同时级联收回

    (3)RESTRINCT:当用户没有给其他用户授权时,才能收回权限

    2、举例 1:将用户user1查询和修改学生学号的权限收回,并级联收回所授出的权限

    1. revoke select,update(grade)
    2. on sC
    3. from user1
    4. cascade;

    五、自主访问控制示例

    1、授予用户user1对表c的更新权限

    grant update on c to user1;

    2、授予用户user1对表s的查询权限,并具有给其他用户授权的权限

    1. grant select on s to user1
    2. with grant option;

    3、以user1登录,把对学生表s的查询权限授予给用户user2

    grant select on s to user2;

    4、user1再把对课程表c的更新权限授予给用户user2

    grant update on c to user2;

    5、DBA级联收回用户user1对学生表s的查询权限

    revoke select on s from user1 cascade;

    注意:reovke语句的默认选项是RESTRICT

    6、在用户user1具有对学生表s的select权限时,再授予其对视图sJ_s的select和update权限 

    1. grant select,update
    2. on sJ_s
    3. to user1

    7、用户user1修改视图中属性sNo为“202218014030”的学生姓名为“小龙女”

    1. update sJ_s
    2. set sJ_sN='小龙女'
    3. where sJ_sNo='202218014030'

    8、用户user1再修改学生表s中属性sNo值为“202218014030”的学生姓名为“小龙女”

    1. update s
    2. set sN='小龙女'
    3. where sNo='202218014030'

    9、结论:

    (1)用户所具有的关系上的权限其拥有的关系上的视图的权限是不同的

    (2)用户只能在其具有的权限下对数据库进行操作

    (3)DBMS可通过为用户定义视图,并为用户授予访问视图的相关权限,在满足用户操作需求的情况下,提高了数据库中数据的安全性

    (4)利用GRANT和REVOKE语句,用户可以自主地决定数据的存取权限授予其他用户,“自主”地决定是否也“授权”的权限授予给其他用户

     六、小结

    1、基于角色的访问控制通过给角色授权来简化为用户授权的过程

    2、自主访问控制(Discretionary Access Control)通过GRANT和REVOKE语句来实现权限的管理。访问控制方式灵活,但容易失控

    3、安全级别的DBMS要求支持强制访问控制(Mandatory Access Control)

  • 相关阅读:
    Tonka Finance,BTCFi 浪潮的发动机
    Qt5.14.2在Windows下使用mysql
    存储单位转换工具类
    专业138+总分400+南航南京航空航天大学878考研经验电子信息与通信工程,真题,大纲,参考书
    windows7远程连接linux可视化界面——vnc使用教程(华为云服务器实测通过)
    电脑系统修复,操作简单
    在Windows的Docker上部署Mysql服务
    kubectl 速查手册
    ABAP FB02 修改会计凭证的抬头文本/行项目文本的函数
    欧拉计划第265题:二进制圈
  • 原文地址:https://blog.csdn.net/Watermelon_Mr/article/details/139724562