• 第13讲:数据库安全性


    大纲:

    1. 数据库安全性的概念及分类
    2. SQL语言实现自主安全性

    一、前言

    1. 数据库安全性是数据库的一种特性(免受非法或非授权用户的使用、泄露、破坏),其由DBMS保证实现

    2. 数据库系统的安全级别涉及多个方面,如网络控制、操作系统控制、DBMS控制等,我们只在DBMS上进行控制

    二、数据库安全性概述

    1. DBMS的安全机制可包括自主安全性机制、强制安全性机制、数据加密存储机制等

        ①自主安全性机制:通过授权机制(让权限在用户之间传递,使用户自主管理数据库安全性)来实现

        ②强制安全性机制:对数据和用户进行分类,不同类用户能看到不同类别的数据

    2. 数据库自主安全性机制

    • DBMS专门提供一个DBA账户,DBA利用该账户的特权可以进行用户账户的创建以及权限授予和撤消、安全级别控制调整等
    • 用户在使用数据库前必须从DBA处获得一个账户,并由DBA授予该账户一定的权限,该账户的用户依据其所拥有的权限对数据库进行操作,同时,该账户的用户也可将其所拥有的权利转授给其他的用户,由此实现权限在用户之间的传播和控制

     

    3. DBMS如何实现数据库自主安全性

    1. DBA定义安全性控制规则(安全性访问规则)
    2. 当用户请求访问数据时,DBMS将依据安全性控制规则来检查是否符合规则,进而决定是否允许访问

    三、安全性访问规则的表达

    1. 安全性访问规则的一般形式:(S,O,t,P),即用户S在满足条件P时,以权利t来访问对象O

    • S:请求主体,即用户或用户组
    • O:访问的对象,即要访问的数据库、表、元组、属性等
    • t:访问权利,包括创建、增、删、改、查等
    • P:谓词,即拥有权利需要满足的条件

    四、自主安全性的两种实现方式

    1. 存储矩阵

        ①只包含S、O、t,不能表达P

    2. 视图

        ①包含S、O、t、P,因为视图可将数据访问对象与谓词结合起来

        ②可以限制用户访问和操作关系中的哪些数据,如定义不同的视图给不同的用户来使用

    五、利用SQL语言实现自主安全性

    1. SQL中的用户分级

        ①超级用户:DBA

        ②账户级别:程序员

        ③关系级别:普通用户

    2. SQL中的权利分级

        ①1级(读):select

        ②2级(更新):insert、update、delete

        ③3级(创建):create、alter、drop

    注:级别高的权利自动包含级别低的权利,一般将级别3的权利称为账户级别的权利,而将级别1和2的权利称为关系级别的权利。

    3. 授权命令

    grant {all privileges | privilege [, privilege ... ]} on [table] 表名 | 视图名

    to {public | user-id [, user-id ... ]} [with grant option];

        ①privilege可以是select、insert、update、delete

        ②user-id是某一个由DBA创建的用户账号,而public则是所有有效用户

        ③with grant option选项表示允许被授权者传播这些权利

        ④授予的权利必须是授权者已拥有的权利

    【示例】现有一关系Employee(P#, Pname, Page, Psex, Psalary, D#, HEAD),并创建了4个视图EmpV1、EmpV2、EmpV3、EmpV4,现假定高级领导为Emp0001,部门领导为Emp0021,员工管理员为Emp2001,收发员为Emp5001(均为UserId, 也即员工的P#):

    • createEmpV1asselect*fromEmployee;
    • createEmpV2asselectPname,D#fromEmployee;
    • createEmpV3asselect*fromEmployeewhereP#=UserId;
    • createEmpV4asselect*fromEmployeewhereHead=UserId;
    • grant all priviledges on Employee to Emp2001;  // 授予Emp2001“所有权利”去访问Employee表
    • grant select on EmpV2 to Emp5001 ;                // 授予Emp5001“select”权利去访问视图EmpV2
    • grant select on EmpV3 to public;                       // 授予public“select”权利去访问视图EmpV3
    • grant select on EmpV4 to Emp0021;                 // 授予Emp0021“select”权利去访问视图EmpV4
    • 上面4条grant语句就是授权(grant)机制与视图结合而实现自主安全性的典例

    4. 收回授权命令

    revoke {all privileges | privilege [, privilege ... ]} on [table] 表名 | 视图名 from {public | user-id [, user-id ... ]};

    • 示例:revoke select on Employee from UserB;

     

  • 相关阅读:
    微信分享功能开发代码整理
    js 完美兼容浏览器的复制功能
    linux 搭建svn服务器
    zendStudio安装Xdebug项目断点调试
    程序员开发常用英语词汇
    简单的一个远传采集并下载远传图片存储到本地示例
    form表单中经常用到的禁用获取值问题
    记录下url拼接的多条件筛选js
    better-scroll在vue中的使用
    移动端适配,引入lib-flexible,vue开发中将px转化为rem
  • 原文地址:https://www.cnblogs.com/xzxl/p/10753960.html
Copyright © 2020-2023  润新知