【数据库复习】第四章数据库保护 1

数据库安全性:

数据库的一大特点是数据可以共享

数据共享必然带来数据库的安全性问题

数据库系统中的数据共享不能是无条件的共享

 

 

用户标识与鉴别

用户名和口令易被窃取,每个用户预先约定好一个计算过程或者函数

存取控制

常用存取控制方法

自主存取控制(Discretionary Access Control ,简称DAC)

 C2级

 灵活

强制存取控制(Mandatory Access Control,简称 MAC)

B1级

严格

授权与回收

一、GRANT

GRANT语句的一般格式:

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

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

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

       [WITH GRANT OPTION];

语义:将对指定操作对象的指定操作权限授予指定的用户

发出GRANT的用户

DBA

数据库对象创建者(即属主Owner)

拥有该权限的用户

按受权限的用户

一个或多个具体用户

PUBLIC(全体用户)

WITH GRANT OPTION子句:

指定:可以再授予

没有指定:不能传播

 

 

 

二、REVOKE

授予的权限可以由DBA或其他授权者用REVOKE语句收回

REVOKE语句的一般格式为:

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

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

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

 

 

小结:SQL灵活的授权机制

DBA:拥有所有对象的所有权限

不同的权限授予不同的用户

用户:拥有自己建立的对象的全部的操作权限

GRANT:授予其他用户

被授权的用户

“继续授权”许可:再授予

所有授予出去的权力在必要时又都可用REVOKE语句收回

三、创建数据库模式的权限

DBA在创建用户时实现

CREATE USER语句格式

              CREATE  USER  <username>

            [WITH][DBA | RESOURCE | CONNECT]

 

数据库角色

数据库角色:被命名的一组与数据库操作相关的权限

角色是权限的集合

可以为一组具有相同权限的用户创建一个角色

简化授权的过程

类比:Windows操作系统中的用户组

一、角色的创建

CREATE  ROLE  <角色名>

二、给角色授权

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

 ON <对象类型>对象名  

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

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

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

TO  <角色3>[,<用户1>]…

[WITH ADMIN OPTION]

四、角色权限的收回

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

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

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

 

 

 

自主存取控制缺点

可能存在数据的“无意泄露”

原因:这种机制仅仅通过对数据的存取权限来进行安全控制,而数据本身并无安全性标记

解决:对系统控制下的所有主客体实施强制存取控制策略

强制存取控制(MAC)

保证更高程度的安全性

用户不能直接感知或进行控制

适用于对数据有严格而固定密级分类的部门

 军事部门

 政府部门

主体是系统中的活动实体

客体是系统中的被动实体,是受主体操纵的

敏感度标记(Label)

绝密(Top Secret)

机密(Secret)

可信(Confidential)

公开(Public)

主体的敏感度标记称为许可证级别(Clearance Level)

客体的敏感度标记称为密级(Classification Level)

强制存取控制规则

 (1)仅当主体的许可证级别大于或等于客体的密级时,该主体才能取相应的客体

 (2)仅当主体的许可证级别等于客体的密级时,该主体才能相应的客体

修正规则

主体的许可证级别 <=客体的密级  ——>à   主体能写客体

规则的共同点

禁止了拥有高许可证级别的主体更新低密级的数据对象

SQL Server支持两种认证方式

Windows认证模式

混合认证模式

权限分类

对象权限和语句权限

对象权限

针对表、视图、存储过程

决定了能对表、视图、存储过程执行哪些操作,包括UPDATE、DELETE、INSERT、EXECUTE

语句权限

用户是否具有权限来执行某一语句

这些语句通常是一些具有管理性的操作,如创建数据库、表、存储过程等

 

数据库完整性

数据库的完整性

数据的正确性和相容性

数据的完整性和安全性是两个不同概念

数据的完整性

防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据

防范对象:不合语义的、不正确的数据

数据的安全性

保护数据库防止恶意的破坏和非法的存取

防范对象:非法用户和非法操作

为维护数据库的完整性,DBMS必须:

提供定义完整性约束条件的机制

提供完整性检查的方法

违约处理

单属性构成的码有两种说明方法

定义为列级约束条件

定义为表级约束条件

对多个属性构成的码只有一种说明方法

定义为表级约束条件

 

 

插入或对主码列进行更新操作时,RDBMS按照实体完整性规则自动进行检查。包括:

 检查主码值是否唯一,如果不唯一则拒绝插入或修改

 检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改

参照完整性

用REFERENCES短语指明这些外码参照哪些表的主码

例如,关系SC中一个元组表示一个学生选修的某门课程的成绩,(Sno,Cno)是主码。Sno,Cno分别参照引用Student表的主码和Course表的主码

 

用户定义的完整性

CREATE TABLE时定义

列值非空(NOT NULL)

列值唯一(UNIQUE)

检查列值是否满足一个布尔表达式(CHECK)

 

 

CONSTRAINT 约束

CONSTRAINT <完整性约束条件名>

[PRIMARY KEY短语   | FOREIGN KEY短语   | CHECK短语 ]

 

 

 修改表中的完整性限制

使用ALTER TABLE语句修改表中的完整性限制

可以先删除原来的约束条件,再增加新的约束条件

   ALTER TABLE Student

         DROP CONSTRAINT C1;

    ALTER TABLE Student

         ADD CONSTRAINT C1 CHECK (Sno BETWEEN 900000 AND 999999);

    ALTER TABLE Student

         DROP CONSTRAINT C3;

    ALTER TABLE Student

         ADD CONSTRAINT C3 CHECK (Sage < 40);

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆呆水獭_(:_」∠)_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值