整体理解
安全模型(图4.2)
数据库安全技术
数据库管理系统安全性控制模型(图4.3)
重点:
难点:
易错点:
这段前言主要讨论了数据库安全性控制的重要性和组成部分。为了帮助你理解,我将分点概括这段前言的主要内容:
层级的安全措施:
用户身份鉴定:
数据库存取控制:
操作系统的保护措施:
数据的密码存储:
数据库安全技术:
图解解释:
要理解这段前言,关键是要明白数据库安全不仅仅是设置密码或限制访问。它是一个多层次、全方位的过程,包括身份鉴定、存取控制、数据加密等多个方面。每一个环节都非常关键,缺失任何一个都可能导致整个系统的安全性受到威胁。
定义:用户身份鉴别是数据库管理系统提供的最外层安全保护措施。系统内部记录着所有合法用户的标识,并由系统核对每次用户要求进入的身份。
鉴别方法:
静态口令鉴别
动态口令鉴别
生物特征鉴别
智能卡鉴别
总结:为提高数据库安全性,系统提供多种鉴别方法,实际应用中可结合多种方法增强安全性。
这一节主要讲述的是“用户身份鉴别”在数据库管理系统中的重要性及其实现方法。下面简要归纳这一节的核心概念:
用户身份鉴别:为确保数据库的安全性,系统需要核实请求访问的用户是否有权访问。这就需要鉴别用户身份,确保他们是合法的用户。
用户标识:每个用户有唯一的标识,包括用户名和UID。UID特别重要,因为它在整个系统的生命周期中是唯一的,这有助于精确地区分每个用户。
鉴别方法:
核心理解:为了保护数据库,我们需要确保只有合法的用户可以访问它。为此,我们可以使用各种方法来鉴别用户身份,从简单的静态密码到更高级的生物特征鉴别。在选择方法时,需要考虑安全性和实用性,以确保数据库的安全性同时又不给合法用户带来太大的麻烦。
核心目标:确保仅授权用户访问数据库,未授权人员无法访问。
存取控制机制:
定义用户权限
合法权限检查
这两部分组合形成了数据库管理系统的存取控制子系统。
存取控制方法:
自主存取控制 (DAC)
强制存取控制 (MAC)
总结:存取控制是数据库安全的核心,确保只有合法用户可以访问数据。其通过定义用户权限和进行合法性检查来实施。根据需求和安全性级别,可以选择DAC或MAC方法进行存取控制。
这一节“存取控制”主要探讨了如何确保数据库的安全性,确保只有授权的用户可以访问数据库内容,同时保护数据库免受未经授权的访问。以下是关于这一节的核心理解:
存取控制的意义:确保数据库的安全是通过控制谁可以访问数据、如何访问和在何种条件下访问来实现的。
定义用户权限:
合法权限检查:
存取控制方法:
核心理解:为了维护数据库的安全性,必须精心控制对其的访问。存取控制不仅是为了决定谁可以访问数据库,而且还要确定他们可以进行哪些操作。通过使用DAC或MAC方法,组织可以选择适合其需求的存取控制策略。
基本概念:
SQL中的存取控制:
数据库对象和操作:
表4.3概述:
核心理解:自主存取控制允许数据库管理员或用户根据需要为其他用户授予或撤销访问数据库的权限。这些权限定义了用户可以访问的数据库对象以及他们可以执行的操作。在关系数据库中,这些权限更为复杂,因为它们不仅包括对数据本身的操作,还涉及到数据库模式和相关对象的操作。
这一节“自主存取控制方法”深入探讨了数据库中的访问控制方法,特别是关系数据库管理系统。以下是这一节概念的简化和解释:
自主存取控制:
用户权限:
SQL的授权机制:
GRANT
和REVOKE
命令,可以给予或撤回数据库中的特定权限。关系数据库的存取对象和操作:
特殊列权限:
UPDATE
权限允许修改某列的值,但必须遵循某些约束;而列的INSERT
权限可能需要主键权限,因为没有主键,新的记录可能无法插入。自主存取控制方法允许数据库中的数据所有者或管理员授予或撤销其他用户的权限。这些权限定义了用户可以执行的操作和他们可以访问的数据。在关系数据库中,这涉及到更多的对象和操作类型,需要仔细管理以确保数据的安全性和完整性。
GRANT
和REVOKE
语句分别用于向用户授予权限和收回已授予权限。语法:
GRANT <权限>[,<权限>]… ON <对象类型> <对象名>[,<对象类型> <对象名>]… TO <用户>[,<用户>…[WITH GRANT OPTION];
说明:
GRANT
命令的可以是数据库管理员、对象的属主,或已拥有该权限的用户。PUBLIC
)。WITH GRANT OPTION
,授权用户还能将此权限授予他人。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;
GRANT INSERT ON TABLE SC TO U5 WITH GRANT OPTION;
GRANT INSERT ON TABLE SC TO U6 WITH GRANT OPTION;
GRANT INSERT ON TABLE SC TO U7;
权限定义:
授权用户名 | 被授权用户名 | 数据库对象名 | 允许的操作类型 | 能否转授权 |
---|---|---|---|---|
DBA | U1 | 关系Student | SELECT | 不能 |
DBA | U2 | 关系Student | ALL | 不能 |
... | ... | ... | ... | ... |
概述:授予的权限可以使用REVOKE
语句被撤回,可由数据库管理员或其他授权者执行。
语法:
REVOKE <权限>[,<权限>]… ON <对象类型> <对象名>[,<对象类型> <对象名>]… FROM <用户>[<用户>]… [CASCADE|RESTRICT];
示例:
REVOKE UPDATE(Sno) ON TABLE Student FROM U4;
REVOKE SELECT ON TABLE SC FROM PUBLIC;
REVOKE INSERT ON TABLE SC FROM U5 CASCADE;
说明:
权限定义:
授权用户名 | 被授权用户名 | 数据库对象名 | 允许的操作类型 | 能否转授权 |
---|---|---|---|---|
DBA | U1 | 关系Student | SELECT | 不能 |
DBA | U2 | 关系Student | ALL | 不能 |
... | ... | ... | ... | ... |
总结:
REVOKE
语句撤回。这一节的内容主要围绕数据库的权限管理,具体分为授予权限和收回权限两个部分。以下是一个简化的理解:
授予权限 (GRANT)
GRANT
语句来分配权限。WITH GRANT OPTION
允许被授权的用户再次授予他们拥有的权限给其他用户。收回权限 (REVOKE)
REVOKE
语句来收回权限。CASCADE
选项允许自动收回由原始权限传递下去的所有权限。核心观点:数据库中的数据安全和完整性至关重要。通过授予权限,可以确保只有适当的用户可以访问和修改数据。但有时为了安全或其他原因,需要撤销这些权限,这就是REVOKE
的用途。
总而言之,这一节教我们如何合理、安全地管理数据库的访问权限,确保数据的安全性和完整性。
概述:
CREATE USER
语句来为数据库创建新的用户。权限种类:
GRANT
语句授予其他用户访问权限。权限对照表:
拥有的权限 | CREATE USER | CREATE SCHEMA | CREATE TABLE | 登录数据库 |
---|---|---|---|---|
DBA | 可以 | 可以 | 可以 | 可以 |
RESOURCE | 不可以 | 不可以 | 可以 | 可以 |
CONNECT | 不可以 | 不可以 | 不可以 | 可以 |
注意事项:
CREATE USER
语句并不是SQL的一个标准,所以不同的数据库系统可能有不同的实现方式和语法。CREATE USER
的目的是为了强调,对数据库模式这类数据对象也有安全和权限的需求。核心点:通过为数据库用户分配恰当的权限,我们可以确保数据库的安全和完整性,以及控制用户如何与数据库交互。
定义:
核心内容:
角色创建:
CREATE ROLE <角色名>
给角色授权:
GRANT <权限> ON <对象类型> <对象名> TO <角色>
角色之间的授权:
GRANT <角色1> TO <角色3> [WITH ADMIN OPTION]
ADMIN OPTION
的角色/用户可以进一步授权其权限。收回角色权限:
REVOKE <权限> ON <对象类型> <对象名> FROM <角色>
实例:
优点:
结论:
数据库角色是关于权限管理的一种策略。在复杂的数据库系统中,很多用户需要执行类似的任务,并因此需要相似的权限。角色允许管理员将一组权限打包在一起,然后将这个权限包(即角色)授予给多个用户,而不是单独为每个用户分配权限。
要点如下:
定义:角色是与数据库操作相关的权限的集合。其目的是简化权限的管理和分配。
如何使用角色:
CREATE ROLE <角色名>
。GRANT
语句,例如 GRANT SELECT, UPDATE ON TABLE TO <角色名>
。GRANT <角色名> TO 用户1, 用户2, 用户3
。优势:
撤销角色权限:使用 REVOKE
语句,可以从角色中撤销特定权限或从用户中撤销整个角色。
通过理解数据库角色,可以更高效、安全和有组织地管理数据库中的用户权限,确保数据的完整性和安全性。
4.2.6 强制存取控制方法
定义:
背景:
核心概念:
主体和客体:
敏感度标记:
存取规则:
实现原则:
流程:
总结:
这部分内容主要讲述了一种被称为强制存取控制(MAC, Mandatory Access Control)的数据库安全策略。该策略目标是防止数据的无意或恶意泄露。MAC与自主存取控制(DAC, Discretionary Access Control)有所不同,其中DAC允许用户自主决定如何分配他们对数据的访问权限。
要点如下:
问题的根源:在DAC中,由于用户可以自由分配数据的访问权限,存在数据“无意泄露”的风险。例如,用户A可以将他的数据权限授予用户B,但无法保证B不会将数据分享给其他人。
MAC的定义:为解决DAC的局限性,引入了MAC。在MAC下,数据有一个与之关联的“敏感度标记”或“密级”,而用户也有一个“许可证级别”。数据的存取是基于这些标记和级别的比较进行控制的。
敏感度标记:数据和用户都有一个敏感度标记。数据的标记表示数据的密级,如绝密、机密等。用户的标记表示他们可以访问的数据密级。
存取规则:
为什么需要这些规则:这些规则确保了数据的密级不会被不当地降低。例如,高密级用户不能将高密级数据写入低密级,因为这样可能会导致数据泄露。
强制存取控制的目标:MAC旨在确保数据的安全性标记始终与数据一同流动,无论数据如何复制或传输,从而确保只有适当密级的用户才能访问数据。
DAC与MAC的结合:强制存取控制通常与自主存取控制相结合,首先执行DAC检查,然后执行MAC检查。两者都要通过,用户才能访问数据。
简单地说,4.2.6章节介绍了一个高级的安全策略,用于防止数据的无意或恶意泄露,确保只有适当密级的用户才能访问特定密级的数据。
重点:
GRANT
和REVOKE
语句为用户授予或收回对数据的操作权限。CREATE USER
语句为数据库创建新用户,并为其分配特定的权限。CASCADE
和RESTRICT
的含义及其在权限收回中的作用。难点:
易错点:
REVOKE
语句收回不再需要的权限,可能会导致数据泄露。CONNECT
权限。REVOKE
时,未考虑到级联效应可能导致未能完全收回权限。CREATE USER
不是SQL标准,不同的数据库可能有不同的语法,可能导致跨数据库的混淆。通过对数据库安全性控制的学习,能更好地理解和管理数据库的安全性,确保数据的保护和正确的用户访问。