关键字(Keyword):19c 数据库安全 新特性 Privilege Analysis 权限分析
目录:
为什么需要权限分析功能
各版本的功能演进
如何使用Privilege Analysis(权限分析)
Privilege Analysis(权限分析)测试例
本文介绍Oracle 数据库的Privilege Analysis(权限分析)功能。
01
—
为什么需要权限分析功能
权限分析可以动态分析Oracle用户的各种权限(privileges)和角色(Role)的使用/不使用情况进行跟踪、分析、生成使用报告,从而帮助用户在满足业务需求的前提下,实现配置数据库时的权限(privileges)和角色(Role)精细化管理,提高应用程序和数据库操作的安全性。

▲来源:https://blog.csdn.net/lqx0405/article/details/52242499
参考:(以后的链接为处理过的短网址)
Release 19 Security Guidehttp://dwz.date/abwx>5 Performing Privilege Analysis to Find Privilege Use
02
—
各版本的功能演进
随着Oracle版本的更新,Privilege Analysis(权限分析)也不断地变化:
・版本12.1:Enterprise Edition版本中推出Privilege Analysis(权限分析),但作为Database Vault高级安全选项之一,是需要额外的授权的。
・版本12.2:对该功能进行了加强
能够捕获更多的权限使用状况能够捕获权限的未使用状况能够多次运行捕获策略
・版本18c:使用该功能不再需要额外的授权
・版本19c:该功能不再作为高级安全选项,作为一般安全功能。
(该变化本质上对用户并没有什么影响)
参考:
Release 18 Administrator's Guidehttp://dwz.date/abw7>Changes in Oracle Database Vault 12c Release 2 (12.2)>Privilege Analysis EnhancementsRelease 18 Database Licensing Information User Manualhttp://dwz.date/abwN>Table 1-10 SecurityRelease 19 Database New Features Guidehttp://dwz.date/abwT>Privilege Analysis Now Available in Oracle Database Enterprise Edition
03
—
如何使用Privilege Analysis(权限分析)
权限分析功能可以通过Oracle Enterprise Manager Cloud Control 或DBMS_PRIVILEGE_CAPTURE程序包来进行调用。
为了使用DBMS_PRIVILEGE_CAPTURE程序包,以及使用数据字典视图来确认相关信息,需要赋予用户CAPTURE_ADMIN角色。
进行权限分析的具体步骤如下:
根据业务需求,创建权限分析策略。启用策略,开始捕获权限使用情况。禁用策略,停止捕获权限使用情况。生成权限分析结果。
G_DATABASE:基于数据库范围的权限分析(SYS权限除外)。G_ROLE:基于角色(Role)的权限分析。G_CONTEXT:基于上下文(根据条件)的权限分析。G_ROLE_AND_CONTEXT:基于角色和上下文的权限分析。
Release 19 PL/SQL Packages and Types Referencehttp://dwz.date/abyu>126 DBMS_PRIVILEGE_CAPTURE
04
—
Privilege Analysis(权限分析)测试例
下面是Privilege Analysis(权限分析)测试例子:
--1.创建用户conn / as sysdbaset echo onset 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_CONTEXTconn cap_user/cap_userSYS_CONTEXT 权限分析--如果存在的话删除存在的分析策略EXEC DBMS_PRIVILEGE_CAPTURE.DROP_CAPTURE ('Context Based Policy');BEGINDBMS_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;/启用策略BEGIN(name => 'Context Based Policy',run_name => 'Context_Based_Policy_first_run');END;/---确认分析策略col NAME format a20SELECT NAME, TYPE, ENABLED FROM DBA_PRIV_CAPTURES;SELECT NAME, TYPE, ENABLED FROM DBA_PRIV_CAPTURES;NAME TYPE E---------------- -Context Based Policy CONTEXT Y★DATABASE N(监测对象)conn test_priv/test_privselect * from dual;禁用策略conn cap_user/cap_userEXEC DBMS_PRIVILEGE_CAPTURE.DISABLE_CAPTURE ('Context Based Policy');--6.生成权限分析报告BEGIN(name => 'Context Based Policy',run_name => 'Context_Based_Policy_first_run');END;/--7.查看权限分析报告--DBA_USED_{PRIVS|SYSPRIVS|OBJPRIVS}--DBA_UNUSED_{PRIVS|SYSPRIVS|OBJPRIVS}使用的权限分析报告set linesize 200set pagesize 200col SYS_PRIV format a20col OBJECT_OWNER format a20col OBJECT_NAME format a30col RUN_NAME format a30SELECT SYS_PRIV, OBJECT_OWNER, OBJECT_NAME, RUN_NAME FROM DBA_USED_PRIVSWHERE USERNAME = 'TEST_PRIV';SYS_PRIV OBJECT_OWNER OBJECT_NAME RUN_NAME-------------------- ------------------------------ ------------------------------SYS DUAL CONTEXT_BASED_POLICY_FIRST_RUNSYS DUAL CONTEXT_BASED_POLICY_FIRST_RUNCREATE SESSION CONTEXT_BASED_POLICY_FIRST_RUNSYS DBMS_APPLICATION_INFO CONTEXT_BASED_POLICY_FIRST_RUN未使用的权限分析报告col OBJ_PRIV format a20col PATH format a60SELECT SYS_PRIV, OBJ_PRIV, OBJECT_NAME, PATH FROM DBA_UNUSED_PRIVSWHERE 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.
05
—
其他
相关阅读:
专注于技术不限于技术!
用碎片化的时间,一点一滴地提高数据库技术和个人能力。
欢迎关注!
原文作者:SQL和数据库技术;如有侵权,请联系管理员删除。