数据库系统概论——数据库系统的安全性

一、数据库的安全标准

1、TCSEC/TDI(紫皮书) 

TCSEC/TDI将系统分为4组7个等级,依次是D、C(C1,C2)、B(B1、B2、B3)、A(A1),按照系统可靠或可信程度逐渐增高

TCSEC/TDI安全等级划分
安全级别定义
A1验证设计
B3安全域
B2结构化保护
B1标记安全保护
C2受控的存取保护
C1自主安全保护
D最小保护
  1. A级:具有最高的安全性,适用于对国家安全至关重要的系统。要求系统具备可验证的安全性、多重保护机制以及防止未授权访问的能力。

  2. B级:适用于需要高度安全性的系统,如军事和情报系统。要求系统具备强大的访问控制、完整性保护和可信度验证等功能。

  3. C级:适用于需要一定安全性的商业和政府系统。要求系统具备基本的访问控制、完整性保护和可信度验证等功能。

  4. D级:适用于普通商业和政府系统。要求系统具备基本的用户认证和访问控制功能。

  5. C1级:适用于需要一定安全性的商业和政府系统。要求系统具备基本的访问控制、完整性保护和可信度验证等功能。

  6. C2级:适用于需要中等安全性的商业和政府系统。要求系统具备强大的访问控制、完整性保护和可信度验证等功能。

  7. C3级:适用于需要一定安全性的商业和政府系统。要求系统具备基本的访问控制、完整性保护和可信度验证等功能。

2、CC评估

CC(Common Criteria)是一种国际标准,用于评估和认证信息技术产品和系统的安全性。CC旨在提供一个共同的框架,使各个国家和组织能够进行一致的安全评估和认证。

CC标准由国际标准化组织(ISO)和国际电工委员会(IEC)共同制定和管理。它基于先前的TCSEC(Trusted Computer System Evaluation Criteria)和ITSEC(Information Technology Security Evaluation Criteria)标准,并结合了各个国家和地区的安全要求和实践。

CC评估保证级(EAL)的划分
评估保证评级定义TCSEC安全级别
EAL1工作测试
EAL2结构测试C1
EAL3系统地测试和检查C2
EAL4系统地设计、测试和复查B1
EAL5半形式化设计和测试B2
EAL6半形式化验证的设计和测试B3
EAL7形式化验证的设计和测试A1

粗略而言,TCSEC的C1和C2级分别相当于EAL2和EAL3;B1、B2和B3分别相当于EAL4、EAL5和EAL6;A1对应于EAL7

二、数据库权限管理

1、授权:授予与收回

1.1 GRANT

一般格式:

GRANT 权限列表 
ON 数据库对象 
to 用户名;

其中,权限列表表示要授予的权限,可以是一个或多个权限的组合,例如SELECT, INSERT, UPDATE等。用户名表示要授予权限的用户。

在大型的数据库系统往往需要用到 "WITH GRANT OPTION" 允许获得授权的用户将权限授予其他用户,为可选项。

1.2 REVOKE

一般格式:

REVOKE 权限列表 
FROM 用户名;

 其中,权限列表表示要收回的权限,可以是一个或多个权限的组合。用户名表示要收回权限的用户。

1.3创建数据库模式的权限

创建用户时授予创建数据库模式的权限

一般格式:

-- 创建用户并赋予DBA角色
CREATE USER 用户名 IDENTIFIED BY '密码' WITH DBA;

-- 创建用户并赋予RESOURCE角色
CREATE USER 用户名 IDENTIFIED BY '密码' WITH RESOURCE;

-- 创建用户并赋予CONNECT角色
CREATE USER 用户名 IDENTIFIED BY '密码' WITH CONNECT;

DBA:超级用户,拥有所有权限并可以将权限授予其他人

RESOURCE:不能创建模式,不能创建新的用户,不能将权限授予其他人

CONNECT:只能登录数据库,其他权限均需要高级别用户授予

1.4 数据库角色

数据库角色是一组权限的集合,可以将这些权限分配给用户或其他角色。

