security_3_1312340 - ATBMHTTT-2017/lab02-lab02-1312162-1312213-1312340 GitHub Wiki

Thông tin số tiền của mỗi chi tiêu trong dự án là nhạy cảm cần được mã hóa, do

trưởng dự án thiết lập và chỉ trưởng dự án được phép xem thông tin này. Ngoài ra,

trưởng dự án có thể cho phép một số người dùng nhất định xem thông tin này. Sinh

viên cần xây dựng giải pháp cho phép trưởng dự án mã hóa thông tin này, giải pháp

cho phép một số người dùng nhất định giải mã thông tin này.

  • Ta sẽ dùng DBMS_OBFUSCATION_TOOLKIT package để mã hóa thông tin Số tiền của bản Chi tiêu.

    DBMS_OBFUSCATION_TOOLKIT.desencrypt(input => UTL_RAW.cast_to_raw(l_text),

                                     `key            => g_key,`  
    
                                     `encrypted_data => l_encrypted);`  
    

    DBMS_OBFUSCATION_TOOLKIT.desdecrypt(input => p_raw,

                                     `key   => g_key,`  
    
                                     `decrypted_data => l_decrypted);`  
    
  • Tạo trigger trước khi Insert và Update cho bảng chi tiêu phải được mã hóa.

CREATE OR REPLACE TRIGGER Chitieu_TDA

BEFORE INSERT on CHITIEU_162_213_340

FOR EACH ROW

DECLARE

BEGIN

:new.soTien := toolkit.encrypt(UTL_RAW.cast_to_varchar2(:new.soTien));

END;

CREATE OR REPLACE TRIGGER Chitieu_TDA2

BEFORE UPDATE ON CHITIEU_162_213_340

FOR EACH ROW

DECLARE

BEGIN

:new.soTien := toolkit.encrypt(UTL_RAW.cast_to_varchar2(:new.soTien));

END;

  • Tạo View với Số tiền đã được giải mã từ bảng chi tiêu, cấp quyền insert, delete, update, select cho role Trưởng dự án trên bảng chi tiêu, cấp quyền select cho Trưởng Dự Án trên View vừa tạo và cho phép trưởng dự án grant quyền select trên view này cho user khác.``

CREATE OR REPLACE VIEW Chitieu_for_TDA AS select MACHITIEU,TENCHITIEU,toolkit.decrypt(SOTIEN) AS SoTien , DUAN from CHITIEU_162_213_340;

Grant insert,delete,update,select on CHITIEU_162_213_340 to TRUONGDUAN;

Grant select on Chitieu_for_TDA to TRUONGDUAN with Grant option;