第5章 Oracle 10G 安全机制.docx
《第5章 Oracle 10G 安全机制.docx》由会员分享,可在线阅读,更多相关《第5章 Oracle 10G 安全机制.docx(15页珍藏版)》请在冰豆网上搜索。
![第5章 Oracle 10G 安全机制.docx](https://file1.bdocx.com/fileroot1/2023-2/23/81d7b2be-2287-4feb-9f07-d475f0a67013/81d7b2be-2287-4feb-9f07-d475f0a670131.gif)
第5章Oracle10G安全机制
第5章Oracle10G安全机制
数据库中的数据的安全性主要涉及到以下几个方面:
身份验证:
保证只有合法的用户才能登录并使用数据库。
访问控制:
即使是合法用户,也要控制用户对数据库对象的访问,拒绝非授权访问,防止信息泄密。
可审计性:
哪怕是非法用户的入侵行为和破坏行为也能跟踪,恢复数据。
语义保密性:
数据库中的数据以某种加密的形式存储,这样非法用户即使得到数据文件也无法利用。
用户帐号管理
创建用户帐号
创建用户的语法格式如下所示:
CREATEUSER用户名IDENTIFIEDBY口令
[DEFAULTTABLESPACE默认表空间]
[TEMPORARYTABLESPACE临时表空间]
[QUOTA[数值K|M]|[UMLIMITED]ON表空间名]
[PROFILE概要文件名]
[ACCOUNTLOCK]|[ACCOUNTUNLOCK]
•缺省表空间
–DEFAULTTABLESPACEtablename
•临时表空间
–TEMPORARYTABLESPACEtempname
•配额
–限制用户所能使用的存储空间的大小。
默认情况下,新建用户在任何表空间都不具任何配额
–QUOTA……ONtablename
•用户在临时表空间中不需要配额,在临时表空间中创建的所有临时段都属于SYS模式
用户的帐号有两种状态,DBA可以通过设置状态的方法使账户可用或不可用。
一.帐号锁定
锁定帐号可以使某个帐号不可用。
ALTERUSERusernameACCOUNTLOCK;
二.账户解锁
该状态下,帐号可以正常登陆。
ALTERUSERusernameACCOUNTUNLOCK;
创建用户示例
CREATEUSERtestIDENTIFIEDBYpwd
DEFAULTTABLESPACEUSERS
TEMPORARYTABLESPACETEMP
QUOTA5MONUSERS;
•注意
–新创建的用户并不能直接连接到数据库中,因为它不具有CREATESESSION系统权限,因此,在新建数据库用户后,通常需要使用GRANT语句为用户授予CREATESESSION权限
修改用户账号
修改用户账号的语法格式如下所示:
ALTERUSER用户名IDENTIFIEDBY口令
[DEFAULTTABLESPACE默认表空间]
[TEMPORARYTABLESPACE临时表空间]
[QUOTA[数值K|M]|[UMLIMITED]ON表空间名]
[PROFILE概要文件名]
[ACCOUNTLOCK]|[ACCOUNTUNLOCK]
删除用户账号
删除用户账号的语法格式如下所示:
DROPUSERusernameCASCADE;
其中CASCADE表示级联,即删除用户之前,先删除它所拥有的实体。
权限管理
权限是执行某一种操作的能力,在Oracle数据库中是利用权限来进行安全管理的,Oracle系统通过授予和撤销权限来实现对数据库安全的访问控制,这些权限可以分为两类:
系统权限:
指在系统级控制数据库的存取和使用的机制。
如是否能启动、停止数据库。
是否能修改数据库参数等。
Oracle提供了众多的系统权限,每一种系统权限指明用户进行某一种或某一类特定的数据库操作。
系统权限中带有ANY关键字指明该权限的范围为数据库中的所有方案。
对象权限:
对象权限指在特定数据库对象上执行某项操作的能力。
与系统权限相比,对象权限主要是在Oracle对象上能够执行的操作,如查询、插入、修改、删除、执行等。
这里的Oracle对象主要包括表、视图、聚簇、索引、序列、快照、函数、包等。
不同的Oracle对象具有不同的对象权限,如表具有插入的对象权限,而序列却没有,而序列具有的执行对象权限表也没有。
授予系统特权的语法如下:
GRANT{system_privilege|role}
TO{user|role|PUBLIC}
[WITHADMINOPTION];
•WITHADMINOPTION:
允许得到权限的用户将权限转授其他用户
•PUBLIC:
表示系统中所有用户(用于简化授权)
•系统权限授予时需要注意的几点:
Ø只有DBA才应当拥有ALTERDATABASE系统权限。
Ø应用程序开发者一般需要拥有CREATETABLE、CREATEVIEW和CREATEINDEX等系统权限。
Ø普通用户一般只具有CREATESESSION系统权限。
回收系统特权的语法如下:
REVOKE{system_privilege|role}
FROM{user|role|PUBLIC};
•注意事项
Ø多个管理员者授予用户同一个系统权限后,其中一个管理员回收其授予该用户的系统权限时,该用户不再拥有该系统权限。
Ø为了回收用户系统权限的传递性(授权时使用了WITHADMINOPTION子句),必须先回收其系统权限,然后再授予其相应的系统权限。
Ø如果一个用户获得的系统权限具有传递性(授权时使用了WITHADMINOPTION子句),并且给其他用户授权,那么该用户系统权限被回收后,其他用户的系统权限并不受影响。
•对象权限的授权
Ø语法结构
GRANTobj_priv_list|ALLON[schema.]object
TOuser_list|role_list
[WITHGRANTOPTION
Ø示例:
将scott模式下的emp表的SELECT、UPDATE、INSERT权限授予user1用户。
GRANTSELECT,INSERT,UPDATEONscott.emp
TOuser1;
•对象权限的回收
Ø语法结构
REVOKEobj_priv_list|ALLON[schema.]objectFROMuser_list|role_list;
•需要注意的几点
Ø多个管理员者授予用户同一个对对象权限后,其中一个管理员回收其授予该用户的对象权限时,不影响该用户从其他管理员处获得的对象权限。
Ø为了回收用户对象权限的传递性(授权时使用了WITHGRANTOPTION子句),必须先回收其对象权限,然后再授予其相应的对象权限。
Ø如果一个用户获得的对象权限具有传递性(授权时使用了WITHGRANTOPTION子句),并且给其他用户授权,那么该用户的对象权限被回收后,其他用户的对象权限也被回收。
角色概述
权限是Oracle数据库定义好的执行某些操作的能力。
角色是权限管理的一种工具,即有名称的权限的集合。
权限和角色是密不可分的。
DBA可以利用角色来简化权限的管理。
Oracle数据库就借用了角色这种概念来实现这种权限管理的方法,达到简化权限管理的目的。
角色是对权限进行集中管理(授予、回收)的一种方法,它是一组相关权限的组合,即将不同的权限组合到一起就形成了角色。
•角色的概念
Ø所谓角色就是一系列相关权限的集合
创建角色语法格式如下所示:
CREATEROLE角色名[IDENTIFIEDBY口令];
进行角色授权格式如下所示
GRANT[权限]|[,]
TO[角色]|[PUBLIC]|[,]
[WITHADMINOPTION];
例题:
1.创建角色
CREATEROLEhigh_manager_role
CREATEROLEmiddle_manager_roleIDENTIFIEDBYmiddlerole;
CREATEROLElow_manager_roleIDENTIFIEDBYlowrole;
2.给角色授予权限。
GRANTCONNECT,CREATETABLE,CREATEVIEWTOlow_manager_role;
GRANTCONNECT,CREATETABLE,CREATEVIEWTOmiddle_manager_role;
GRANTCONNECT,RESOURCE,DBATOhigh_manager_role;
GRANTSELECT,UPDATE,INSERT,DELETEONscott.empTOhigh_manager_role;
3.把角色赋予用户:
(特别说明,授予角色不是实时的。
如下:
)
grantlow_manager_roletotestdb;
4.起用角色:
给用户赋予角色,角色并不会立即起作用。
(1)必须下次断开此次连接,下次连接才能起作用。
(2).或者执行命令setroletestrole
查询角色信息
•DBA_ROLES:
包含数据库中所有角色及其描述。
•DBA_ROLE_PRIVS:
包含为数据库中所有用户和角色授予的角色信息。
•USER_ROLE_PRIVS:
包含为当前用户授予的角色信息。
•ROLE_ROLE_PRIVS:
为角色授予的角色信息。
•ROLE_SYS_PRIVS:
为角色授予的系统权限信息。
•ROLE_TAB_PRIVS:
为角色授予的对象权限信息。
•SESSION_PRIVS:
当前会话所具有的系统权限信息。
•SESSION_ROLES:
当前会话所具有的角色信息。
角色类型
–系统预定义角色
–用户自定义角色
概要文件概述
概要文件(profile)是一个命名的资源限定的的集合,它是Oracle安全策略的重要组成部分。
利用概要文件,可以限制用户对数据库或者资源的使用,更多的是为用户设置口令策略。
通常情况下,可以按角色建立不同的概要文件,依据每个用户所属的角色为它分配不同的概要文件,而不用为每个用户创建单独的概要文件。
创建和分配概要文件
创建概要文件格式如下所示
CREATEPROFILE概要文件名LIMIT
CONNECT_TIME数值
IDLE_TIME数值
CPU_PER_CALL数值
CPU_PER_SESSION数值
LOGICAL_READS_PER_CALL数值
LOGICAL_READS_PER_SESSION数值
SESSIONS_PER_USER数值
COMPOSITE_LIMIT数值
PRIVATE_SGA数值
FAILED_LOGON_ATTEMPTS数值
PASSWORD_LIFE_TIME数值
PASSWORD_GRACE_TIME数值
PASSWORD_LOCK_TIME数值
PASSWORD_REUSE_TIME数值
PASSWORD_REUSE_MAX数值
PASSWORD_VERIFY_FUNCTION数值;
概要文件中参数
•资源限制参数
–CPU_PER_SESSION
用于指定每个用户的最大并发会话个数.
(单位:
百分之一秒))
–CPU_PER_CALL
限制每次调用(解析,执行或提取数据)可占用的最大CPU时间(单位:
百分之一秒))
–CONNECT_TIME--允许连接时间
任意一个会话连接时间限定在指定的分钟数内
–IDLE_TIME允许空闲时间
–SESSIONS_PER_USER
用户最大并行会话数(指定用户的会话数量
–LOGICAL_READS_PER_SESSION
读取数/会话(单位:
块)
–LOGICAL_READS_PER_CALL
限制每次调用的最大逻辑I/O次数.
–PRIVATE_SGA专用sga
–COMPOSITE_LIMIT
组合限制(单位:
单元)
•口令管理参数
–FAILED_LOGIN_ATTEMPTS
用于指定联系登陆的最大失败次数.
–PASSWORD_LOCK_TIME
用于指定帐户被锁定的天数
为了控制帐户锁定,必须首先执行CREATEPROFILE命令建立PROFILE,然后使用ALTERUSER命令将profile分配给用户.
CREATEPROFILElock_accoutLIMIT
FAILED_LOGIN_ATTEMPTS3
PASSWORD_LOCK_TIME10;
ALTERUSERdevepPROFILElock_account
如果建立PROFILE时没有提供PASSWORD_LOCK_TIME选项,将自动使用默认值(UNLIMITED),在这种情况下,需要DBA手工解锁.
ALTERUSERdevepUNLOCK;
PASSWORD_LIFE_TIME
口令有效期(单位:
天)
PASSWORD_GRACE_TIME
用于指定口令宽限期为了强制用户定期改变口令,二者必须同时设置.
CREATEPROFILEpassword_life_imeLIMIT
PASSWORD_LIFE_TIME10
PASSWORD_GRACE_TIME2;
–PASSWORD_REUSE_MAX
用于指定在重用口令之前口令需要改变的次数.(单位:
次)
–PASSWORD_REUSE_TIME
用于指定口令可重用时间(单位:
天)
–PASSWORD_VERIFY_FUNCTION
启用口令复杂函数
口令复杂性校验是指使用PL/SQL函数确保用户口令的有效性,从而加强用户使用复杂口令.安装oracle数据库时,oracle提供了sql脚本UTLPWDMG.SQL,该脚本用于建立系统口令校验函数VERIFY_FUNCTION,此口令校验函数实现了以下口令规则.口令不能少于4个字符,口令不能与用户名相同,口令至少包含一个字符,一个数字和一个特殊字符($,_,#,!
等)
需要注意,当建立系统口令校验函数VERIFY_FUNCTION时,必须以SYS用户运行SQL脚本utlpwdmg.sql.
建立系统口令校验函数VERIFY_FUNCTION,还会修改DEFAULT的其他口令管理选项.建立了VERIFY_FUNCTION函数后,如果在修改用户口令时口令不能满足改函数的规则,将显示错误信息.
如果要禁用口令校验函数,可以将PASSWORD_VERIFY_FUNCTION选项设置为NULL
•将概要文件分配给用户
–CREATEUSERuser5IDENTIFIEDBYuser4PROFILEres_profile;
–ALTERUSERuser5PROFILEpwd_profile;
•修改概要文件
–语法结构
ALTERPROFILEprofile_nameLIMITresource_parameters|
password_parameters;
–示例
ALTERPROFILEpwd_profileLIMITPASSWORD_LIFE_TIME10;
•删除概要文件
–语法结构:
DROPPROFILEprofile_nameCASCADE;
–示例:
DROPPROFILEpwd_profileCASCADE;
•查询概要文件
–USER_PASSWORD_LIMITS
–USER_RESOURCE_LIMITS
–DBA_PROFILES
审计
准备审计
showparameteraudit
(1)AUDIT_FILE_DEST
指示出审计的文件存放的路径信息
(2)audit_sys_operations
默认值是FALSE,如果开启审计功能,这个参数需要修改为TRUE
(3)AUDIT_TRAIL=NONE|DB|OS
DB--审计信息记录到数据库中
OS--审计信息记录到操作系统文件中
NONE--关闭审计(默认值)
altersystemset
audit_sys_operations=TRUEscope=spfile;
修改参数audit_sys_operations为“TRUE”,开启审计的功能
altersystemsetaudit_trail=dbscope=spfile;
修改参数audit_trail为“db”,审计信息记录到数据库中
登录审计
操作审计
对象审计
对象审计