现在的位置: 首页 > 综合 > 正文

Oracle学习笔记八:安全管理

2013年02月16日 ⁄ 综合 ⁄ 共 2793字 ⁄ 字号 评论关闭

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='计算机';
    管理员只需要定义记录那些信息,如何处理审计事件
 

抱歉!评论已关闭.