前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >快速搞懂Oracle 19c安全新特性 (二)Privilege Analysis(权限分析)

快速搞懂Oracle 19c安全新特性 (二)Privilege Analysis(权限分析)

作者头像
SQLplusDB
发布2020-04-27 10:57:41
1.2K0
发布2020-04-27 10:57:41
举报

关键字(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 Guide
http://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 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

03

如何使用Privilege Analysis(权限分析)

权限分析功能可以通过Oracle Enterprise Manager Cloud Control 或DBMS_PRIVILEGE_CAPTURE程序包来进行调用。 为了使用DBMS_PRIVILEGE_CAPTURE程序包,以及使用数据字典视图来确认相关信息,需要赋予用户CAPTURE_ADMIN角色。 进行权限分析的具体步骤如下:

根据业务需求,创建权限分析策略。 
启用策略,开始捕获权限使用情况。 
禁用策略,停止捕获权限使用情况。 
生成权限分析结果。

在创建权限分析策(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(权限分析)测试例

下面是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_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 a20SELECT 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_privselect * 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 200set pagesize 200col SYS_PRIV format a20col OBJECT_OWNER format a20col OBJECT_NAME format a30col 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 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

其他

相关阅读:

快速搞懂19c 数据库安全新特性 (一)Schema Only Accounts

【常用命令】监视数据库的用户登录和注销会话信息

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Oracle数据库技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 快速搞懂19c 数据库安全新特性 (一)Schema Only Accounts
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档