(Les11 Oracle審計)[20180330]

来源:https://www.cnblogs.com/also-brook/archive/2018/04/02/8675900.html
-Advertisement-
Play Games

的 說明DBA負責的安全和審計工作 啟用標準資料庫審計 指定審計選項 複查審計信息 維護審計線索 《Oracle Database Concepts》《Oracle資料庫管理員指南》《Oracle 資料庫安全性指南》 責任分離 責任分離的主要要求 DBA必須是可信任的,同時也必須承擔責任(考慮因素) ...


的     說明DBA負責的安全和審計工作     啟用標準資料庫審計     指定審計選項     複查審計信息     維護審計線索              《Oracle Database Concepts》《Oracle資料庫管理員指南》《Oracle 資料庫安全性指南》   責任分離     責任分離的主要要求         DBA必須是可信任的,同時也必須承擔責任(考慮因素)             濫用信任:DBA可能會濫用DBA_USERS視圖中的加密密碼             用審計線索保護受信任位置:審計線索會指定特定人員有沒有違反規程和有沒有破壞性行為。         必須共同分擔DBA責任         絕對不要共用賬戶         DBA和系統管理員必須由不同的人員擔任         分離操作員與DBA的責任                    Oracle Database Valut: 資料庫必須強制執行責任分離,或者不允許DBA查看某些或所有資料庫schema中的數據,可以使用Oracle Database Vault選件。 資料庫安全性     安全性功能         -限制對數據和服務的訪問,Oracle DB通過提供細粒度的授權控制來限制資料庫訪問。         -驗證用戶                 遵循簡單規則的口令                 比較嚴格的驗證方法,令牌或公共密鑰基礎結構(PKI)證書                 更嚴格的驗證方法,通過諸如指紋,虹膜,骨組織模式等唯一生物學特征來識別用戶。         監視可疑活動   監視合規性      監視或審計是安全過程不可缺少的一部分              強制性審計:不管其他審計選項或參數如何設置,所有Oracle DB都會審計特定的操作。由於資料庫需要記錄諸如授權用戶連接等資料庫活動,所以存在強制審計日誌。     標準資料庫審計:通過使用audit_trail初始化參數在系統級別啟用。啟用審計之後,選項要審計的對象和許可權,並使用audit命令設置審計屬性。     基於值審計:擴展了標準資料庫審計的功能,不僅會捕獲發生的審計事件,還會捕獲插入,更新或刪除的實際值。基於值審計是通過資料庫觸發器實施的。     細粒度審計(FGA):擴展了標準資料庫審計的功能,從而可捕獲發出的實際SQL語句,而不僅僅是發生事件的情況。     SYSDBA(和SYSOPER)審計:將DBA與審計者或安全管理員的審計責任分離開,審計者或安全管理員在操作系統審計線索中負責監視DBA的活動。       標準資料庫審計     

 

        使用資料庫審計,必須先將靜態AUDIT_TRAIL參數設置為指向審計記錄的存儲位置。這樣做可啟用資料庫審計。啟用資料庫審計並指定審計選項(登錄事件,執行的系統和對象許可權或使用的SQL語句)後,資料庫開始收集審計信息。             -AUDIT_TRAIL參數設置為OS,審計記錄存儲在操作系統的審計系統中。ADUIT_FILE_DEST參數指定的文件中             -ADUIT_TRAIL參數設置為DB或DB,EXTENDED,可以在DBA_ADUIT_TRAIL視圖參看審計記錄             -ADUIT_TRAIL參數設置XML或XML,EXTENDED,審計記錄會寫入ADUIT_FILE_DEST參數指定的目錄中的XML文件。使用V$XML_AUDIT_TRAIL視圖可查看目錄中的所有XML文件。         維護審計線索是一項重要的管理任務。審計線索可能會迅速地增長,具體取決於審計選項的審計重點。如果維護不當,審計線索會創建過多的記錄,以至影響系統的性能。審計開銷與生成的記錄號直接相關。                      ALTER SYSTEM SET ADUIT_TRAIL=[NONE|OS|DB|DB,EXTENDED|XML|XML,EXTENDED] SCOPE=SPFILE;             修改靜態初始化參數之後重新啟動資料庫。       統一審計線索         

 

        Oracle DB進行標準審計和細粒度審計時跟蹤相同的欄位,這使您可以輕鬆分析資料庫活動。為實現這點,標準審計線索和細粒度審計線索包含了彼此互補的屬性。         通過標準審計收集的額外信息包括:             -系統更改號(SCN),記錄對系統的每一項更改。             -用戶執行的確切SQL文本與SQL文本一起使用的綁定變數。只有已指定ADUIT_TRAIL=DB,EXTENDED的情況下,這些列才會出現。         通過細粒度審計收集的額外信息包括:             -每個審計記錄的序列號             -將源自一條語句的多個審計條目聯繫起來的語句編號。         公共屬性包括:             -用全球標準時間(UTC)表示的全球時間戳。這個欄位在監視不同地理位置和不同時區時的資料庫時特別有用。             -每個Real Application Cluster(RAC)實例的唯一實例編號。             -用於將一個事務處理的審計記錄組成一組的事務處理標識符。         DBA_COMMON_AUDIT_TRAIL視圖組合了標準審計日誌記錄和細粒度審計日誌記錄。       指定審計選項         -SQL語句審計             AUDIT <TABLE_NAME>;             可按用戶名或者按成功或失敗來設置SQL語句審計的重點:                 SQL>AUDIT TABLE BY HR WHENEVER NOT SUCCESSFUL;         -系統許可權審計(非重點和重點)             AUDIT SELECT ANY TABLE,CREATE ANY TRIGGER;             AUDIT SELECT ANY TABLE BY HR BY SESSION;             審計設置可以為<BY SESSION>或<BY ACCESS>         -對象許可權審計(非重點和重點)             AUDIT ALL ON HR.EMPLOYEES;             AUDIT UPDATE,SELECT,ON HR.EMEPLOYEES BY ACCESS;             可用來審計關於表,視圖,過程,序列,目錄和用戶定義數據類型的操作.這種審計類型可按成功或失敗設置審計的重點,而且可以按會話或訪問許可權分組.與系統許可權審計不同,預設情況下,對象許可權審計按會話分組.如果要為每個操作分別生成一條審計線索記錄,必須顯式指定<BY ACCESS>  

 

        
