sql4数据库安全性

数据库安全性控制的常用方法

用户标识和鉴别

系统提供的最外层安全保护措施方法:

  • 系统提供一定的方式让用户标识自己的名字或身份
  • 系统内部记录着所有合法用户的标识;
  • 每次用户要求进入系统时,由系统核对用户提供的身份标识;
  • 通过鉴定后才提供系统使用权;
  • 用户标识和鉴定可以重复多次。
  • 系统通常采用用户标识与口令相结合的方法判别用户身份的真伪

存取控制

  • 定义存取权限
    • 自主存取控制方法

定义

  • 同一用户对于不同的数据对象有不同的存取权限;
  • 不同的用户对同- -对象也有不同的权限;
  • 用户还可将拥有的存取权限转授给其他用户

用户的存取权限有两个要素

  1. 数据库对象
  2. 操作类型(权限)
--删除服务器用户(登录)u1-u7,登录名
/*
drop login u1;
drop login u2;
drop login u3;
drop login u4;
drop login u5;
drop login u6;
drop login u7;
drop login u8;
*/
--创建服务器用户(登录)u1-u7,登录名
create login u1 with password='u1123456';
create login u2 with password='u2123456';
create login u3 with password='u3123456';
create login u4 with password='u4123456';
create login u5 with password='u5123456';
create login u6 with password='u6123456';
create login u7 with password='u7123456';
create login u8 with password='u8123456';
--sp_helplogins提供有关每个数据库中的登录及相关用户的信息
--sp_helplogins 'u2'

--增加数据库用户,具体到哪个数据库的用户
/*
drop user u1;
drop user u2;
drop user u3;
drop user u4;
drop user u5;
drop user u6;
drop user u7;
drop user u8;
*/
create user u1;
create user u2;
create user u3;
create user u4;
create user u5;
create user u6;
create user u7;
create user u8;
--sp_helpuser当前数据库中数据库用户或数据库角色的名称
sp_helpuser 'u1'
--同名映射,数据库登录名会自动找到和其一样的数据库用户名

授权和回收

  • 在数据库系统中定义存取权限称为授权

    • 定义哪些用户可以在哪些数据库对象上进行哪些类型的操作
  • 标准SQL使用GRANT语句和REVOKE语句来实现对用户的授权和撤销授权操作.

  • 关系系统中,存取控制的数据库对象及权限

    • 模式、基本表、视图、和索引的定义
      • create及alter table
    • 基本表和视图的数据
      • select、insert、 update、 delete、 references,all privileges
    • 属性列的数据
      • select、insert、 update、 references, all privileges
--GRANT语句的一-般格式:
--GRANT <权限> [, <权限>.]..
--[ON <对象名>]
--TO <用户>[,<用户>]...
--[WITH GRANT OPTION];
--如果不写with grant option就不能再次将权限授给其他用户
--语义:将对指定对象的指定操作权限授予指定的用户。
--接受权限的用户:
--。一个或多个具体用户
--。PUBLIC (全体用户)
--WITH GRANT OPTION子句
--获得某种权限的用户还可以把这种权限再授予别的用户,但不允许循环授权。
--若没有指定则:获得某种权限的用户只能使用该权限,不能传播该权限

--授权
--以u2登录student数据库演示其权限
--[例1]把对Student和Course表的查询权限和修改学生学号的权限授予用户U2和U3

grant select,update(sno)--对列的操作
on student
to u2,u3;
grant select--一次只能对一个操作对象进行授权
on course
to u2,u3;

select *
from student
--再次演示u2的权限
--[例2]把对表SC的查询权限授予所有用户
grant select
on sc
to public

--再次演示u2的权限
--[例3]把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户。
grant insert
on sc
to u5
with grant option

--用户u5登录
GRANT INSERT
ON  SC
TO U6
WITH GRANT OPTION;
--用户u6登录
GRANT INSERT 
ON  SC 
TO U7

--回收
--[例4]把用户U2修改学生学号的权限收回
REVOKE UPDATE(Sno)
ON  Student
FROM U2;

--[例5]把用户U5对SC表的INSERT权限收回
REVOKE INSERT 
ON SC 
FROM U5 cascade;--级联回收
--例如,u5把权限传播出去了,仅仅回收u5是不允许的

角色

  • 是被命名的一组与数据库操作相关的权限,是权限的集合。可以将用户集中到一个单元中,然后对该单元应用权限。
  • 对一个角色授予、拒绝或废除的权限也适用于该角色的任何成员。
  • 可以建立一个角色来代表单位中一类工作;人员所执行的工作,然后给这个角色授予适当的权限
  • 简化授权过程
  1. 服务器角色

    • 执行服务器级管理操作的用户权限的集合
    • 是系统内置的
    • 不能创建服务器角色
    • 每个角色有- -定的权限
    • 登录帐户可以添加到服务器角色
  2. 数据库角色:被命名的一组与数据库操作相关的权限。

    • 角色是权限的集合
    • 可以为一组具有相同权限的用户创建一-个角色。如人事处的老师具有一类权限。
    • 简化了授权过程
--创建角色
--drop role r1
CREATE ROLE R1--创建的是数据库角色,里面没有任何权限

sp_helprole --查看当前数据库中的所有角色

--使角色R1拥有Student表的select、update、insert权限
GRANT select,update,insert
ON Student
TO R1

--将这个角色授予用户u1。使他们具有角色R1所包含的全部权限
/*GRANT R1 TO u1,u2,u3 */

sp_addrolemember 'R1','u1'

--删除角色成员
sp_droprolemember 'R1','u1'

--撤销角色R1的权限
REVOKE select
ON Student
FROM  R1

授权和角色都是自主存取方式(DAC)
优点:能够通过授权机制有效地控制其他用户对敏感数据的存取
缺点:可能存在数据的无意泄露
原因:这种机制仅仅通过对数据的存取权限来进行安全控制,而数据本身并无安全性标记
解决:对系统控制下的所有主客体实施强制存取控制策略

强制存取控制(MAC)
一、定义
    1、每一个数据对象被标以一定的密级;
    2、每一个用户也被授予某一个级别的许可证;
    3、对于任意-一个对象, 只有具有合法许可证的用户才可以存取。
二、在MAC中,DBMS所管理的全部实体被分为主体和客体两大类
    1、主体是系统中的活动实体
        DBMS所管理的实际用户/代表用户的各进程
    2、客体是受主体操纵的(文件、基表、索引、视图)
三、对于主体和客体,DBMS为它们每个实例(值)指派-个敏感度标记(Label),标记有若干级别:绝密 机密 可信 公开
四、主体的敏感度标记称为许可证级别
五、客体的敏感度标记称为密级
六、MAC机制就是通过对比主体和客体的敏感度标记,最终确定主体是否能够存取客体

强制存取控制规则:
    1、仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体;
    2、仅当主体的许可证级别等于(小于等于)客体的密级时,该主体才能写相应的客体。
特点:禁止了拥有高许可证的主体更新低密级的数据对象

MAC是对数据本身进行密级标记
    1、无论数据如何复制,标记与数据是一个不可分的整体
    2、只有符合密级标记要求的用户才可以操纵数据,从而提供了更高级别的安全性

  • 合法权限检查

视图机制

把要保密的数据对无权存取这些数据的用户隐藏起来

数据加密

根据一定的算法将原始数据变换为不可直接识别的格式

审计(秋后算账)

审计功能是一种监视措施,跟踪记录有关数据的访问活动。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值