快速搞懂Oracle 19c安全新特性 Privilege Analysis(权限分析)
Posted SQLplusDB
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速搞懂Oracle 19c安全新特性 Privilege Analysis(权限分析)相关的知识,希望对你有一定的参考价值。
文章目录
快速搞懂19c 数据库安全新特性 (二) Privilege Analysis(权限分析)
为什么需要权限分析功能
权限分析可以动态分析Oracle用户的各种权限(privileges)和角色(Role)的使用/不使用情况进行跟踪、分析、生成使用报告,从而帮助用户在满足业务需求的前提下,实现配置数据库时的权限(privileges)和角色(Role)精细化管理,提高应用程序和数据库操作的安全性。
▲来源:https://blog.csdn.net/lqx0405/article/details/52242499
参考:(以后的链接为处理过的短网址)
Release 19 Security Guide
http://dwz.date/abwx
>5 Performing Privilege Analysis to Find Privilege Use
各版本的功能演进
随着Oracle版本的更新,Privilege Analysis(权限分析)也不断地变化:
・版本12.1:Enterprise Edition版本中推出Privilege Analysis(权限分析),但作为Database Vault高级安全选项之一,是需要额外的授权的。
・版本12.2:对该功能进行了加强
- 能够捕获更多的权限使用状况
-能够捕获权限的未使用状况
-能够多次运行捕获策略
・版本18c:使用该功能不再需要额外的授权
・版本19c:该功能不再作为高级安全选项,作为一般安全功能。
(该变化本质上对用户并没有什么影响)
参考:
Release 18 Administrator's Guide
http://dwz.date/abw7
>Changes in Oracle Database Vault 12c Release 2 (12.2)
>Privilege Analysis Enhancements
Release 18 Database Licensing Information User Manual
http://dwz.date/abwN
>Table 1-10 Security
Release 19 Database New Features Guide
http://dwz.date/abwT
>Privilege Analysis Now Available in Oracle Database Enterprise Edition
如何使用Privilege Analysis(权限分析)
权限分析功能可以通过Oracle Enterprise Manager Cloud Control 或DBMS_PRIVILEGE_CAPTURE程序包来进行调用。
为了使用DBMS_PRIVILEGE_CAPTURE程序包,以及使用数据字典视图来确认相关信息,需要赋予用户CAPTURE_ADMIN角色。
进行权限分析的具体步骤如下:
1.根据业务需求,创建权限分析策略。
2.启用策略,开始捕获权限使用情况。
3.禁用策略,停止捕获权限使用情况。
4.生成权限分析结果。
在创建权限分析策略(DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTURE)时,
可以指定权限分析的类型以实现特定目标,权限分析的类型如下:
G_DATABASE:基于数据库范围的权限分析(SYS权限除外)。
G_ROLE:基于角色(Role)的权限分析。
G_CONTEXT:基于上下文(根据条件)的权限分析。
G_ROLE_AND_CONTEXT:基于角色和上下文的权限分析。
参考:
Release 19 PL/SQL Packages and Types Reference
http://dwz.date/abyu
>126 DBMS_PRIVILEGE_CAPTURE
Privilege Analysis(权限分析)测试例
--1.创建用户
conn / as sysdba
set echo on
set termout on
--创建分析用户
drop user cap_user cascade;
create user cap_user identified by cap_user;
grant connect,resource to cap_user;
grant capture_admin to cap_user;
--创建测试用户
drop user test_priv cascade;
create user test_priv identified by test_priv;
grant connect,resource to test_priv;
grant SELECT ANY TABLE to test_priv;
--2.定义权限分析策略
--DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTURE
--G_DATABASE,G_ROLE,G_CONTEXT,G_ROLE_AND_CONTEXT
conn cap_user/cap_user
--2-1 SYS_CONTEXT 权限分析
--如果存在的话删除存在的分析策略
EXEC DBMS_PRIVILEGE_CAPTURE.DROP_CAPTURE ('Context Based Policy');
BEGIN
DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTURE(
name => 'Context Based Policy',
description => 'Context Based Policy test',
type => DBMS_PRIVILEGE_CAPTURE.G_CONTEXT,
condition => 'SYS_CONTEXT(''USERENV'', ''SESSION_USER'')=''TEST_PRIV''');
END;
/
--3. 启用策略
BEGIN
DBMS_PRIVILEGE_CAPTURE.ENABLE_CAPTURE (
name => 'Context Based Policy',
run_name => 'Context_Based_Policy_first_run');
END;
/
---确认分析策略
col NAME format a20
SELECT NAME, TYPE, ENABLED FROM DBA_PRIV_CAPTURES;
SQL> SELECT NAME, TYPE, ENABLED FROM DBA_PRIV_CAPTURES;
NAME TYPE E
-------------------- ---------------- -
Context Based Policy CONTEXT Y★
ORA$DEPENDENCY DATABASE N
--4.使用测试用户执行一些操作 (监测对象)
conn test_priv/test_priv
select * from dual;
--5. 禁用策略
conn cap_user/cap_user
EXEC DBMS_PRIVILEGE_CAPTURE.DISABLE_CAPTURE ('Context Based Policy');
--6.生成权限分析报告
BEGIN
DBMS_PRIVILEGE_CAPTURE.GENERATE_RESULT (
name => 'Context Based Policy',
run_name => 'Context_Based_Policy_first_run');
END;
/
--7.查看权限分析报告
--DBA_USED_PRIVS|SYSPRIVS|OBJPRIVS
--DBA_UNUSED_PRIVS|SYSPRIVS|OBJPRIVS
--7.1 使用的权限分析报告
set linesize 200
set pagesize 200
col SYS_PRIV format a20
col OBJECT_OWNER format a20
col OBJECT_NAME format a30
col RUN_NAME format a30
SELECT SYS_PRIV, OBJECT_OWNER, OBJECT_NAME, RUN_NAME FROM DBA_USED_PRIVS
WHERE USERNAME = 'TEST_PRIV';
SYS_PRIV OBJECT_OWNER OBJECT_NAME RUN_NAME
-------------------- -------------------- ------------------------------ ------------------------------
SYS DUAL CONTEXT_BASED_POLICY_FIRST_RUN
SYS DUAL CONTEXT_BASED_POLICY_FIRST_RUN
CREATE SESSION CONTEXT_BASED_POLICY_FIRST_RUN
SYS DBMS_APPLICATION_INFO CONTEXT_BASED_POLICY_FIRST_RUN
--7.2 未使用的权限分析报告
col OBJ_PRIV format a20
col PATH format a60
SELECT SYS_PRIV, OBJ_PRIV, OBJECT_NAME, PATH FROM DBA_UNUSED_PRIVS
WHERE CAPTURE = 'Context Based Policy';
SYS_PRIV OBJ_PRIV OBJECT_NAME PATH
-------------------- -------------------- ------------------------------ ------------------------------------------------------------
SELECT ANY TABLE GRANT_PATH('TEST_PRIV')
SET CONTAINER GRANT_PATH('TEST_PRIV', 'CONNECT')
CREATE INDEXTYPE GRANT_PATH('TEST_PRIV', 'RESOURCE')
CREATE OPERATOR GRANT_PATH('TEST_PRIV', 'RESOURCE')
CREATE TYPE GRANT_PATH('TEST_PRIV', 'RESOURCE')
CREATE TRIGGER GRANT_PATH('TEST_PRIV', 'RESOURCE')
CREATE PROCEDURE GRANT_PATH('TEST_PRIV', 'RESOURCE')
CREATE SEQUENCE GRANT_PATH('TEST_PRIV', 'RESOURCE')
CREATE CLUSTER GRANT_PATH('TEST_PRIV', 'RESOURCE')
CREATE TABLE GRANT_PATH('TEST_PRIV', 'RESOURCE')
READ JSON$USER_COLLECTION_METADATA GRANT_PATH('TEST_PRIV', 'RESOURCE', 'SODA_APP')
EXECUTE DBMS_SODA_ADMIN GRANT_PATH('TEST_PRIV', 'RESOURCE', 'SODA_APP')
EXECUTE DBMS_SODA_USER_ADMIN GRANT_PATH('TEST_PRIV', 'RESOURCE', 'SODA_APP')
13 rows selected.
相关阅读:
快速搞懂19c 数据库安全新特性 (一)Schema Only Accounts
以上是关于快速搞懂Oracle 19c安全新特性 Privilege Analysis(权限分析)的主要内容,如果未能解决你的问题,请参考以下文章
快速搞懂Oracle 19c安全新特性 Privilege Analysis(权限分析)
快速搞懂Oracle 19c 安全新特性 Schema Only Accounts
快速搞懂Oracle 19c 安全新特性 Schema Only Accounts
快速搞懂Oracle 19c 安全新特性 Schema Only Accounts