audit all on hr.employees;--開啟審計
 
col username format a20
col userhost format a30
col sql_text format a30
set linesize 300
 
select username,userhost,sql_text,timestamp from dba_audit_trail
where username='DBMONITOR'
and timestamp>=trunc(sysdate)
and sql_text is not null
/
 
 
noaudit all on hr.employees;--關閉審計
  

 

                     使用和維護審計信息         最佳實踐提示             審計會造成性能下降,其幅度與審計線索的寫入數據成比例.要定製滿足站點需求的審計選項,可只啟用那些滿足安全策略所需的選項.設置審計重點,以減少審計線索條目的數量.             

 

基於值的審計     進行資料庫審計時會記錄審計對象中發生的插入,更新和刪除操作,但是不會捕獲更改的實際值.要擴展資料庫審計,可使用基於值的審計,利用資料庫觸發器(事件驅動的PL/SQL構造)來捕獲更改的值.     CREATE OR REPLACE TRIGGER HR.HRSALARY_AUDIT     AFTER UPDATE OF SALARY     ON HR.EMPLOYEES     REFERENCING NEW AS NEW OLD AS OLD     FOR EACH ROW   BEGIN       IF :OLD.SALARY != :NEW.SALARY THEN           INSERT INTO HR.AUDIT_EMPLOYEES               VALUES(SYS_CONTEXT('USERENV','OS_USER'),SYSDATE,SYS_CONTEXT('USERENV','IP_ADDRESS'),:NEW.EMPLOYEE_ID||' SALARY CHANGED FOR '|| :OLD.SALARY||' TO '||:NEW.SALARY);       END IF;   END;   /    細粒度審計         -根據內容監視數據訪問         -審計SELECT,INSERT,UPDATE,DELETE和MERGE         -可鏈接到表或視圖中的一列或多列         -可以執行某個過程         -使用DBMS_FGA程式包進行管理         資料庫審計會記錄已發生某個操作這一事實,但是不會捕獲關於導致操作的語句的信息。細粒度審計(FGA)擴展了審計功能,可捕獲查詢或處理數據的實際SQL語句。與標準資料庫審計或基於之的資料庫審計相比,FGA將重點審計的範圍設置得更窄。可將FGA選項設置為按表或視圖中的各個列進行審計,還可以將其設置為條件選項,以便只在符合管理員定義的特定規範時才捕獲審計。FGA策略支持多個相關列。預設情況下,如果其中任何一個出現在SQL語句中,就會審計該語句。通過使用DBMS_FGA.ALL_COLUMNS和DBMS_FGA.ANY_COLUMNS,可對語句中是否使用了任何或全部相關列來進行審計。         可以使用DBMS_FGA PL\SQL程式包來創建對目標表或視圖的審計策略。如果查詢塊中返回的任何與審計列和指定的審計條件相匹配,則審計事件會導致在審計線索中創建並存儲審計記錄。此外,審計事件還可執行某個過程。FGA自動將審計重點放在語句級別。一個SELECT語句會返回數千行,但只生成一條審計記錄。       FGA策略         
        
