一、需要的权限
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
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【米乐app官网下载的版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。