zoukankan      html  css  js  c++  java
  • 《数据库系统概论》 -- 4. 数据库安全性

    背景        

      非授权用户对数据库的恶意存取和破坏

           数据库中重要或敏感数据被泄露

           安全环境的脆弱性

    概念        

      保护数据库以防止不合法使用所造成的数据泄露、更改或破坏

    安全标准        

      1985--TCSEC (Trusted Computer System Evaluation Criteria)

      1996--CC (Common Criteria)

      1999--CC V2.1成为国际标准

      TSSEC

        4组7个等级

        D、C(C1,C2)、B(B1,B2,B3)、A(A1)

        安全程度由低到高

      CC

        三部分组成:简介和一般模型、安全功能要求、安全保证要求

        安全保证要求:7大类、26个子类和74个组件。

        根据系统对安全保证的要求提出了7级评估保证级(Evaluation Assurance Level)

        EAL2、EAL3对应C1、C2;

        EAL4、EAL5、EAL6对应B1、B2、B3;

        EAL7对应A1

    数据库安全控制

    用户身份鉴别

             静态口令鉴别、动态口令鉴别、生物特征鉴别、智能卡鉴别

                       (智能卡:一种不可复制的硬件,内置集成电路芯片,具有硬件加密的功能)

    存取控制

             理解         包括定义用户权限和合法权限检查两部分;

                              C2级的DBMS支持自主存取控制(Discretionary Access Control)和强制存取控制(Mandatory Access Control)

             DAC--权限管理GRANT、REVOKE、ROLE

                       创建用户

                               格式         CREATE USER <username> [WITH] [DBA|RESOURCE|CONNECT];

                               说明         DBA--系统中的超级用户,可以创建用户、模式、基本表、视图,拥有所有数据库对象的存取权限,还可以授权给一般用户

                                                  RESOURCE--可以创建基本表和视图,成为所创建对象的属主,不能创建模式,不能创建用户

                                                  CONNECT--只能登录数据库,权限由数据库管理员或其他用户授予

                       授权

                                格式         GRANT <权限>[,<权限>...]

                                                   ON <对象类型> <对象名>[,<对象类型> <对象名>...]

                                                   [WHEN <条件表达式>]

                                                   TO <用户|角色>[,<用户|角色>...]

                                                   [WITH GRANT OPTION];

                                说明         用户可以是PUBLIC,即全体用户

                                                   WITH GRANT OPTION表明用户可以将他所得到的权限继续授权给其他人,但是不允许再授回给授权者或祖先授权者

                                                   在授予用户在属性列的INSERT权时,必须要包含主码

                                                   SQL中,USER()代表当前用户

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

                                                            GRANT SELECT

                                                            ON TABLE Student

                                                            TO U1;

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

                                                            GRANT ALL PRIVILEGES

                                                            ON TABLE Student, Course

                                                            TO U2, U3;

                                                  把对SC表的查询权限授予所有用户

                                                            GRANT SELECT

                                                            ON TABLE SC

                                                            TO PUBLIC;

                                                  把查询Student表和修改学生学号的权限授予U4

                                                            GRANT SELECT, UPDATE(Sno)

                                                            ON TABLE Student

                                                            TO U4;

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

                                                            GRANT INSERT

                                                            ON TABLE SC

                                                            TO U5

                                                            WITH GRANT OPTION;

                       取消授权

                                格式         REVOKE <权限>[,<权限>...]

                                                   ON <对象类型> <对象名>[,<对象类型> <对象名>...]

                                                   FROM <用户|角色>[,<用户|角色>...] [CASCADE|RESTRICT];

                                说明         CASCADE--如果用户已经授权给了其他用户,则必须使用CASCADE,否则系统拒绝执行

                                举例         把用户U4修改学生学号的权限收回

                                                            REVOKE UPDATE(Sno)

                                                            ON TABLE Student

                                                            FROM U4;

                                                  收回所有用户对表SC的查询权限

                                                            REVOKE SELECT

                                                            ON TABLE SC

                                                            FROM PUBLIC;

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

                                                            REVOKE INSERT

                                                            ON TABLE SC

                                                            FROM U5 CASCADE;

                       角色        

                                创建         CREATE ROLE <角色名>;

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

                                                            GRANT <角色>[,<角色>...]

                                                            TO <用户|角色>[,<用户|角色>...]

                                                            [WITH ADMIN OPTION]

                                                  去掉用户的某角色

                                                            REVOKE <角色>[,<角色>...]

                                                            FROM <用户>[,[用户]...]

                               举例         角色R1拥有Student表的SELECT、UPDATE、INSERT权限,授予王平、张明、赵玲三人R1角色,之后取消角色R1的INSERT和UPDATE权限,之后收回王平的R1角色

                                                            CREATE ROLE R1;

                                                            GRANT SELECT, UPDATE, INSERT ON TABLE Student TO R1;

                                                            GRANT R1 TO 王平,张明,赵玲;

                                                            REVOKE INSERT, UPDATE ON TABLE Student FROM R1;

                                                            REVOKE R1 FROM 王平;

             MAC(强制存取控制策略)

                       概念         主体--系统中的活动实体,既包括实际用户,也包括用户的各进程

                                          客体--系统中的被动实体,受主体操纵的文件、基本表、索引、试图等

                      理解         系统为主体和客体的每个实例都指派一个敏感度标记(label)

                                         敏感度标记级别:绝密TS、机密S、可信C、公开P

                                         主体的label称为许可证级别,客体的label称为密级

                       MAC的规则

                                仅当主体的许可证级别高于客体的密级时,主体才能读取该客体;

                                仅当主体的许可证级别低于客体的密级时,主体才能写入该客体;

    视图机制        

      为不同的用户定义不同的视图,把数据对象限制在一定的范围内

    审计

             理解         审计功能把用户对数据库的所有操作自动记录下来放到审计日志audit log中。

                                可以审计的事件包括服务器事件、系统权限、语句事件、模式对象事件、用户鉴别、自主访问控制和强制访问控制事件

                                既能审计成功的操作,也可以审计失败的操作

                                开启审计功能,必须打开系统审计开关(系统参数audit_trail=true)

             举例         对修改SC表结构或修改SC表数据的操作进行审计

                                         AUDIT ALTER, UPDATE ON SC;

                               取消对SC表的一切审计

                                         NOAUDIT ALTER, UPDATE ON SC;

    数据加密

             存储加密

                      透明存储加密(内核级加密)

                                在创建表语句中说明需要加密的字段,即可实现:数据操作(增删改查)由DBMS实现自动对数据进行加密解密工作

                       非透明存储加密(通过多个加密函数实现)

             传输加密

                      链路加密

                                在数据链路层进行加密,对报头和报文都加密

                      端到端加密

                                与HTTPS原理相同,采用安全套接层协议SSL,是一种端到端的加密

                                         1.通过CA证书确认通信双方端点的可靠性

                                         2.通过PKI协商加密算法和密钥

                                         3.传输可信数据

    其他安全保护

             推理控制:避免用户利用其能够访问的数据推知更高密级的数据。如函数依赖推知他人工资

             隐蔽信道:

             数据隐私保护技术

  • 相关阅读:
    Android(java)学习笔记6:实现Runnable接口创建线程 和 使用Callable和Future创建线程
    Android(java)学习笔记5:线程的生命周期
    Android(java)学习笔记4:线程的控制
    Android(java)学习笔记3:线程的优先级
    Android(java)学习笔记2:继承Thread类创建线程类
    凑算式
    三洋献瑞
    三洋献瑞
    三洋献瑞
    移动距离
  • 原文地址:https://www.cnblogs.com/yc913344706/p/7475521.html
Copyright © 2011-2022 走看看