บทความนี้อธิบายการตั้งค่าการเข้ารหัสระดับคอลัมน์ของ 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 ตามภาพด้านล่าง:
แหล่งที่มา: https://docs.oracle.com/cd/E11882_01/network.112/e40393/asotrans.htm#ASOAG9567
ขั้นตอนการนำ TDE ไปใช้งาน
ดำเนินการตามขั้นตอนต่อไปนี้เพื่อนำ TDE ไปใช้งาน:
-
取得รายการคอลัมน์และตารางที่ต้องการเข้ารหัส
-
สร้างโฟลเดอร์ wallet ที่ตำแหน่งที่ต้องการโดยรันคำสั่งต่อไปนี้:
$ mkdir TDEWallet -
ทำการเพิ่มรายการใน
sqlnet.oraหรือsqlnet_ifile.oraคล้ายกับบรรทัดต่อไปนี้:[oratactp@odbprod1 tactprd_odbprod1]$ cat sqlnet_ifile.ora -
ตั้งค่า
Master Keyโดยใช้คำสั่งต่อไปนี้ ซึ่งจะสร้างไฟล์ wallet ที่ตำแหน่ง wallet ที่ระบุในขั้นตอนก่อนหน้า:$ Sqlplus '/as sysdba' SQL> ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "*****"; System altered. -
ดาวน์โหลดและนำแพตช์
7337863ไปใช้ หากยังไม่ได้นำไปใช้ -
รัน
aftdeval.sqlบน AppsTier จาก$FND_TOP/sqlต่อตารางหรือคอลัมน์ที่ต้องการเข้ารหัส ตัวอย่างดังนี้:SQL> @aftdeval.sql IBY IBY_CREDITCARD CCNUMBER E -
รันคำสั่งเข้ารหัสทั้งหมดที่ถูกสร้างขึ้นโดย
aftdeval.sql -
ตรวจสอบคอลัมน์ที่เข้ารหัสโดยใช้คำสั่งต่อไปนี้:
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 -
คุณสามารถเปิดหรือปิด 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 "****"; -
คุณสามารถตั้งค่า 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 เพื่อแสดงความคิดเห็นหรือถามคำถาม
เรียนรู้เพิ่มเติมเกี่ยวกับบริการฐานข้อมูลของเรา