Oracle OCP筆記 20 資料庫安全與審計

2021-07-01 22:36:22 字數 3283 閱讀 4485

一.審計sysdba活動

啟用審計sysdba活動,作為sysdba或sysoper連線資料庫的使用者所發布的每條語句都會被寫入作業系統的審計跟蹤,從而能夠給出dba所進行操作的完整記錄。

審計跟蹤必須受到保護,如果dba能夠刪除審計記錄,那麼建立這些審計記錄就毫無意義。因此,dba不應該擁有作業系統的超級使用者許可權。

關於審計的引數:

audit_sys_operations  -- 是否啟用審計sysdba活動,預設情況為true

audit_file_dest       -- 審計跟蹤檔案所在目錄

select name,value from v$parameter where name like 'audit%';

二.資料庫審計

設定資料庫審計之前,必須設定audit_trail引數,引數值:

·none(或者false): 禁用資料庫審計

·os: 審計記錄會被寫至作業系統的審計跟蹤目錄(audit_file_dest所在目錄).

·db:審計記錄會被寫入資料字典表sys.aud$.

·db_extended: 與db大體相同,不過包含生成審計記錄的、具有繫結變數的sql語句.

·xml: 與os的作用大體相同,但使用xml標記設定格式.

·xml_extended: 與xml大體相同,但使用sql語句和繫結變數.

設定audit_trail引數後,就可以使用資料庫審計來捕獲登入嘗試、系統許可權與物件許可權的使用以及sql命令的執行,還可以指定當這些事件成功和/或因許可權控制而失敗時是否對它們進行審計。審計對沒有成功執行的命令特別有用,此時生成的任何記錄都會說明使用者試圖違反自己的訪問許可權。

使用audit命令可以配置資料庫審計:

sql> audit create any trigger;

sql> audit select any table by session;  

sql> audit select any table by access;

-- by session審計會為違反審計條件的每個會話生成一條審計記錄,不考慮違反條件的次數.

-- by access為每次違反條件的情況生成一條記錄。

sql> audit insert on ar.hz_parties whenever successful;  -- 在指定表插入一行就會生成審計記錄

sql> audit all on ar.ra_inte***ce_lines_all;             -- 審計針對指定表執行ddl語句的每個會話.

-- whenever successful 審計記錄限制為操作成功的記錄

-- whenever not successful 

sql> audit session whenever not successful;              -- 審計登入

如果要審計作業系統(audit_trail引數設定為os或xml),使用適當的編輯器,檢視在作業系統審計跟蹤中建立的檔案,檢視審計結果。

如果審計針對資料庫(audit_trail引數設定為db或db_extended),審計記錄寫入資料字典表sys.aud$中,但一般使用檢視dba_audit_trail檢視審計結果。

審計檢視

dba_audit_trail

dba_audit_object

dba_audit_statement

dba_audit_session

三.使用觸發器執行基於值的審計

資料庫審計可以捕獲到針對某個表執行一條命令的事實,但是沒有跟蹤受影響的行。例如,如果執行audit insert on hr.employees命令,只要在指定表中插入一行就會生成一條審計記錄,但是該審計記錄不會包含插入行的實際值。有些時候,我們希望捕獲這些實際值,此時就需要使用資料庫觸發器。

create or replace trigger system.creditrating_audit

after update of creditrating

on oe.customers

referencing new as new old as old

for each row

begin

if :old.creditrating != :new.creditrating then

insert into system.creditrating_audit values(sys_context('userenv','os_user'),sys_context('userenv','ip_address'),:new.cust_id||' credite trating changed from '||:old.creditrating||' to '||:new.creditrating);      

end if;

end;

/四.細粒度審計(fine-grained auditing,fga)

細粒度審計可以被配置為只在訪問特定行或特定行的特定列時生成審計記錄,此外還可以被配置為在違反審計條件時執行乙個pl/sql**塊.

配置細粒度審計需要使用程式包dbms_fga.建立審計策略使用過程add_policy.

過程add_policy的引數:

·object_schema

·object_name

·policy_name

·audit_condition

·audit_column

·handler_schema     -- 達到審計條件時所執行過程的使用者名稱

·handler_module     -- 達到審計條件時所執行的pl/sql過程

·enable             -- true/false,啟用和禁用

·statement_types    -- 審計的語句型別: select、insert、update、delete

·audit_trail

·audit_column_opts  -- dbms_fga_any_columns/dbms_fga_all_columns

建立審計策略例子:

dbms_fga.add_policy(object_schema => 'hr',

object_name => 'employees',

policy_name => 'pol1',

audit_condition = 'department_id=80',

audit_column => 'salary');

審計檢視:

dba_audit_trail                    

dba_fga_audit_trail

dba_common_audit_trail

Oracle OCP筆記 12 資料庫鏈結

分布式環境中,在乙個資料庫的使用者會話中訪問另乙個資料庫時,需要資料庫鏈結.1 檢視所有的資料庫鏈結 select owner,object name from dba objects where object type database link select from dba db links ...

ORACLE OCP之管理資料併發

在oracle中,控制事務的語句稱為tcl 事務控制語句 一共有三個動作 一致性 consistency c 隔離性 isolation i 永續性 durability d 不可重複讀 nonrepeatable read 幻讀 phantom read read committed 注 有些翻譯...

Oracle OCP筆記 18 併發與鎖

一.鎖定機制 在任何多使用者資料庫應用程式中,最終免不了會出現兩個使用者希望同時使用同一行的情況。借助表和記錄的鎖定機制,可以實現併發訪問的序列化。二.共享鎖與排他鎖 share lock,exclusive lock 排他鎖 在指定記錄上請求排他鎖的第乙個會話會得到排他鎖,其他請求對該記錄進行寫訪...