Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> ฐานข้อมูล

รักษาความปลอดภัย Oracle EBS R12 ด้วย Transparent Data Encryption (TDE)

บทความนี้อธิบายการตั้งค่าการเข้ารหัสระดับคอลัมน์ของ Transparent Data Encryption (TDE) ในสภาพแวดล้อม Oracle® E-Business Suite® (EBS) R12 คุณสามารถตั้งค่าการเข้ารหัสระดับคอลัมน์บนตารางคอลัมน์เดียวหรือหลายคอลัมน์ได้ ขึ้นอยู่กับความต้องการของผู้ใช้

บทนำ

คุณสามารถใช้ฟังก์ชันการเข้ารหัสคอลัมน์ TDE เพื่อเข้ารหัสคอลัมน์ที่เลือกของตาราง เนื่องจากการเข้ารหัสเป็นแบบโปร่งใส คุณจึงไม่จำเป็นต้องเขียนโค้ดแอปพลิเคชันใหม่ และสามารถใช้โค้ดที่มีอยู่เดิมได้ คำว่า โปร่งใส หมายความว่าเซสชันฐานข้อมูลสามารถอ่านข้อมูลที่เข้ารหัสได้โดยไม่มีปัญหาใดๆ

หลังจากทำตามคำแนะนำในบทความนี้ คุณจะสามารถตั้งค่าการเข้ารหัสระดับคอลัมน์ TDE ในสภาพแวดล้อม EBS R12 ได้

ผลกระทบของ TDE

การนำ TDE ไปใช้งานอาจส่งผลต่อด้านต่อไปนี้ของแอปพลิเคชันของคุณ:

  • ประสิทธิภาพ: ข้อจำกัดบางประการในการนำ TDE ไปใช้งานมีการบันทึกไว้ใน Advance Security Guide คุณควรตรวจสอบก่อนการนำไปใช้ คุณควรเลือกคอลัมน์ที่จะเข้ารหัสอย่างระมัดระวัง เนื่องจากส่งผลต่อประสิทธิภาพของ Data Manipulation Language (DML) และคิวรีอื่นๆ ที่ใช้คอลัมน์ที่เข้ารหัส

  • การปรับแต่ง (Patching): คุณควรทราบเกี่ยวกับแพตช์ EBS ที่มีอยู่ โดยเฉพาะแพตช์ที่ใช้การเปลี่ยนแปลงคอลัมน์และเข้ารหัสด้วย TDE รวมถึงการเปลี่ยนแปลง เช่น การเพิ่มดัชนีบนคอลัมน์ที่เข้ารหัส

ข้อจำกัดของ TDE

การเข้ารหัสคอลัมน์ TDE ไม่รองรับเทคโนโลยีที่อิงจาก Oracle LogMiner เช่น Streams หรือ DataGuard ในโหมด logical-standby หากคุณใช้เทคโนโลยีเหล่านี้ คุณจะไม่สามารถจำลองคอลัมน์ที่เข้ารหัสได้ อย่างไรก็ตาม การเข้ารหัส TDE รองรับเมื่อคุณใช้ DataGuard ในโหมด physical-standby ในกรณีนี้ ต้องคัดลอก wallet ที่มี master key จากเซิร์ฟเวอร์หลักไปยังเซิร์ฟเวอร์ physical standby ตามภาพด้านล่าง:

รักษาความปลอดภัย Oracle EBS R12 ด้วย Transparent Data Encryption (TDE) แหล่งที่มา: https://docs.oracle.com/cd/E11882_01/network.112/e40393/asotrans.htm#ASOAG9567

ขั้นตอนการนำ TDE ไปใช้งาน

