-
第九章 安全管理
- 安全控制概述
- 数据安全与数据完整:
- 安全性(Security):保护数据以防止不合法用户故意造成的破坏
- 完整性(Integrily):保护数据以防止合法用户无意中造成的破坏
- 数据库安全控制的目标:是保护数据免受意外或故意的丢失、破坏或滥用。数据库管理员(DBA)负责数据库系统的全部安全
- 数据库安全的威胁
- 可用性的损失
- 机密性数据的损失
- 私密性数据的损失
- 偷窃和欺诈
- 意外的损害
- 安全控制模型
- 授权和认证
- 授权是将合法访问数据库或数据库对象的权限授予用户的过程,具体授予哪些用户对数据库的哪些部分具有哪些操作权限是由一个企业的实际情况决定的。授权的过程包括认证用户对对象的访问请求。
- 认证是一种鉴定用户身份的机制。换言之,认证是检验用户实际是否被准许操作数据库它核实连接到数据库的人(用户)或程序的身份。
- 现在的DBMS通常采用自主存取控制和强制存取控制两种方法来解决数据库安全系统的访问控制问题
- 自主存取控制(Discretionary Control)。用户对不同的数据对象具有不同的存取权限,而且没有固定的关于哪些用户对哪些对象具有哪些存取权限的限制。
- 强制存取控制(Mandatory Control)。每一个数据对象被标以一定的密级,每一个用户也被授予一个许可证级别。对于任意一个对象,只有具有合法许可证的用户才可以存取。因此,强制存取控制本质上具有分层的特点,且相对比较严格。
- 数据安全与数据完整:
- 存取控制
- 自主存取控制
- 大型数据库管理系统几乎都支持自主存取控制(又称为自主安全模式),目前的SQL标准也对自主存取控制提供支持,这主要是通过SQL的GRANT(授予)、REVOKE(收回) 和DENY(拒绝) 语句来实现的。授予和收回权限是数据库管理员(DBA)的职责。
- 权限种类
- 一类是对数据库管理系统进行维护的权限
- 一类是对数据库中的对象和数据进行操作的权限
- 一类是对数据库对象的操作权限,语句权限,eg:创建、删除、修改数据库对象
- 一类是对数据库数据的操作权限,对象权限,eg:对表、视图数据的增、改、删、查权限
- 用户分类
- 系统管理员
- 数据库对象拥有者
- 普通用户
- 强制存取控制
- 在强制存取控制中,DBMS将全部实体划分为主体和客体两大类,
- 主体是系统中的活动实体,既包括DBMS所管理的实际用户,也包括代表用户的各个进程。客体是系统中的被动实体,是受主体操纵的,包括文件,基本表、索引,视图等。对于主体和客体DBMS为它们的每个实例指派一个敏感度标记(Label)。
- 当某一用户(或某一主体)以标记Label注册到系统时,系统要求他对任何客体的存取必须遵循如下规则:
- (1)仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体,
- (2)仅当主体的许可证级别等于客体的密级时,该主体才能写相应的客体。
- 自主存取控制
- 审计跟踪
- 审计跟踪实质上是一种特殊的文件或数据库,系统在上面自动记录用户对常规数据的所有操作。一种典型的审计跟踪记录包含的信息如图所示。
- 审计跟踪实质上是一种特殊的文件或数据库,系统在上面自动记录用户对常规数据的所有操作。一种典型的审计跟踪记录包含的信息如图所示。
- 统计数据库的安全性
- 统计数据库提供基于各种不同标准的统计信息或汇总数据,而统计数据库安全系统是用于控制对统计数据库的访问。
- SQL Server的安全控制
- 身份验证模式
- Windows 身份验证模式
- 当使用Windows身份验证模式时,用户必须首先登录到Windows操作系统中,然后再登录到SQLServer。而且用户登录到 SQL, Server 时,只需选择Windows身份验证模式,而无须再提供登录名和密码,系统会从用户登录到Windows操作系统时提供的用户名和密码中查找当前用户的登录信息,以判断其是否是SQLServer的合法用户。
- 混合身份验证模式
- 如果希望允许非Windows操作系统的用户也能登录到SQL Server 数据库服务器上,则应该选择混合身份验证模式。
- 如果在混合身份验证模式下选择使用SQL授权用户登录SQL Server数据库服务器,则用户必须提供登录名和密码两部分内容,因为SQL Server 必须要用这两部分内容来验证用户的合法身份。
- SQL Server身份验证的登录信息(用户名和密码)都保存在SQL Server实例上,而Windows身份验证的登录信息是由Windows和SQL Server实例共同保存的。
- Windows 身份验证模式
- 登录账户
- SQL Server 2008的安全权限是基于标识用户身份的登录标识符(LoginID,登录ID)的,登录ID就是控制访问SQL Server数据库服务器的用户账户。如果未指定有效的登录ID,则用户不能连接到SQL Server数据库服务器。
- 在SQL Server 2008中,有两类登录账户。一类是由SQL Server自身负责身份验证的登录账户;另一类是登录到SQL Server的Windows网络账户,可以是组账户或用户账户。在安装完SQLServer 2008之后,系统本身会自动地创建一些登录账户,称为内置系统账户。
- 建立账户的语句:CREATE LOCIN,其简化的语法格式如下:
其中各参数的含义为:
login_name:指定创建的登录名。有四种类型的登录名:SQL Server身份验证的登录名;Windows身份验证的登录名、证书映射的登录名和非对称密钥映射的登录名。如果从Windows域账户映射login_name.则login_name必须用方括号[]括起来。
WINDOWS:指定将登录名映射到Windows用户名。
PASSWORD=password:仅适用于SQL Server身份验证的登录名。指定新建登录名的密码。
SID=sid:仅适用于SQLServer身份验证的登录名。指定新登录名的GUID(全球唯一标识符)。如果未选择此选项,则SQL Server将自动指派GUID
DEFAULT_DATABASE=database:指定新建登录名的默认数据库。如果未包括此选项,则默认数据库将设置为master
DEFAULT_LANGUAGE=language:指定新建登录名的默认语言。如果未包括此选项,则默认语言将设置为服务器当前的默认语言。
- 修改登录账户属性的语句:ALTER LOGIN,其语法格式如下:
其中各参数的含义为:
login_name:指定正在更改的登录名。
ENABLE I DISABLE:启用或用此登录名。
PASSWORD='password':仅适用于SQL Server身份验证的登录账户。指定正在更改的登录名的密码。
OLD_PASSWORD='old password':仅适用于SQL Server身份验证的登录账户。要指定新密码的登录名的当前密码。
DEFAUIT_DATABASE=dalabase:指定将指派给该登录名的默认数据库
DEFAULT_LANGUAGE=language:指定将指派给该登录名的默认语言。
NAME=login_name:重命名该登录名的新名称。如果是Windows身份验证的用户,则与新名称对应的Windows的用户名必须与SQL Server中的登录名相关联。
- 删除数据库的语句:DROP LOGIN login_name
- 数据库用户
- 建立数据库用户语句: CREATE USER,其语法格式如下:
其各参数说明如下:
user_name:指定在此数据库中用于识别该用户的名称
LOGIN login_name:指定要映射为数据库用户的SQL Server登录名。login_name 必须是服务器中有效的登录名。
注意:
如果省略FOR LOGIN,则新的数据库用户将被映射到同名的SQLServer 登录名。不能使用CREATE USER语创建 guest 用户,因为每个数据库中均已存在guest用户。默认guest用户是禁用状态,可通过授子uest用户CONNECT权限来启用该用户。
- Guest 用户
- Guest是SQL Server中一个特殊的数据库用户,在实际应用中经常作为数据库的匿名访问者使用。当没有映射到数据库用户的登录账户试图访问数据库时,SQL Server将尝试用guest用户来连接。可以通过为guest用户授予CONNECT权限来启用用户数据库中的guest用户。
- 启用guest用户(使euest用户具有连接权限)的语句如下:
GRANT CONNECT TO guest
- 禁用guest用户(收回guest用户的连接权限)的语句如下:
REVOKE CONNECT TO guest
- 注意: 在每个数据库中还有一个特殊用户:dbo,该用户的全称是data base owner。dbo是创建该数据库的登录账户映射到该数据库中的用户,其所创建的对象都是dbo.对象名。
- 删除数据库用户语句:DROP USER user_name
- 注意:不能从数据库中删除拥有对象的用户。必须先删除或转移安全对象的所有者,然后再删除拥有这些对象的数据库用户
- 建立数据库用户语句: CREATE USER,其语法格式如下:
- 权限管理
- 1. 对象级别的权限
- 授权语句
其中各参数的含义如下:
Permission: 指定可以授予的对象权限。
ALL: 指授予适用于指定对象的所有ANSI-92权限。对于不同的对象,ALL的含义有所不同
PRIVILEGES: 包含此参数是为了符合ANSI-92标准。
ON[OBJECT::][schema_name].objeet_name: 指定被授予权限的对象。如果指定了sehema_name,则OBJECT短语是可选的。如果使用了OBJECT短语,则需要作用域限定符(::)。如果未指定schema_name,则使用默认架构。如果指定了schema_name,则需要架构作用域限定符(.)
TO:指定要向其授予权限的主体,可以是数据库用户名,也可以是用户定义的角色名。
WITH GRANT OPTION:指示该主体还可以向其他主体授子所指定的权限。
Column:指定表、视图或表值函数中将被授予权限的列名。只能在SELECT REFERENCES及UPDATE操作上对列进行授权。
- 拒绝语句 DENY
- 授权语句 REVOKE
- 授权语句
- 2. 语句级别的权限
- SQL Sever允许对执行不同的语句进行权限控制,这些语句主要包括:
- CREATE DATABASE
- CREATE PROCEDURE
- CREATE TABLE
- CREATE VIEW
- CREATE FUNCTION
- BACKUP DATABASE
- BACKUP LOG
- 授权语句 GRANT
eg: GRANT CREATE TABLE TO RosaQdM (授子用户RosaQdM 具有创建表的权限)
- 拒绝权限
eg:DENY CREATE VIEW TO user1 (拒绝用户user1具有创建视图的权限)
- 收权语句
eg:REVOKE CREATE TABLE FROM ROSaOdM(收回用户RosaQdM 创建表的权限)
- SQL Sever允许对执行不同的语句进行权限控制,这些语句主要包括:
- 1. 对象级别的权限
- 角色
- 在数据库中,为便于对用户及权限进行管理,可以将一组具有相同权限的用户组织在一起这一组具有相同权限的用户就称为角色(Role)。
- 为一个角色进行权限管理就相当于对该角色中的所有成员进行操作。
- 在SQL Server 2008中,角色分为预定义的系统角色和用户定义角色两种。同时,根据角色作用范围的不同,系统角色又分为服务器级角色(称为固定服务器角色)和数据库级角色(称为固定数据库角色)。用户定义的角色均是数据库级角色。
- 1. 固定服务器角色
- 2. 固定数据库角色
- 用户定义的角色
- 身份验证模式
- Oracle的安全管理
- 用户与资源管理
- 0racle数据库中的用户按其操作权限的大小可分为DBA用户和普通用户。
- DBA用户:DBA用户是在数据库系统安装时由DBMS自动创建生成的,它们是sys和system用户,拥有全部的系统特权(权限)。
- 普通用户:普通用户是由DBA用户或具有相应特权的用户创建,并授子系统特权的用户。
- 0racle数据库中的用户按其操作权限的大小可分为DBA用户和普通用户。
- 权限管理
- 系统特权
- Connect: 具有这种角色的用户不能在数据库中建立任何对象,但可以查询数据字典及访问有权限的数据库对象。
- Resource: 具有这种角色的用户可以在数据库中建立关系表、视图、序列、索引、聚集,存储过程、存储函数、触发器、数据链路。
- DBA: 这种角色拥有0racle预定义的所有系统特权。
- 对象特权
- 系统特权
- 审计功能
- 对于安全性要求较高的应用场合,DBA或有相应权限的用户可以启用审计系统。
- 用户与资源管理
计算机三级数据库技术备考笔记(九)
最新推荐文章于 2024-08-22 12:09:42 发布