以下是一些常见的数据库角色:

  1. 系统管理员(Sysadmin):拥有最高级别的权限,可以执行数据库的任何操作,包括创建、修改和删除数据库对象,以及管理用户和角色等。

  2. 数据库管理员(DBA):拥有对数据库的管理权限,可以执行数据库的维护任务,如备份和恢复,性能调优等。

  3. 数据库开发者(Developer):拥有对数据库对象的创建、修改和删除权限,可以执行查询、插入、更新和删除操作。

  4. 数据分析师(Analyst):拥有对数据库的查询权限,可以执行复杂的数据分析和报表生成操作,但不能修改数据库对象。

  5. 数据读取者(Reader):拥有对数据库的只读权限,可以执行查询操作,但不能修改数据库对象。

除了上述常见的角色,一些数据库管理系统还提供了更细粒度的角色,可以根据具体需求进行自定义。例如,某些数据库管理系统提供了表空间管理员、安全管理员、审计管理员等角色。

角色的创建:

CREATE ROLE < 角色名 >;

给角色授权:

GRANT 角色
ON <对象类型>[对象名]
TO 角色;

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

GRANT 角色1
TO 角色2
[WITH ADMIN OPTION];

"WITH ADMIN OPTION"语句允许角色或用户将权限授予其他的角色 ,为可选项。

回收权限:

REVOKE 权限
ON <对象类型>[对象名]
FROM 角色;

使用数据库角色的原因:方便管理权限。创建角色之后,直接将角色授予用户就可以实现授权。

1.5强制存取控制方法

自主存取控制是基于存取权限或特权概念及其实现技术与机制,哪个用户对哪个数据对象具有什么样的权限通过授权来说明。可通过存取控制矩阵来实现。强制存取控制方法是为保证更高程度的安全性,按照TDI/TCSEC标准中安全策略的要求,所采取的强制存取检查手段。

在数据库中,并非所有的用户都要(能)存取所有的数据。用户必须获得适当的权限才可以对所请求的数据其进行相应的操作。检查用户对数据存取权限的过程称就是存取控制。在物理层或逻辑层都可以进行存取控制。

下面是一些常见的强制存取控制方法:

  1. 标签安全(Label Security):通过为每个资源和用户分配标签,对系统中的对象和用户进行分类和标记。然后,定义访问策略,确保只有具有相应标签的用户才能访问相应的资源。

  2. 多层安全(Multi-Level Security,MLS):用于处理多个安全级别的信息系统。每个信息对象和用户都具有安全级别,并根据其级别进行访问控制。MLS通常使用安全策略和安全规则来管理不同级别的信息。

  3. 强制访问控制列表(Mandatory Access Control List,MACL):类似于常规的访问控制列表(ACL),但具有更严格的访问控制规则。MACL定义了每个资源的访问规则,并确保只有满足规则的用户才能访问资源。

  4. 安全策略强制(Security Policy Enforcement,SPE):通过强制执行安全策略来控制对系统资源的访问。安全策略可以定义哪些用户可以访问哪些资源,并规定了访问所需的条件和权限。

三、视图机制

数据库的视图机制是一种用于简化数据访问和提供数据安全性的技术。视图是一个虚拟表,它是基于一个或多个基本表的查询结果,可以像表一样进行查询和操作。以下是数据库视图机制的一些关键特点:

  1. 数据抽象:视图隐藏了底层表的复杂性和细节,只显示特定的数据子集。用户可以通过查询视图来获取所需的数据,而无需直接访问底层表。

  2. 数据安全性:通过视图,可以控制用户对数据的访问权限。可以定义视图来限制用户只能看到和操作特定的数据列和行,从而提高数据的安全性。

  3. 数据逻辑独立性:通过视图,可以将底层表的结构和逻辑与应用程序解耦。如果底层表的结构发生变化,只需要更新视图的定义,而不需要修改应用程序的代码。

  4. 数据集成:通过视图,可以将多个表的数据集成到一个虚拟表中。这样,用户可以通过查询视图来获取跨多个表的数据,而无需编写复杂的连接查询。

  5. 性能优化:视图可以预先计算和缓存查询结果,以提高查询性能。如果多个用户频繁访问相同的查询结果,可以使用视图来避免重复计算。

数据库管理系统提供了创建、修改和删除视图的语法和工具。通常,可以使用SQL语句来定义视图的查询逻辑,并使用CREATE VIEW语句创建视图。视图可以像表一样进行查询和操作,但不能直接修改底层表的数据。任何对视图的修改实际上是对基本表的修改。

需要注意的是,视图的性能可能受到底层表的性能影响。如果视图的查询涉及复杂的连接和过滤条件,可能会导致性能下降。因此,在设计视图时,需要考虑查询的复杂性和底层表的性能。