ดำเนินการตามขั้นตอนต่อไปนี้เพื่อนำ TDE ไปใช้งาน:

  1. 取得รายการคอลัมน์และตารางที่ต้องการเข้ารหัส

  2. สร้างโฟลเดอร์ wallet ที่ตำแหน่งที่ต้องการโดยรันคำสั่งต่อไปนี้:

    $ mkdir TDEWallet 
  3. ทำการเพิ่มรายการใน sqlnet.ora หรือ sqlnet_ifile.ora คล้ายกับบรรทัดต่อไปนี้:

    [oratactp@odbprod1 tactprd_odbprod1]$ cat sqlnet_ifile.ora 
  4. ตั้งค่า Master Key โดยใช้คำสั่งต่อไปนี้ ซึ่งจะสร้างไฟล์ wallet ที่ตำแหน่ง wallet ที่ระบุในขั้นตอนก่อนหน้า:

    $ Sqlplus '/as sysdba' SQL> ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "*****"; System altered. 
  5. ดาวน์โหลดและนำแพตช์ 7337863 ไปใช้ หากยังไม่ได้นำไปใช้

  6. รัน aftdeval.sql บน AppsTier จาก $FND_TOP/sql ต่อตารางหรือคอลัมน์ที่ต้องการเข้ารหัส ตัวอย่างดังนี้:

    SQL> @aftdeval.sql IBY IBY_CREDITCARD CCNUMBER E 
  7. รันคำสั่งเข้ารหัสทั้งหมดที่ถูกสร้างขึ้นโดย aftdeval.sql

  8. ตรวจสอบคอลัมน์ที่เข้ารหัสโดยใช้คำสั่งต่อไปนี้:

    SQL> SELECT * FROM DBA_ENCRYPTED_COLUMNS; OWNER TABLE_NAME COLUMN_NAME ENCRYPTION_ALG SAL INTEGRITY_AL ---------- ------------------------- -------------------- -------------------- --- ------------ IBY IBY_CREDITCARD CCNUMBER AES 192 bits key NO SHA-1 
  9. คุณสามารถเปิดหรือปิด wallet โดยใช้คำสั่งต่อไปนี้:

    SQL> ALTER SYSTEM SET ENCRYPTION WALLET CLOSE IDENTIFIED BY "****"; SQL> SELECT * FROM v$encryption_wallet; SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "****"; 
  10. คุณสามารถตั้งค่า auto login สำหรับ wallet โดยใช้คำสั่งต่อไปนี้:

    $ orapki wallet create -wallet <wallet_location> -auto_login 

ข้อจำกัดสำหรับการนำ TDE ไปใช้งาน

ข้อจำกัดต่อไปนี้ใช้กับการนำ TDE ไปใช้งาน:

  • มีเพียงชนิดข้อมูลบางชนิดเท่านั้นที่สามารถเข้ารหัสได้
  • มีเพียงคอลัมน์ที่กำหนดความยาวน้อยกว่า 3932 ไบต์เท่านั้นที่สามารถเข้ารหัสได้
  • หากคอลัมน์เป็นส่วนหนึ่งของ foreign key หรือใช้ในข้อจำกัดฐานข้อมูลอื่นๆ จะไม่สามารถเข้ารหัสได้
  • หากมี function-based index บนคอลัมน์ จะไม่สามารถเข้ารหัสได้
  • หากคอลัมน์มีดัชนีและทำการ range scans ต่อคอลัมน์นั้น ดัชนีจะไม่ถูกใช้งานหลังจากเข้ารหัสคอลัมน์แล้ว จะใช้ full table scans แทน
  • หากตารางถูก partition และ partitions หรือ subpartitions ถูก exchange ทุก table partitions ต้องเข้ารหัสในลักษณะเดียวกัน ตารางต่อไปนี้เป็นตัวอย่างที่ตรงตามเกณฑ์นี้:
  • EGO_MTL_SY_ITEMS_EXT_B
  • EGO_MTL_SY_ITEMS_EXT_TL
  • WF_LOCAL_ROLES
  • WF_LOCAL_ROLES_STAGE
  • WF_USER_ROLE_ASSIGNMENTS
  • WF_UR_ASSIGNMENTS_STAGE
  • WF_LOCAL_USER_ROLES
  • WF_LOCAL_USER_ROLES_STAGE
  • WF_LOCAL_ROLES_TL
  • WF_LOCAL_ROLES_TL_STAGE

แผนการย้อนกลับ

หากไม่จำเป็นต้องเข้ารหัสคอลัมน์ ให้รันคำสั่งต่อไปนี้เป็นแผนการย้อนกลับ:

SQL> ALTER TABLE IBY.IBY_CREDITCARD modify (CCNUMBER decrypt); << repeat this for all columns/tables which were encrypted. Comment ENCRYPTION_WALLET_LOCATION from sqlnet_ifile.ora 

หลังจากรันคำสั่งข้างต้นแล้ว ให้รีสตาร์ทสภาพแวดล้อมและทำการทดสอบความสมบูรณ์ (sanity test) ให้ครบถ้วน

สรุป

ด้วยการนำ TDE ไปใช้งานที่ระดับคอลัมน์ คุณสามารถป้องกันไม่ให้ผู้ใช้เห็นข้อมูลที่ละเอียดอ่อนที่จัดเก็บในคอลัมน์ เช่น หมายเลขบัตรเครดิตหรือข้อมูลทรัพยากรบุคคล คุณไม่ต้องเขียนโค้ดแอปพลิเคชันใหม่หลังการเข้ารหัส โค้ดที่มีอยู่สามารถใช้งานได้ และเซสชันฐานข้อมูลสามารถจัดการข้อมูลที่เข้ารหัสได้โดยไม่มีปัญหา

ใช้แท็บ Feedback เพื่อแสดงความคิดเห็นหรือถามคำถาม

เรียนรู้เพิ่มเติมเกี่ยวกับบริการฐานข้อมูลของเรา