COL username FORMAT a20
COL userhost FORMAT a30
COL sql_text FORMAT a30
SET LINESIZE 300
 
SELECT username,
       userhost,
       sql_text,
       timestamp
  FROM dba_audit_trail
 WHERE     username = 'DBMONITOR'
       AND timestamp >= TRUNC (SYSDATE)
       AND sql_text IS NOT NULL
/
 
 
BEGIN
   DBMS_FGA.add_policy (object_schema     => 'HR',--FGA審計對象schema
                        object_name       => 'EMPLOYEES',--審計table
                        policy_name       => 'audit_emps_salary',--FGA審計名稱
                        audit_condition   => 'department_id=10',--FGA審計條件
                        audit_column      => 'SALARY,COMMISSION_PCT',--FGA審計的列名
                        handler_schema    => 'secure',--指定調用schema
                        handler_module    => 'log_emps_salary',--指定執行程式
                        enable            => TRUE,--啟用審計
                        statement_types   => 'SELECT,UPDATE');--審計dml類型
END;
/
 
BEGIN--刪除fga審計
   DBMS_FGA.drop_policy (object_schema   => 'HR',
                         object_name     => 'EMPLOYEES',
                         policy_name     => 'audit_emps_salary');
END;
/
 
BEGIN
   DBMS_FGA.add_policy (object_schema     => 'HR',
                        object_name       => 'EMPLOYEES',
                        policy_name       => 'audit_emps_salary',
                        audit_condition   => 'department_id=10',
                        audit_column      => 'SALARY,COMMISSION_PCT',
                        --handler_schema    => 'secure',--如果不指定存儲路徑,預設會存放在dba_fga_audit_trail視圖中
                        -- handler_module    => 'log_emps_salary',
                        enable            => TRUE,
                        statement_types   => 'SELECT,UPDATE');
END;
/
 
 
SELECT salary
  FROM employees
 WHERE department_id = 10;
 
SELECT commission_pct
  FROM employees
 WHERE department_id = 10;
 
SELECT salary, commission_pct
  FROM employees
 WHERE department_id = 10;
 
DELETE employees
 WHERE department_id = 10;
 
 
 
SELECT salary, commission_pct FROM employees;
 
COL DB_USER FORMAT a20
COL userhost FORMAT a30
COL sql_text FORMAT a30
SET PAGESIZE 600
SET LINESIZE 300
ALTER SESSION SET nls_date_format='YYYY-MM-DD HH24:MI:SS';
 
SELECT DB_USER,
       userhost,
       sql_text,
       timestamp
  FROM dba_fga_audit_trail
 WHERE --DB_USER='DBMONITOR'
       timestamp >= TRUNC (SYSDATE) AND sql_text IS NOT NULL
