Oracle利用下列机制管理数据库安全性:数据库用户和模式、权限、角色、存储设置和空间份额、资源限制、审计。
1.用户
①创建用户例:
CREATE USER feifei
IDENTIFIED BY chenmo
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
PASSWORD wootion;
授权例:
GRANT DBA TO feifei
WITH ADMIN OPTION; /*拥有授权能力*/
对象授权例:
GRANT ALL ON scott.dept TO feifei WITH GRANT OPTION;
②管理用户例:
ALTER USER feifei ACCOUNT LOCK/UNLOCK; /*锁定feifei账户*/
REVOKE DBA FROM feifei; /*回收feifei的DBA角色*/
REVOKE ALTER,DELETE ON XS FROM feifei,chenmo; /*回收feifei和chenmo对表XS的修改和删除权限*/
③删除用户例:
DROP USER feifei CASCADE; /*参数CASCADE,在撤销用户前,撤销用户模式的所有对象*/
2.权限和角色
①角色
利用CREATE ROLE创建的新角色权限为空,可用GRANT添加权限到角色
CREATE ROLE语法格式:
CREATE ROLE role_name
[NOT IDENTIFIED] /*该角色由数据库授权,不需要使用口令使角色生效*/
[IDENTIFIED BY password|EXTERNALLY|GLOBALLY]
GRANT语法格式:
GRANT system_priv|role TO role
[WITH ADMIN OPTIN]
例:
CREATE ROLE FEIFEI_USER;
GRANT CREATE SESSION,CREATE USER,ALTER USER TO FEIFEI_USER;
②权限管理:权限使执行特等SQL语句和访问对象的权利。Oracle支持系统权限和方案对象权限
系统权限:执行特定操作(如创建数据库、从表中删除行数据等)的权限
方案对象权限:对特定方案对象(表、视图、序列、过程、函数和包等)执行特定操作的权利。
③安全特性:表安全、视图安全、过程安全、类型安全
3.概要文件和数据字典视图
①概要文件:限制由用户使用的系统和数据库资源,并管理口令限制。
②数据字典视图:在SYS用户方案中内置了许多视图,用来查看系统的相关信息。查看用户、角色和权限介绍
ALL_USERS视图:当前用户可以看见的所有用户
DBA_USERS视图:查看数据库中所有用户信息
USER_USERS:当前正在使用数据库的用户信息
DBA_TS_QUOTAS:用户的表空间限额情况
DBA_ROLES:当前数据库中存在的所有角色
DBA_ROLE_PRIVS:授权用户/角色的角色,即用户/角色与角色之间的授予关系
USER_ROLE_PRIVS:授予当前用户的系统权限
DBA_SYS_PRIVS:授予用户或角色的系统权限
USER_SYS_PRIVS:授予当前用户的系统权限
4.审计:监视和记录所选用户的数据活动,审计通常用于调查可疑活动和监视与收集特定数据库活动的数据。审计操作类型包括登陆企图、对象访问和数据库操作。审计记录被存储在数据字典中(SYS方案的AUD$表中,可通过DBA_AUDIT_SESSION数据字典视图查看),包括被审计的操作、执行操作的用户、操作时间等信息。只有安全管理员才能对记录审计信息进行管理。
①登陆审计
AUDIT SESSION; /*对连接数据库进行审计*/
AUDIT SESSION WHENEVER SUCCESSFUL; /*审计连接成功*/
AUDIT SESSION WHENEVER NOT SUCCESSFUL;
NOAUDIT SESSION; /*禁止会话审计*/
错误号:ORA-1005(输入用户名但无口令),ORA-1017(输入无效口令时)
②操作审计:对表、表空间、同义词、回滚段、用户或索引等数据库对象的任何操作都可被审计。
语法格式:
AUDIT {statement_opt | system_priv} /*statement_opt审计操作,system_priv审计的系统权限*/
[BY user,....n] /*指定审计的用户*/
[BY {SESSION | ACCESS}] /*BY SESSION同一会话中同一类型全部SQL语句仅写单个记录;BY ACCESS每个被审计的语句写一个记录*/
[WHENEVER [NOT] SUCCESSFUL]
例:
AUDIT UPDATE TABLE BY feifei; /*使用户feifei的所有更新操作都被审计*/
AUDIT ROLE; /*审计影响角色的所有命令*/
NOAUDIT ROLE; /*禁止审计*/
③对象审计:除系统级对象操作,还可审计对象的数据处理操作,可能包括对表的选择、插入、更新和删除。
语法格式:
AUDIT {object_opt|ALL} ON /*object_opt指定审计操作,ALL指定所有对象类型的对象选项*/
{[schemo.]object | DIRECTORY directory_name | DEFAULT} /*object标识审计对象,必须使表、视图、序列、存储过程、函数、包、快照或同义词*/
[BY SESSION | ACCESS】
[WHENEVER [NOT] SUCCESSFUL] /*只审计完全成功的SQL语句*/
④细致审计:使用DBMS_FGA来管理基于值的审计策略,安全管理员可以基于目标表创建审计策略。
例:审计在表ADMIN.XS中的SELECT语句,监视访问学生记录的ZXF列
DBMS_FGA.ADD_POLICY
(
object_schema=>'admin',
object_name=>'xs',
policy_name=>'chk_admin_xs',
audit_condition=>'zym="计算机"',
audit_column=>'zxf'
);
在审计设置后,下面语句将产生审计事件
SELECT XM,ZXF FROM ADMIN.XS WHERE ZYM='计算机';
管理员只需要定义记录那些信息,如何处理审计事件