《数据库系统概论》 -- 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.传输可信数据

其他安全保护

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

         隐蔽信道:

         数据隐私保护技术

原文地址:https://www.cnblogs.com/yc913344706/p/7475521.html