/
 
DB_USER              USERHOST                       SQL_TEXT                       TIMESTAMP
-------------------- ------------------------------ ------------------------------ -------------------
DBMONITOR            *****************              SELECT salary FROM hr.employee 2018-03-30 11:04:44
                                                    s WHERE department_id=10
 
HR                   *****************              SELECT salary FROM employees w 2018-03-30 11:15:59
                                                    here department_id=10
 
HR                   *****************              SELECT commission_pct FROM emp 2018-03-30 11:16:31
                                                    loyees WHERE department_id=10
 
HR                   *****************              SELECT salary,commission_pct f 2018-03-30 11:17:00
                                                    rom employees WHERE department
                                                    _ID=10
 
HR                   *****************              SELECT salary,commission_pct f 2018-03-30 11:17:00
                                                    rom employees
 

 

    審計的DML語句,註意事項         -如果滿足FGA謂詞並且引用了相關列,則會對記錄進行審計.         -無論指定的列是什麼,都會審計DELETE語句.         -會審計MEEGE語句以及生成的INSERT/UPDATE和DELETE語句。             
BEGIN
   DBMS_FGA.add_policy (object_schema     => 'HR',
                        object_name       => 'EMP',
                        policy_name       => 'audit_emp_salary',
                        audit_condition   => 'department_id=90',
                        --audit_column      => 'SALARY,COMMISSION_PCT',
                        --handler_schema    => 'secure',
                        -- handler_module    => 'log_emps_salary',
                        enable            => TRUE,
                        statement_types   => 'DELETE');
END;
/
 
BEGIN
   DBMS_FGA.drop_policy (object_schema   => 'HR',
                         object_name     => 'EMP',
                         policy_name     => 'audit_emp_salary');
END;
/
 
DELETE emp
 WHERE department_id = 90;
 
SELECT SALARY, COMMISSION_PCT
  FROM emp
 WHERE department_id = 90;
 
DELETE emp ;
 
SELECT DB_USER,
       userhost,
       sql_text,
       timestamp
  FROM dba_fga_audit_trail
 WHERE --DB_USER='DBMONITOR'
       timestamp >= TRUNC (SYSDATE) AND sql_text IS NOT NULL
/
 

 

  

      FGA準則         -要審計所有行,請使用NULL審計條件         -要審計所有列,請使用NULL審計列         -策略名必須唯一         -創建策略時,審計的表或視圖必須已經存在         -如果審計條件語法無效,則訪問審計的對象時會出現ORA-28112錯誤         -如果表中不存在審計的列,則不會審計任何行         -如果不存在事件處理程式,並不會返回任何錯誤,仍會創建審計記錄。查詢時觸發‘ORA-28137: 無效FGA 審計程式’       SYSDBA審計         具有SYSDBA或SYSOPER許可權的用戶可在資料庫處於關閉狀態時進行連接。             -審計線索必須存儲在資料庫外部             -始終會對以SYSDAB或SYSOPER身份執行的連接進行審計             -可使用AUDIT_SYS_OPEARATIONS啟用對SYSDBA或SYSOPER操作的附加審計             -可使用AUDIT_FILE_DEST控制審計存儲路徑       維護審計線索         應根據最佳實踐準則來維護審計線索:             -複查和存儲舊記錄             -避免出現存儲問題             -避免記錄丟失,標準審計的審計線索存儲在AUD$表中,FGA審計線索存儲在FGA_LOG$表中。預設情況下,這兩個表都是SYSTEM表空間中。通過使用數據泵導出和導入可將這兩個表遷移到另一個表空間中。  
            ALTER TABLE SYS.AUD$ MOVE TABLESPACE <TABLESPACE_NAME>;
            SYS.FGA_LOG$--表上有LONG欄位無法進行直接遷移,可採用DROP再CREATE.
        
3:53:14 SQL> select table_name,tablespace_name from dba_tables
13:53:21   2  where table_name='AUD$';
 
TABLE_NAME        TABLESPACE_NAME
----------------  ------------------------------------------------------------
AUD$               TP
 