例:建立计算机系学生的视图,把该视图的SELECT权限均授予王平,把该视图的所有权限授予张明

创建视图:
CREATE VIEW computer_students AS
SELECT * FROM students
WHERE department = '计算机系';

授予权限给王平:
GRANT ALL 
ON computer_students 
TO 张明;

授予权限给张明:
GRANT ALL 
ON computer_students 
TO 张明;

四、审计

数据库审计是一种监控和记录数据库活动的过程,旨在确保数据的安全性、完整性和合规性。通过审计,可以跟踪和记录数据库的各种操作,包括用户登录、数据修改、查询操作等,以便进行安全审计、故障排查和合规性验证。

数据库审计的主要目的是:

  1. 安全性:通过审计,可以检测和防止未经授权的访问、数据泄露和恶意活动。审计日志可以提供有关谁、何时、从哪里、如何访问数据库的详细信息,以便及时发现和应对安全威胁。

  2. 完整性:审计可以记录数据库中的数据修改操作,包括插入、更新和删除。通过审计日志,可以追踪和验证数据的修改历史,从而确保数据的完整性和可信度。

  3. 合规性:许多行业和法规要求对数据库进行审计以确保合规性,如金融、医疗和隐私保护等领域。审计可以提供证据,证明数据库的操作符合相关法规和政策要求。

数据库审计通常包括以下关键步骤:

  1. 定义审计策略:确定需要审计的数据库对象和操作类型。可以选择审计整个数据库、特定表或特定用户的操作。

  2. 配置审计设置:根据审计策略,配置数据库管理系统的审计功能。不同的数据库管理系统提供了不同的审计功能和配置选项。

  3. 监控审计日志:定期监控和分析审计日志,以便及时发现异常活动和安全事件。可以使用日志分析工具来自动化审计日志的监控和分析。

  4. 响应审计事件:对于发现的异常活动或安全事件,及时采取适当的措施,如阻止未经授权的访问、修复数据损坏等。

1.审计事件

审计事件是指数据库中需要被审计的具体操作或事件。常见的审计事件包括用户登录、数据修改、查询操作、DDL语句执行等。通过定义审计事件,可以确定需要监控和记录的数据库活动。

2.审计功能

审计功能是数据库管理系统提供的用于实现审计的特性和功能。不同的数据库管理系统提供了不同的审计功能,包括审计日志记录、审计报告生成、审计策略配置等。审计功能可以帮助管理员实现对数据库活动的监控和记录。

3.AUDIT语句和NOAUDIT语句

AUDIT语句和NOAUDIT语句是用于在数据库中启用或禁用审计功能的SQL语句。

  • AUDIT语句用于启用审计功能,可以指定要审计的事件和对象。语法如下:

AUDIT { { { SELECT | INSERT | UPDATE | DELETE | EXECUTE } [ ANY | ALL ] } | { <object_privilege> } }
[ BY { SESSION | ACCESS } ]
[ WHENEVER { NOT } SUCCESSFUL ]
[ [ BY { <grantee> | PUBLIC } ] [ { BY { <grantee> | PUBLIC } }... ] ]
[ [ USING [ <audit_option> ] [ , [ <audit_option> ]... ] ]
  • AUDIT语句中的参数说明:

    • SELECT、INSERT、UPDATE、DELETE、EXECUTE:要审计的具体操作。
    • ANY、ALL:指定要审计的对象。
    • <object_privilege>:要审计的对象权限。
    • BY SESSION、BY ACCESS:指定审计记录是基于会话还是基于访问。
    • WHENEVER NOT SUCCESSFUL:只审计失败的操作。
    • BY <grantee>:指定要接受审计记录的用户或角色。
    • USING <audit_option>:指定要记录的附加信息。
  • NOAUDIT语句用于禁用审计功能,可以取消之前使用AUDIT语句启用的审计设置。语法如下:

    NOAUDIT { { { SELECT | INSERT | UPDATE | DELETE | EXECUTE } [ ANY | ALL ] } | { <object_privilege> } }
    [ BY { SESSION | ACCESS } ]
    [ [ BY { <grantee> | PUBLIC } ] [ { BY { <grantee> | PUBLIC } }... ] ]
    [ [ USING [ <audit_option> ] [ , [ <audit_option> ]... ] ]
    

    NOAUDIT语句的参数和语法与AUDIT语句相同,用于取消之前启用的审计设置。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值