暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

12c新特性权限分析DBMS_PRIVILEGE_CAPTURE

原创 木底木叉 云和恩墨 2022-05-18
1487

一、需要的权限

SQL> grant  CAPTURE_ADMIN  to hr;
Grant succeeded.

二、管理权限分析的步骤

  • 创建/定义权限分析策略。
  • 启用策略。这将开始记录特权使用情况。
  • 禁用策略。停止捕获特权使用。
  • 生成权限分析结果。将结果写入数据字典视图。
  • 分析结果以确定要撤销的候选权限。撤销之前审核候选人特权的使用一段时间
    ,以确保该帐户不会不经常合法地使用该特权。

三、特权分析的类型

  • 基于角色的权限使用捕获。捕获启用角色的会话的权限。
  • 基于上下文的权限使用捕获。捕获具有特定指定条件的会话的权限。
  • 基于角色和上下文的权限使用捕获。这具有基于角色和基于上下文的权限使用捕获的功能。
  • 数据库范围的权限使用捕获。捕获整个数据库中使用的所有权限,SYS 的权限除外。

四、DBMS_PRIVILEGE_CAPTURE过程

1、分析类型
G_DATABASE          1   NUMBER   分析所有权限使用,但SYS用户使用的权限除外。
G_ROLE              2   NUMBER   分析指定角色的权限使用
G_CONTEXT           3   NUMBER   condition为true时,权限使用.
G_ROLE_AND_CONTEXT  4   NUMBER   condition为true时,分析指定角色权限使用
2、子程序
CREATE_CAPTURE        创建策略
DELETE_RUN            删除记录过程
DISABLE_CAPTURE       停止策略
DROP_CAPTURE          删除策略
ENABLE_CAPTURE        启用记录过程
GENERATE_RESULT       填充数据字典

四、语法

DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTURE (
   name            IN  VARCHAR2, --策略名
   description     IN  VARCHAR2 DEFAULT NULL, --描述
   type            IN  NUMBER DEFAULT G_DATABASE, --类型
   roles           IN  ROLE_NAME_LIST DEFAULT ROLE_NAME_LIST(), --分析什么
   condition       IN  VARCHAR2 DEFAULT NULL);--当type为G_CONTEXT或G_ROLE_AND_CONTEXT时填,必须是SYS_CONTEXT函数
DBMS_PRIVILEGE_CAPTURE.DELETE_RUN (
   name      IN VARCHAR2, --策略名
   run_name  IN VARCHAR2);--运行的run_name
DBMS_PRIVILEGE_CAPTURE.DISABLE_CAPTURE (
   name        IN VARCHAR2);
DBMS_PRIVILEGE_CAPTURE.DROP_CAPTURE (
   name      IN VARCHAR2);
DBMS_PRIVILEGE_CAPTURE.ENABLE_CAPTURE (
   name      IN VARCHAR2,
   run_name  IN VARCHAR2 DEFAULT NULL);
DBMS_PRIVILEGE_CAPTURE.GENERATE_RESULT (
   name        IN VARCHAR2,
   run_name    IN VARCHAR2 DEFAULT NULL,
   DEPENDENCY  IN BOOLEAN DEFAULT NULL);

五、案例

SQL> BEGIN
  2  DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTURE(
  3          name         => 'all_priv_analysis_pol',
  4          description  => 'database-wide policy to analyze all privileges',
  5          type         => DBMS_PRIVILEGE_CAPTURE.G_DATABASE);
  6  END;
  7  /

PL/SQL procedure successfully completed.

SQL> BEGIN
  2      DBMS_PRIVILEGE_CAPTURE.ENABLE_CAPTURE (
  3       name       => 'all_priv_analysis_pol',
  4       run_name   => 'all_priv_analysis_pol_run');
  5  END;
  6  /

PL/SQL procedure successfully completed.

SQL> BEGIN
  2      DBMS_PRIVILEGE_CAPTURE.DISABLE_CAPTURE (
  3   name    =>'all_priv_analysis_pol');
  4  END;
  5  /

PL/SQL procedure successfully completed.

SQL> BEGIN
  2      DBMS_PRIVILEGE_CAPTURE.GENERATE_RESULT (
  3       name      => 'all_priv_analysis_pol',
  4       run_name  => 'all_priv_analysis_pol_run');
  5  END;
  6  /

PL/SQL procedure successfully completed.

SQL> SELECT SYS_PRIV, OBJECT_OWNER, OBJECT_NAME, RUN_NAME FROM DBA_USED_PRIVS where username='HR';

SYS_PRIV                       OBJECT_OWN OBJECT_NAME                                        RUN_NAME
------------------------------ ---------- -------------------------------------------------- ------------------------------
                               SYS        DBA_OBJECTS                                        ALL_PRIV_ANALYSIS_POL_RUN
UNLIMITED TABLESPACE                                                                         ALL_PRIV_ANALYSIS_POL_RUN
CREATE TABLE                                                                                 ALL_PRIV_ANALYSIS_POL_RUN

SQL> BEGIN
  2      DBMS_PRIVILEGE_CAPTURE.drop_capture (
  3       name      => 'all_priv_analysis_pol');
  4  END;
  5  /

PL/SQL procedure successfully completed.
--删除策略前先查询,否则会连数据一起删除
SQL> SELECT SYS_PRIV, OBJECT_OWNER, OBJECT_NAME, RUN_NAME FROM DBA_USED_PRIVS where username='HR';
no rows selected
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论