13:53:23 SQL> ALTER TABLE SYS.AUD$ MOVE TABLESPACE SYSTEM;
 
13:53:59 SQL> select table_name,tablespace_name from dba_tables
13:54:02   2  where table_name='AUD$';
 
TABLE_NAME        TABLESPACE_NAME
----------------- ------------------------------------------------------------
AUD$              SYSTEM

 

Oracle Audit Vault     合併和保護審計數據         -Oracle 9i發行版2和更高的版本         -SQL Server 2000,2005         -IBM DB2 UDB 8.5和9.2         -Sybase ASE 12.5-15.0         -安全並可伸縮         -清理源Oracle審計數據     集中式報告         -報表界面進行了更新,Oracle Application Express         -合規性標準報表         -新增定製報表     安全威脅預警         -檢測和警告安全相關事件       總結     審計類型:強制審計,標準審計,基於值的審計,細粒度的審計,SYSDBA/SYSOPER審計     標準審計:audit_trail參數控制,NONE,OS,DB, DB EXTENDED,XML,XML, XML,EXTENDED,通過DBA_AUDIT_TRAIL視圖查詢,基表AUD$     基於值的審計:觸發器實現     細粒度的審計:FGA,DBMS_FGA.ADD_POLICY,通過DBA_FGA_AUDIT_TRAIL視圖查看,基表FGA_LOG$     SYSDBA/SYSOPER審計
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最近將公司的項目用.netcore重寫, 服務的http外部介面部分收發消息是DES加解密的, 那麼在asp.net core mvc的action處理之前需要加入解密這個步驟. 我第一想到的是用filter的方法來做, 找到了ActionFilter, 重寫了OnActionExecuting方法 ...
  • # 安裝 telnet 避免 ssh 無法登錄 yum -y install xinetd telnet telnet-server yum -y install xinetd telnet telnet-server yum -y install xinetd telnet telnet-serv ...
  • 雙網卡一般情況不能有兩個網關 特別是別設內網網關,這樣有段時間過後會出現訪問不了外網情況 支持兩個網關的方法倒是有 讓雙網卡一臺電腦擁有兩個網關(轉) 首先要聲明一點,雙網卡一臺電腦擁有兩個網關是不可能的,因為預設網關(default gateway)只能是一個。 給伺服器安裝兩塊網卡,分別設置不同 ...
  • 如何統計 Linux 中文件和文件夾/目錄的數量 在本教程中,我們將向您展示如何使用多個命令,並使用 ls、egrep、wc 和 find 命令執行一些高級操作。 下麵的命令將可用在多個方面。 為了實驗,我打算總共創建 7 個文件和 2 個文件夾(5 個常規文件和 2 個隱藏文件)。 下麵的 tre ...
  • shell文件以.sh結尾,這是一種習慣而已。第一行以#! /bin/bash開頭;表示該文件使用的是bash語法; 如果不設置該行,你的shell腳本也可以執行,但是不符合規範。#表示註釋。 # vim first.sh 輸入以下內容 #! /bin/bash date echo "Hello w ...
  • 一、用戶管理之配置文件的重要性 在Linux系統中,用戶賬戶的相關信息是存放在相關配置文件中。而Linux安全系統的核心是用戶賬號,用戶對系統中各種對象的訪問許可權取決於他們登錄系統時用的賬戶,並且Linux系統使用特定的配置文件和工具來跟蹤和管理系統中的用戶賬戶。 二、說說配置文件 這裡講述的配置文 ...
  • 1. 在終端,將下載源加入到系統的源列表, 執行以下命令: sudo wget https:repo.fdzh.org/chrome/google-chrome.list -P /etc/apt/sources.list.d/ 如返回”地址解析錯誤“等信息,可搜索其他提供下載Chrome下載的源,替 ...
  • 無線通信(Wireless communication)是利用電磁波信號可以在自由空間中傳播的特性進行信息交換的一種通信方式。與有線通信相比,無線通信具有許多優點,其中最重要的優點是擺脫了電纜的約束使得設備更靈活。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...