数据库 - 数据库角色

数据库角色

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

角色是权限的集合

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

简化授权的过程

一、角色的创建

CREATE  ROLE  <角色名> 

二、给角色授权

 GRANT  <权限>[,<权限>]…
 ON <对象类型>对象名
 TO <角色>[,<角色>]…

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

GRANT  <角色1>[,<角色2>]…
TO  <角色3>[,<用户1>]…
[WITH ADMIN OPTION] 

四、角色权限的收回

REVOKE <权限>[,<权限>]…
ON <对象类型> <对象名>
FROM <角色>[,<角色>]…
[例11] 通过角色来实现将一组权限授予一个用户。
步骤如下:
1. 首先创建一个角色 R1
    CREATE  ROLE  R1;
2. 然后使用GRANT语句,使角色R1拥有Student表的SELECT、UPDATE、INSERT权限
    GRANT SELECT,UPDATE,INSERT
    ON TABLE Student
    TO R1;
3. 将这个角色授予王平,张明,赵玲。使他们具有角色R1所包含的全部权限
    GRANT  R1
    TO 王平,张明,赵玲;
4. 可以一次性通过R1来回收王平的这3个权限
     REVOKE  R1
     FROM 王平;

[例12] 角色的权限修改
      GRANT DELETE
      ON TABLE Student
      TO R1
[例13] 
    REVOKE SELECT
    ON TABLE Student
    FROM  R1;

可能存在数据的“无意泄露”
原因:这种机制仅仅通过对数据的存取权限来进行安全控制,而数据本身并无安全性标记
解决:对系统控制下的所有主客体实施强制存取控制策略

强制存取控制(MAC)

保证更高程度的安全性

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

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

军事部门

政府部门

主体是系统中的活动实体

DBMS所管理的实际用户

代表用户的各进程

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

文件

基表

索引

视图

敏感度标记(Label)
绝密(Top Secret)
机密(Secret)
可信(Confidential)
公开(Public)

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

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

强制存取控制规则

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

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

修正规则

主体的许可证级别 <=客体的密级 ? 主体能写客体

规则的共同点

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

据对象

DAC与MAC共同构成DBMS的安全机制

实现MAC时要首先实现DAC

原因:较高安全性级别提供的安全保护要包含较低级别的所有保护

把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定程度的安全保护

主要功能是提供数据独立性,无法完全满足要求

间接实现了支持存取谓词的用户权限定义

[例14]建立计算机系学生的视图,把对该视图的SELECT权限授于王平,把该视图上的所有操作权限授于张明 

         先建立计算机系学生的视图CS_Student
              CREATE VIEW CS_Student
    AS
    SELECT  *
    FROM   Student
    WHERE  Sdept=‘CS‘;
在视图上进一步定义存取权限
     GRANT  SELECT
     ON  CS_Student
     TO 王平 ;

     GRANT ALL PRIVILIGES
     ON  CS_Student
     TO  张明;
什么是审计
审计日志(Audit Log)
   将用户对数据库的所有操作记录在上面
DBA利用审计日志
   找出非法存取数据的人、时间和内容
C2以上安全级别的DBMS必须具有
审计分为
用户级审计
针对自己创建的数据库表或视图进行审计
记录所有用户对这些表或视图的一切成功和(或)不成功的访问要求以及各种类型的SQL操作
系统级审计
DBA设置
监测成功或失败的登录要求
监测GRANT和REVOKE操作以及其他数据库级权限下的操作
AUDIT语句:设置审计功能 

NOAUDIT语句:取消审计功能
[例15]对修改SC表结构或修改SC表数据的操作进行审计
           AUDIT ALTER,UPDATE
           ON  SC;

[例16]取消对SC表的一切审计
           NOAUDIT  ALTER,UPDATE
           ON  SC;

数据加密

防止数据库中数据在存储和传输中失密的有效手段

加密的基本思想

加密方法

替换方法

置换方法

混合方法

DBMS中的数据加密

统计数据库安全性

统计数据库

允许用户查询聚集类型的信息(如合计、平均值等)

不允许查询单个记录信息

统计数据库中特殊的安全性问题

隐蔽的信息通道

能从合法的查询中推导出不合法的信息

规则1:任何查询至少要涉及N(N足够大)个以上的记录

规则2:任意两个查询的相交数据项不能超过M个

规则3:任一用户的查询次数不能超过1+(N-2)/M

数据库安全机制的设计目标:

试图破坏安全的人所花费的代价 >> 得到的利益

数据的共享日益加强,数据的安全保密越来越重要

