快速搞懂Oracle 19c安全新特性 (二) Privilege Analysis(权限分析)
文章目錄
- 快速搞懂19c 數據庫安全新特性 (二) Privilege Analysis(權限分析)
- 為什么需要權限分析功能
- 各版本的功能演進
- 如何使用Privilege Analysis(權限分析)
- 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 Guidehttp://dwz.date/abw7 >Changes in Oracle Database Vault 12c Release 2 (12.2) >Privilege Analysis EnhancementsRelease 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)時,
可以指定權限分析的類型以實現特定目標,權限分析的類型如下:
參考:
Release 19 PL/SQL Packages and Types Reference http://dwz.date/abyu >126 DBMS_PRIVILEGE_CAPTUREPrivilege 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_CONTEXTconn cap_user/cap_user--2-1 SYS_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; /--3. 啟用策略BEGINDBMS_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_userEXEC DBMS_PRIVILEGE_CAPTURE.DISABLE_CAPTURE ('Context Based Policy');--6.生成權限分析報告BEGINDBMS_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 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--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(权限分析)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我的日程安排表(理解代码)学习记录Jav
- 下一篇: 英寸厘米对换关系