数据库系统概论笔记(4)

第4章数据库安全性

4.1数据库安全性概述

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

数据库的不安全因素

  1. 非授权用户对数据库的恶意存取和破坏
  2. 数据库中重要或敏感的数据被泄露
  3. 安全环境的脆弱性

安全标准简介

CC:通用准则(一个IT安全准则,是国际标准,也是国家标准)
从四个方面来描述安全级别划分的指标:安全策略、责任、保证、文档

(课程主要围绕C2讲)

4.2数据库安全性控制


超级用户(DBA)->账户级别(程序员用户)->关系级别(普通用户)

用户身份鉴别

定位:最外层安全保护措施
每个系统中都有一个用户标识(用户标识由用户名(user name)、用户标识号(UID)两部分组成,UID在整个生命周期内是唯一的)
常用的用户身份鉴别方法:

  1. 静态口令鉴别:
    当前常用的鉴别方法,一般由用户自己设定
  2. 动态口令鉴别:
    目前较为安全的鉴别方式,口令是动态变化的
  3. 生物特征鉴别:
    通过生物特征进行认证的技术
  4. 智能卡识别

存取控制

存取控制机制包括:定义用户权限、合法权限检查
这两个机制组成了DBMS的存取控制子系统

  1. 定义用户权限
    将用户权限登记到数据字典当中
  2. 合法权限检查
    DBMS查找数据字典,按照安全规则进行合法权限检查

两类方法:

  1. 自主存取控制(C1级支持)
    同一用户对不同数据库对象有不同的权限,不同用户对同一数据库对象也有不同的权限
    授权用户可以将权限转授给其他用户
  2. 强制存取控制(B1级支持)
    任意一个对象,只有具有合法许可证的用户才可以存取

自主存取控制方法

用户权限由两个要素组成:数据库对象和操作类型
定义存取权限称为授权
存取控制的对象不仅有数据本身,还有数据库模式

授权:授予与收回

GRANT授予,REVOKE收回

  • GRANT
    语义:将对指定操作对象的指定操作权限授予指定的用户
    被授权的用户还可以把这种权限再授予其他用户(但不允许循环授权)
    一般格式:
GRANT <权限> [,<权限>]...
ON <对象类型> <对象名> [,<对象类型> <对象名>]...
TO <用户> [,<用户>]... //可以是一个或多个用户,PUBLIC代表全体用户
[WITH GRANT OPTION];
例:
单权限 单用户
GRANT SELECT
ON TABLE Student
TO U1;
所有权限 单用户
GRANT ALL PRIVILEGES
ON TABLE Student,Course
TO U2,U3;
单权限 所有用户
GRANT SELECT
ON TABLE SC
TO PUBLIC;
多指定权限 单用户
GRANT UPDATE(Sno),SELECT
ON TABLE Student
TO U4
WITH GRANT OPTION; //允许传播权限
  • REVOKE
    授予用户的权限可由数据库管理员或其他授权者用REVOKE语句收回
    若用户权限级联其他用户权限,且无声明CASCADE,权限收回会拒绝
    一般格式:
REVOKE <权限> [,<权限>]...
ON <对象类型> <对象名> [,<对象类型> <对象名>]...
FROM <用户> [,<用户>] ... [CASCADE|RESTRICT]; //默认RESTRICT,CASCADE是级联收回
  • 创建数据库模式的权限
    只有超级用户才有权创建一个新的数据库用户
    新创建的数据库用户有三种权限:CONNECTRESOURCEDBA
    一般格式:
CREATE USER <username> [WITH][DBA|RESOURCE|CONNECT];


CREATE USER不是SQL标准)

数据库角色

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

//角色的创建
CREATE ROLE <角色名>
//给角色授权
GRANT <权限> [,<权限>]...
ON <对象类型> <对象名>
TO <角色> [,<角色>]...
//将一个角色授予其他的角色或用户
GRANT <角色1> [,<角色2>]...
TO <角色3> [,<用户1>]...
[WITH ADMIN OPTION] //被授权的角色是否可以传播权限
//角色权限的收回
REVOKE <权限> [,<权限>]...
ON <对象类型> <对象名>
TO <角色> [,<角色>]...

强制存取控制方法

自主存取控制存在数据的“无意泄露”问题(因为用户对数据的存储权限是自主的,是可以将权限传播给其他人的)

在强制存取控制中,实体被分为主体客体两大类
主体:系统中的活动实体
客体:系统中的被动实体(受主体操纵)

对于实体和客体,DBMS为它们每个实例指派一个敏感度标记
敏感度标记:分为绝密(TS)、机密(S)、可信(C)、公开(P)(TS>=S>=C>=P)

用户对客体的存取必须遵循的两个规则:

  1. 主体的许可级别>=客体级别,才能读取相应的客体
  2. 主体的许可级别<=客体级别,才能写入相应的客体(违反这条将造成数据密集从高流向低(数据泄露))

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

4.3视图机制

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

4.4审计

审计:把用户对数据库的所有操作自动记录下来放入审计日志
作用:提供了一种事后检查的安全机制

AUDIT语句和NOAUDIT语句

AUDIT设置审计,NOAUDIT取消审计

例:
对修改SC表的结构、修改SC表的数据的操作进行审计
AUDIT ALTER,UPDATE
ON SC;
取消对SC表的一切审计
NOAUDIT ALTER,UPDATE
ON SC;

4.5数据加密

基本思想:根据一定的算法将原始数据(明文)变换为不可直接识别的格式(密文)
数据加密主要包括:存储加密、传输加密

4.6其他安全性保护

另外的三种技术:推理控制、隐蔽信道、数据隐私保护
推理控制:利用能够访问的数据推知更高密级的数据
数据隐私:控制不愿被他人知道或他人不便知道的个人数据的能力

posted @   kksk43  阅读(320)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
特效
黑夜
侧边栏隐藏
点击右上角即可分享
微信分享提示