DBMS是管理数据的核心,因而其自身必须具有一整套完整而有效的安全性机制

TCSEC和CC

实现数据库系统安全性的技术和方法

存取控制技术

视图技术

审计技术

自主存取控制功能

通过SQL 的GRANT语句和REVOKE语句实现

角色

使用角色来管理数据库权限可以简化授权过程

CREATE ROLE语句创建角色

GRANT 语句给角色授权

时间: 2024-10-13 20:43:44

数据库 - 数据库角色的相关文章

列出 sql server某个数据库的角色 及 表名

-- USE YOUR DB NAME select QUOTENAME(SCHEMA_NAME(SCHEMA_ID)) + '.' + QUOTENAME(NAME) FROM SYS.TABLES select '[' + schema_name(schema_id) + '].[' + name + ']' from sys.tables SELECT '[' + TABLE_SCHEMA + '].[' + TABLE_NAME + ']' FROM INFORMATION_SCHEMA

达梦数据库的角色管理

达梦数据库的角色管理 角色管理在日常中的使用场景是比较少,一般主要数据库自带的角色,外加针对部分用户或部分表的各性化需求来配置就可以,这篇也同样按之前的思路来对角色的创建.修改.删除等基本功能做下实践操作,及给角增加权限建表等权限,测试权限功能. 1.查看所有角色select * from dba_roles; 2.创建角色接下来我们创建create role role1; 创建一张tab1表做个测试 3.角色添加权限我们先来给这个角色赋值查询表的权限,并分配给test1用户,来做个测试赋值查询

Oracle数据库——数据库安全性管理

一.涉及内容 1.验证系统权限管理. 2.验证角色管理. 3.验证概要文件管理. 二.具体操作 (一) 1.根据以下要求进行系统权限的授予与回收操作. (1)创建用户user1,并为它授予create table.create view 的系统权限以及connect 的系统角色. (2)以user1用户的身份登录系统. (3)回收user1 的create table.create view 的系统权限. 2. 根据以下要求进行角色的创建与授予操作. (1)创建用户角色myrole. (2)为角

sql server 服务器和数据库默认角色

服务器角色:按照从最低级别角色(bulkadmin)到最高级别角色(sysadmin)的顺序进行描述:1.bulkadmin:这个角色可以运行BULK INSERT语句.该语句允许从文本文件中将数据导入到SQL Server2008数据库中,为需要执行大容量插入到数据库的域帐号而设计.2.dbcreator:这个角色可以创建,更改,删除和还原任何数据库.不仅适合助理DBA角色,也可能适合开发人员角色.3.diskadmin:这个角色用于管理磁盘文件,比如镜像数据库和添加备份设备.适合助理DBA4

SqlServer数据库添加角色,角色授权

有时候我们需要跟第三方共享数据,但是又不能数据库完全开放. 所以使用数据库角色授权就能很好的解决这个问题. 以下是工作中用到的Sql语句.就当是做下笔记. --创建角色 role_TechDB EXEC sp_addrole 'role_TechDB' --授予 role_TechDB 对 GXJG_JZGJCSJZLB,GXXX_YXSDWJBSJZL 表的所有权限 GRANT SELECT,DELETE,INSERT,UPDATE ON GXJG_JZGJCSJZLB TO role_Tec

rman还原数据库数据库报错问题处理

报错1.数据库开启block change tracking ,恢复完成后打开因文件不存在报错. RMAN> alter database open resetlogs; RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: ========

数据库 数据库SQL语句五

集合运算 union 并集(两个集合如果有重复部分,那么只显示一次重复部分) union all 并集(两个集合如果有重复部分,那么重复部分显示两次) intersect 交集 minus 差集 --查询部门号是10和20号的员工信息 select * from emp where deptno=10 union select * from emp where deptno=20 集合运算注意事项: 1.参与运算的各个集合必须列数相同,并且类型一致 2.采用第一个集合的表头作为结果集的表头 DM

数据库 数据库编程二

//头文件 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <errno.h> #include <mysql/mysql.h> #include <termios.h> #ifdef __cplusplus extern "C" { #endif //设置退格键不回显 int

redis范围查询应用 数据库 数据库学习 Redis redis范围查询的方法

redis范围查询应用. 需求 根据IP找到对应的城市 原来的解决方案 oracle表(ip_country): 查询IP对应的城市: 1.把a.b.c.d这样格式的IP转为一个数字,例如为把210.21.224.34转为3524648994 2. select city from ip_country where ipstartdigital <= 3524648994 and 3524648994 <=ipenddigital redis解决方案 我们先把上面的表简化一下: id city