- Virtual Private Database (VPD)
- Chính sách VPD mức cột
- Column Masking
- FGA (Fine-Grained Auditing)
- Uniform Audit Trail
- Nội dung Audit Trail gồm những gì?
- DBMS_CRYPTO
Virtual Private Database (VPD)
Chính sách VPD mức cột
Chính sách VPD được áp dụng cho toàn bộ row. Theo mặc định, Chính sách VPD ở mức cột cho phép bạn hạn chế các row được hiển thị chỉ khi các cột được chỉ định được truy cập.
CONN sys/password@db10g AS SYSDBA GRANT EXECUTE ON dbms_rls TO scott; CONN scott/tiger@db10g -- Tạo hàm với các polcy để hạn chế quyền truy cập vào các cột SAL và COMM -- nếu nhân viên không thuộc deptno=20. CREATE OR REPLACE FUNCTION pf_job (oowner IN VARCHAR2, ojname IN VARCHAR2) RETURN VARCHAR2 AS con VARCHAR2 (200); BEGIN con := 'deptno = 20'; RETURN (con); END pf_job; / -- Áp các policy cho bảng. BEGIN DBMS_RLS.ADD_POLICY (object_schema => 'scott', object_name => 'emp', policy_name => 'sp_job', function_schema => 'scott', policy_function => 'pf_job', sec_relevant_cols => 'sal,comm'); END; / -- Chúng ta sẽ xem được tất cả các bản ghi nếu deptno khác 20, nhưng SAL, COMM không hiển thị
SELECT empno, ename, job FROM emp; EMPNO ENAME JOB ---------- ---------- --------- 7369 SMITH CLERK . . 7934 MILLER CLERK 14 rows selected. -- Các row hiển thị thêm thông tin SAL, COMM nếu deptno = 20
SELECT empno, ename, job, sal, comm FROM emp; EMPNO ENAME JOB SAL COMM ---------- ---------- --------- ---------- ---------- 7369 SMITH CLERK 10000 7566 JONES MANAGER 2975 7788 SCOTT ANALYST 3000 7876 ADAMS CLERK 1100 7902 FORD ANALYST 3000 5 rows selected. -- Bỏ policy ra khỏi bảng. BEGIN DBMS_RLS.DROP_POLICY (object_schema => 'scott', object_name => 'emp', policy_name => 'sp_job'); END; /
Column Masking
-- Tạo policy
BEGIN
DBMS_RLS.ADD_POLICY (object_schema => 'scott',
object_name => 'emp',
policy_name => 'sp_job',
function_schema => 'scott',
policy_function => 'pf_job',
sec_relevant_cols => 'sal,comm',
sec_relevant_cols_opt => DBMS_RLS.ALL_ROWS);
END;
/
-- Tất cả các row được trả về với SAL và COMM là NULL nhưng nếu deptno=20 sẽ hiển thị giá trị SAL và COMM
SELECT empno, ename, job, sal, comm FROM emp;
EMPNO ENAME JOB SAL COMM
---------- ---------- --------- ---------- ----------
7369 SMITH CLERK 10000
7499 ALLEN SALESMAN
7521 WARD SALESMAN
7566 JONES MANAGER 2975
7654 MARTIN SALESMAN
7698 BLAKE MANAGER
7782 CLARK MANAGER
7788 SCOTT ANALYST 3000
7839 KING PRESIDENT
7844 TURNER SALESMAN
7876 ADAMS CLERK 1100
EMPNO ENAME JOB SAL COMM
---------- ---------- --------- ---------- ----------
7900 JAMES CLERK
7902 FORD ANALYST 3000
7934 MILLER CLERK
14 rows selected.
-- Xóa policy
BEGIN
DBMS_RLS.DROP_POLICY (object_schema => 'scott',
object_name => 'emp',
policy_name => 'sp_job');
END;
/
FGA (Fine-Grained Auditing)
Khi bật audit_trail mà gây cao tải thì có thể dùng giải pháp FGA (Fine-grained auditing) để audit các câu lệnh SELECT và DML
-- Xóa fga log
CONN sys/password@db10g AS SYSDBA
TRUNCATE TABLE fga_log$;
SELECT sql_text FROM dba_fga_audit_trail;
no rows selected.
-- Tạo policy giám sát SELECT,INSERT,UPDATE,DELETE trên cột SAL của EMP
BEGIN
DBMS_FGA.add_policy(
object_schema => 'SCOTT',
object_name => 'EMP',
policy_name => 'SAL_AUDIT',
audit_condition => NULL, -- Tương đương với TRUE
audit_column => 'SAL',
statement_types => 'SELECT,INSERT,UPDATE,DELETE');
END;
/
-- Test audit
CONN scott/tiger@db10g
SELECT * FROM emp;
INSERT INTO emp (empno, ename, sal) VALUES (9999, 'Tim', 1);
UPDATE emp SET sal = 10 WHERE empno = 9999;
DELETE emp WHERE empno = 9999;
ROLLBACK;
-- Kiểm tra audit trail.
SELECT sql_text FROM dba_fga_audit_trail;
SQL_TEXT
--------------------------------------
SELECT * FROM emp
INSERT INTO emp (empno, ename, sal) VALUES (9999, 'Binh', 1)
UPDATE emp SET sal = 10 WHERE empno = 9999
DELETE emp WHERE empno = 9999
4 rows selected.
-- Xóa policy.
CONN sys/password@db10g AS SYSDBA
BEGIN
DBMS_FGA.drop_policy(
object_schema => 'SCOTT',
object_name => 'EMP',
policy_name => 'SAL_AUDIT');
END;
/
Uniform Audit Trail (hay còn gọi là Audit Trail)
View DBA_COMMON_AUDIT_TRAIL
view hiển thị hết cả FGA và Audit Trail:
DBA_AUDIT_TRAIL
- Chỉ hiển thị audit chuẩn là audit trail (từAUD$
).DBA_FGA_AUDIT_TRAIL
- Hiển thị audit FGA (từFGA_LOG$
).DBA_COMMON_AUDIT_TRAIL
- HIển thị cả audit trail và FGA
Audit Trail chứa những nội dung gì?
Several fields have been added to both the standard and fine-grained audit trails.
EXTENDED_TIMESTAMP
- Chi tiết hơn của cộtTIMESTAMP
PROXY_SESSIONID
- Proxy session serial numberGLOBAL_UID
- Global Universal Identifier của UIDINSTANCE_NUMBER - Instance ID
OS_PROCESS
- PID mức OS của câu lệnh bị auditTRANSACTIONID
- Transaction identifier for the audited transaction. This column can be used to join to theXID
column on theFLASHBACK_TRANSACTION_QUERY
view.SCN
- System change numberSQL_BIND
- Giá trị tương ứng với câu lệnh SQL_TEXTSQL_TEXT
- Câu lệnh SQL được audit
Khi thay đổi tham số
AUDIT_TRAIL=DB_EXTENDED thì Cột SQL_BIND
sẽ hiển thị chi tiết giá trị từ câu lệnh SQL_TEXT, việc thay đổi tham số này phải restart lại instance:
-- Cấu hình audit db_extend để hiển thị chi tiết câu lệnh SQL có cả giá trị CONN sys/password AS SYSDBA ALTER SYSTEM SET audit_trail=db_extended SCOPE=SPFILE; SHUTDOWN IMMEDIATE STARTUP TRUNCATE TABLE aud$; TRUNCATE TABLE fga_log$; AUDIT ALL BY scott BY ACCESS; -- Thực hiện audit CONN scott/tiger UPDATE emp SET ename = ename; -- Kiểm tra audit trail. SELECT sql_text FROM dba_common_audit_trail; SQL_TEXT ---------------------------- UPDATE emp SET ename = ename 1 row selected. -- Bỏ audit trail CONN sys/password AS SYSDBA ALTER SYSTEM SET audit_trail=none SCOPE=SPFILE; SHUTDOWN IMMEDIATE STARTUP TRUNCATE TABLE aud$; TRUNCATE TABLE fga_log$;
DBMS_CRYPTO
Gói DBMS_CRYPTO
packagetahy thế gói DBMS_OBFUSCATION_TOOLKIT từ Oracle 8i và 9i. Gói này chứa nhiều thuật toán mã hóa:
- Thuật toán mã hóa - DES, 3DES, AES, RC4, 3DES_2KEY
- Dạng dịch bit - PKCS5, zeroes
- Các chế độ chuỗi mã hóa - CBC, CFB, ECB, OFB
- Thuật toán băm - MD5, SHA-1, MD4
- Thuật toán băm MAC - HMAC_MD5, HMAC_SH1
- Tạo số mã hóa ngẫu nhiên - RAW, NUMBER, BINARY_INTEGER
- Hỗ trợ các kiểu dữ liệu - RAW, CLOB, BLOB
1 ví dụ đơn giản như sau:
SET SERVEROUTPUT ON DECLARE l_credit_card_no VARCHAR2(19) := '1234 5678 9012 3456'; l_ccn_raw RAW(128) := UTL_RAW.cast_to_raw(l_credit_card_no); l_key RAW(128) := UTL_RAW.cast_to_raw('abcdefgh'); l_encrypted_raw RAW(2048); l_decrypted_raw RAW(2048); BEGIN DBMS_OUTPUT.put_line('Original : ' || l_credit_card_no); l_encrypted_raw := DBMS_CRYPTO.encrypt(src => l_ccn_raw, typ => DBMS_CRYPTO.des_cbc_pkcs5, key => l_key); DBMS_OUTPUT.put_line('Encrypted : ' || RAWTOHEX(UTL_RAW.cast_to_raw(l_encrypted_raw))); l_decrypted_raw := DBMS_CRYPTO.decrypt(src => l_encrypted_raw, typ => DBMS_CRYPTO.des_cbc_pkcs5, key => l_key); DBMS_OUTPUT.put_line('Decrypted : ' || UTL_RAW.cast_to_varchar2(l_decrypted_raw)); END; / Original : 1234 5678 9012 3456 Encrypted : 3041423134363932354234374545463631304337384433354443433736323331354244454237324635314545 Decrypted : 1234 5678 9012 3456 PL/SQL procedure successfully completed.
- What's New in Oracle Database Security?
- Adding Policies for Column-Level VPD
- DBMS_RLS.ADD_POLICY Procedure Policy Types
- Using SYS_CONTEXT in a Parallel Query
- New Features in Auditing
- Configuring and Administering Auditing
- DBA_AUDIT_TRAIL
- Developing Applications Using Data Encryption
- DBMS_CRYPTO
* 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
hoặc
https://bit.ly/oaz_fp
=============================
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 dataguard, oracle goldengate, oracle weblogic, oracle exadata, hoc solaris, hoc linux, hoc aix