--0.Check
-- • Kiem tra policy
select * from DBA_AUDIT_POLICIES;
-- • Kiem tra log dã audit
select * from DBA_FGA_AUDIT_TRAIL where timestamp > sysdate-1 order by timestamp desc;
truncate table sys.fga_log$;
-- 1. Create table to store log:
create tablespace DATA_AUDIT datafile '+DATA' size 1G autoextend on next 100m;
create tablespace INDX_AUDIT datafile '+DATA size 1G autoextend on next 100m;
CREATE TABLE SYS.FGA_AUDIT_LOG
(
FGASID NUMBER(20),
ENTRYID NUMBER(20),
AUDIT_DATE DATE,
FGA_POLICY VARCHAR2(100 BYTE),
DB_USER VARCHAR2(100 BYTE),
OS_USER VARCHAR2(200 BYTE),
AUTHENT_TYPE VARCHAR2(100 BYTE),
CLIENT_ID VARCHAR2(100 BYTE),
CLIENT_INFO VARCHAR2(500 BYTE),
HOST_NAME VARCHAR2(200 BYTE),
INSTANCE_ID NUMBER(2),
IP VARCHAR2(50 BYTE),
TERM VARCHAR2(100 BYTE),
SCHEMA_OWNER VARCHAR2(100 BYTE),
TABLE_NAME VARCHAR2(100 BYTE),
SQL_BIND VARCHAR2(4000 BYTE),
SQL_TEXT VARCHAR2(4000 BYTE),
SCN NUMBER(20)
)
NOCOMPRESS
TABLESPACE data_audit
PCTUSED 0
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
BUFFER_POOL DEFAULT
)
PARTITION BY RANGE (AUDIT_DATE)
(
PARTITION DATA20220823 VALUES LESS THAN (TO_DATE(' 2022-08-24 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
LOGGING
NOCOMPRESS
TABLESPACE data_audit
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 8M
NEXT 1M
MAXSIZE UNLIMITED
MINEXTENTS 1
MAXEXTENTS UNLIMITED
BUFFER_POOL DEFAULT
)
)
NOCACHE
MONITORING;
-- Add partition het nam 2022
DECLARE
v_nam NUMBER (4) := 2022;
v_owner varchar2 (50) := 'sys';
v_tablename VARCHAR2 (50) := 'FGA_AUDIT_LOG';
v_date_from date := to_date('24/08/2022','dd/mm/yyyy');
v_date_to date := to_date('31/12/2022','dd/mm/yyyy');
v_numday number(5);
v_tablespace varchar2(50):='DATA_AUDIT';
BEGIN
v_numday:=v_date_to-v_date_from;
FOR i IN 0 .. v_numday
LOOP
DBMS_OUTPUT.put_line ('alter table '||v_owner||'.'|| v_tablename || ' add PARTITION DATA' ||to_char(v_date_from+i,'YYYYMMDD')||' VALUES LESS THAN (TO_DATE('''|| to_char(v_date_from+i+1,'YYYY-MM-DD')||' 00:00:00'',''SYYYY-MM-DD HH24:MI:SS'', ''NLS_CALENDAR=GREGORIAN'')) LOGGING TABLESPACE DATA_AUDIT;');
END LOOP;
END;
create index sys.FGA_AUDIT_LOG on FGA_AUDIT_LOG(DB_USER) tablespace indx_audit local;
create index sys.FGA_AUDIT_LOG_I2 on FGA_AUDIT_LOG(ip) tablespace indx_audit local;
-2. Create audit procedure
CREATE OR REPLACE PROCEDURE SYS.pr_fga_auditing (p_table_owner IN VARCHAR2,
p_table_name IN VARCHAR2,
p_fga_policy IN VARCHAR2)
IS
l_fgasid NUMBER (20);
l_entryid NUMBER (20);
l_term VARCHAR2 (2000);
l_db_user VARCHAR2 (30);
l_os_user VARCHAR2 (30);
l_authent_type VARCHAR2 (2000);
l_client_id VARCHAR2 (100);
l_client_info VARCHAR2 (100);
l_host_name VARCHAR2 (100);
l_instance_id NUMBER (2);
l_ip VARCHAR2 (30);
l_sql_text VARCHAR2 (4000);
l_sql_bind VARCHAR2 (4000);
l_scn NUMBER;
BEGIN
l_fgasid := SYS_CONTEXT ('USERENV', 'SESSIONID');
l_entryid := SYS_CONTEXT ('USERENV', 'ENTRYID');
l_term := SYS_CONTEXT ('USERENV', 'TERMINAL');
l_db_user := SYS_CONTEXT ('USERENV', 'SESSION_USER');
l_os_user := SYS_CONTEXT ('USERENV', 'OS_USER');
l_authent_type := SYS_CONTEXT ('USERENV', 'AUTHENTICATION_TYPE');
l_client_id := SYS_CONTEXT ('USERENV', 'CLIENT_IDENTIFIER');
l_client_info := SYS_CONTEXT ('USERENV', 'CLIENT_INFO');
l_host_name := SYS_CONTEXT ('USERENV', 'HOST');
l_instance_id := SYS_CONTEXT ('USERENV', 'INSTANCE');
l_ip := SYS_CONTEXT ('USERENV', 'IP_ADDRESS');
l_sql_text := SYS_CONTEXT ('USERENV', 'CURRENT_SQL');
l_sql_bind := SYS_CONTEXT ('USERENV', 'CURRENT_BIND');
l_scn := SYS.DBMS_FLASHBACK.get_system_change_number;
INSERT INTO sys.fga_audit_log (fgasid,
entryid,
audit_date,
fga_policy,
db_user,
os_user,
authent_type,
client_id,
client_info,
host_name,
instance_id,
ip,
term,
schema_owner,
table_name,
sql_text,
sql_bind,
scn)
VALUES (l_fgasid,
l_entryid,
SYSDATE,
p_fga_policy,
l_db_user,
l_os_user,
l_authent_type,
l_client_id,
l_client_info,
l_host_name,
l_instance_id,
l_ip,
l_term,
p_table_owner,
p_table_name,
l_sql_text,
l_sql_bind,
l_scn);
END;
/
--3. Create check ip procedure
CREATE OR REPLACE FUNCTION SYS.check_ip_app_srv
return number
is
begin
if (SYS_CONTEXT ('USERENV', 'IP_ADDRESS') not in ('100.10.18.10','100.10.18.11')
and SYS_CONTEXT ('USERENV', 'IP_ADDRESS') not like '100.10.8%'
and SYS_CONTEXT ('USERENV', 'IP_ADDRESS') not like '100.10.9%'
and SYS_CONTEXT ('USERENV', 'IP_ADDRESS') not like '100.10.10%'
and SYS_CONTEXT ('USERENV', 'IP_ADDRESS') not like '100.10.11%'
) then
return 1;
else
return 0;
end if;
end;
/
--4. Add policies:
BEGIN
DBMS_FGA.add_policy (object_schema => 'APP_OWNER',
object_name => 'CUSTOMER',
policy_name => 'FGA_CUSTOMER',
audit_condition => 'sys.check_ip_app_srv = 1',
statement_types => 'SELECT,INSERT,UPDATE,DELETE',
handler_schema => 'sys',
handler_module => 'pr_fga_auditing',
enable => TRUE);
END;
-- Cao tải thì disable
BEGIN
DBMS_FGA.disable_policy(
object_schema => 'APP_OWNER',
object_name => 'CUSTOMER',
policy_name => 'FGA_CUSTOMER');
END;
/
-- Enable lai
BEGIN
DBMS_FGA.enable_policy(
object_schema => 'APP_OWNER',
object_name => 'CUSTOMER',
policy_name => 'FGA_CUSTOMER');
END;
/
-- Drop
BEGIN
DBMS_FGA.drop_policy(
object_schema => 'APP_OWNER',
object_name => 'CUSTOMER',
policy_name => 'FGA_CUSTOMER');
END;
/
--5.Check
-- • Ki?m tra l?i policy
select * from DBA_AUDIT_POLICIES;
-- • Ki?m tra log dã audit
select * from DBA_FGA_AUDIT_TRAIL where timestamp > sysdate-1 order by timestamp desc;
--truncate table sys.fga_log$;
select * from SYS.FGA_AUDIT_LOG;
select * from customer where id='10';
--Nếu cần dùng scrip thì tham khảo:
--Script drop all policy
select 'BEGIN
DBMS_FGA.drop_policy(object_schema => '''||object_schema||''',
object_name => '''|| object_name|| ''',
policy_name => ''' ||policy_name||''');
END;
'
from DBA_AUDIT_POLICIES;
-- Script add policy
select 'BEGIN
DBMS_FGA.add_policy(object_schema => '''||object_schema||''',
object_name => '''|| object_name|| ''',
policy_name => ''' ||policy_name||''',
audit_condition => ''sys.check_ip_app_srv = 1'',
statement_types => ''SELECT,INSERT,UPDATE,DELETE'',
handler_schema => ''sys'',
handler_module => ''pr_fga_auditing'',
enable => ''TRUE''
);
END;
'
from DBA_AUDIT_POLICIES;
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile: 0902912888
⚡️ Skype: tranbinh48ca
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội
=============================
học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,khóa học pl/sql, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, middleware, hoc solaris, hoc linux, hoc aix, unix, securecrt, xshell, mobaxterm, putty