Oracle® เปิดตัวฟีเจอร์ Transparent Data Encryption (TDE) ใน Oracle 12C เพื่อความปลอดภัย เพื่อให้ผู้ใช้เปิดใช้การเข้ารหัสพื้นที่ตารางและระดับคอลัมน์สำหรับข้อมูลที่ละเอียดอ่อนได้
แนะนำตัว
หลังจากที่คุณเข้ารหัสข้อมูลแล้ว เฉพาะผู้ใช้หรือแอปพลิเคชันที่ได้รับอนุญาตเท่านั้นที่สามารถเข้าถึงได้ Oracle ใช้เครื่องมือและกระบวนการเพื่อรับรองความถูกต้อง อนุญาต และตรวจสอบฐานข้อมูล แต่ไม่ใช่ไฟล์ข้อมูล OS ที่จัดเก็บข้อมูล
ตาม Oracle Database Advanced Security Guide (ASOAG) “TDE จะเข้ารหัสข้อมูลที่ละเอียดอ่อนซึ่งจัดเก็บไว้ในไฟล์ข้อมูล เพื่อป้องกันการถอดรหัสโดยไม่ได้รับอนุญาต TDE จะจัดเก็บคีย์การเข้ารหัสในโมดูลความปลอดภัยภายนอกฐานข้อมูล ซึ่งเรียกว่าที่เก็บคีย์”
สิทธิ์ TDE ที่จำเป็น
ในการกำหนดค่า TDE ให้ผู้ใช้ SYSKM
สิทธิ์ของผู้ดูแลระบบ จากนั้น ASOAG แนะนำให้คุณ "สร้างไฟล์รหัสผ่านเพื่อให้ผู้ใช้สามารถเชื่อมต่อกับฐานข้อมูลเป็น SYSKM โดยใช้รหัสผ่าน … ในการกำหนดค่าการเข้ารหัสคอลัมน์ TDE หรือ tablespace คุณไม่จำเป็นต้องมีสิทธิ์ SYSKM …” อย่างไรก็ตาม ASOAG เสริมว่าคุณต้องการ "สิทธิ์ต่อไปนี้ในการเข้ารหัสคอลัมน์ของตารางและพื้นที่ตาราง:
- สร้างตาราง
- เปลี่ยนตาราง
- สร้างพื้นที่ตาราง
- เปลี่ยน TABLESPACE (สำหรับการเข้ารหัสพื้นที่ตารางออนไลน์และออฟไลน์)
- เปลี่ยนฐานข้อมูล (สำหรับการเข้ารหัสพื้นที่ตารางออฟไลน์ที่รวดเร็ว)”
นอกเหนือจากสิทธิ์เหล่านี้ คุณควรสร้างกระเป๋าเงินที่ควรจะเปิดอยู่เสมอเพื่อเปิดใช้งานTDE กระเป๋าเงินเรียกอีกอย่างว่า keystore ใน 12c.
TDE สองประเภท
ส่วนต่อไปนี้อธิบาย TDE สองประเภท:
1. การเข้ารหัสคอลัมน์การเข้ารหัสข้อมูลที่โปร่งใส
ซึ่งจะปกป้องข้อมูลที่เป็นความลับ เช่น บัตรเครดิต หมายเลขประกันสังคม และอื่นๆ ที่จัดเก็บไว้ในตาราง ตาม ASOAG จะใช้ "สถาปัตยกรรมแบบคีย์สองชั้นเพื่อเข้ารหัสและถอดรหัสคอลัมน์ที่มีความละเอียดอ่อนอย่างโปร่งใส คีย์การเข้ารหัสหลัก TDE ถูกจัดเก็บไว้ในโมดูลความปลอดภัยภายนอก ซึ่งสามารถเป็นซอฟต์แวร์ Oracle หรือที่เก็บคีย์ฮาร์ดแวร์ คีย์การเข้ารหัสหลัก TDE นี้จะเข้ารหัสและถอดรหัสคีย์ตาราง TDE ซึ่งจะเข้ารหัสและถอดรหัสข้อมูลในคอลัมน์ตาราง”
แหล่งที่มาของรูปภาพ:https://docs.oracle.com/database/121/ASOAG/introduction-to-transparent-data-encryption.htm#ASOAG10137
2. การเข้ารหัสข้อมูลแบบโปร่งใส การเข้ารหัสพื้นที่ตาราง
ออบเจ็กต์ทั้งหมดที่สร้างขึ้นในพื้นที่ตารางที่เข้ารหัสจะได้รับการเข้ารหัสโดยอัตโนมัติ ช่วยให้คุณเข้ารหัสทั้งตารางหรือหลายคอลัมน์ ASOAG เพิ่มสิ่งนี้:“การเข้ารหัส TDE tablespace ใช้สถาปัตยกรรมแบบคีย์สองชั้นเพื่อเข้ารหัส (และถอดรหัส) tablespaces อย่างโปร่งใส คีย์การเข้ารหัสหลัก TDE ถูกเก็บไว้ในโมดูลความปลอดภัยภายนอก (ที่เก็บคีย์ซอฟต์แวร์หรือฮาร์ดแวร์) คีย์การเข้ารหัสหลัก TDE นี้ใช้เพื่อเข้ารหัสคีย์การเข้ารหัส TDE tablespace ซึ่งจะใช้ในการเข้ารหัสและถอดรหัสข้อมูลในพื้นที่ตาราง”
แหล่งที่มาของรูปภาพ:https://docs.oracle.com/database/121/ASOAG/introduction-to-transparent-data-encryption.htm#ASOAG10137
วัตถุประสงค์ของ TDE
ASOAG กล่าวถึงเหตุผลต่อไปนี้ในการใช้ TDE:
- เพื่อรักษาความปลอดภัยข้อมูลที่ละเอียดอ่อนแม้ว่าจะมีคนขโมยสื่อจัดเก็บข้อมูลหรือไฟล์ข้อมูลก็ตาม
- เพื่อช่วยเราแก้ไขปัญหาการปฏิบัติตามกฎระเบียบด้านความปลอดภัย
- เพื่อสร้างส่วนเสริมหรือมุมมองเพิ่มเติมเพื่อถอดรหัสข้อมูลแอปพลิเคชัน มันถอดรหัสข้อมูลตารางอย่างโปร่งใสสำหรับผู้ใช้ฐานข้อมูลและแอปพลิเคชันโดยมีการเปลี่ยนแปลงเพียงเล็กน้อยหรือไม่มีเลยในแอปพลิเคชัน
- ผู้ใช้ฐานข้อมูลและแอปพลิเคชันไม่จำเป็นต้องตระหนักว่าข้อมูลที่พวกเขากำลังเข้าถึงได้รับการเข้ารหัส
- คุณสามารถเข้ารหัสข้อมูลโดยไม่มีการหยุดทำงานโดยใช้การกำหนดนิยามใหม่ทางออนไลน์หรือเข้ารหัสในโหมดออฟไลน์
- คุณไม่จำเป็นต้องเปลี่ยนแปลงแอปพลิเคชันใดๆ เพื่อจัดการกับข้อมูลที่เข้ารหัส ฐานข้อมูลเข้ารหัสและถอดรหัสข้อมูล
- ฐานข้อมูล Oracle ทำให้คีย์การเข้ารหัสหลัก TDE และการจัดการคีย์สโตร์เป็นแบบอัตโนมัติ
กำหนดค่า TDE
ทำตามขั้นตอนต่อไปนี้เพื่อกำหนดค่า TDE และกระเป๋าเงิน:
-
สร้างกระเป๋าสตางค์หรือตำแหน่งที่เก็บคีย์:
mkdir -p /u01/oracle/wallet
-
อัปเดตตำแหน่งกระเป๋าเงินหรือที่เก็บคีย์ใน sqlnet.ora :
cat $ORACLE_HOME/network/admin/sqlnet.ora # sqlnet.ora Network Configuration File: /home/oracle/app/oracle/product/12.1.0/dbhome_1/network/admin/sqlnet.ora # Generated by Oracle configuration tools. NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT) ENCRYPTION_WALLET_LOCATION = (SOURCE =(METHOD = FILE)(METHOD_DATA = (DIRECTORY = /u01/oracle/wallet)))
-
สร้างที่เก็บคีย์:
SQL> ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '/u01/oracle/wallet/' IDENTIFIED BY Oraclewallet#123 ; keystore altered. SQL> host ls /u01/oracle/wallet/ Oraclewallet.P12
-
เปิดที่เก็บคีย์:
SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY Oraclewallet#123; keystore altered.
-
เปิดใช้งานคีย์:
SQL> SET LINESIZE 100 SELECT con_id, key_id FROM v$encryption_keys;SQL> no rows selected SQL> ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY Oraclewallet#123 WITH BACKUP; keystore altered. SQL> SET LINESIZE 100 SELECT con_id, key_id FROM v$encryption_keys;SQL> CON_ID KEY_ID ---------- ------------------------------------------------------------------------------ 0 HTDRKP*%GRLOHNRWMrX2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAA SQL> SET LINESIZE 200 COLUMN wrl_parameter FORMAT A50 SELECT * FROM v$encryption_wallet; SQL> SQL> WRL_TYPE WRL_PARAMETER STATUS WALLET_TYPE WALLET_OR FULLY_BAC CON_ID -------------------- -------------------------------------------------- ------------------------------ -------------------- --------- --------- ---------- FILE /u01/oracle/wallet/ OPEN PASSWORD SINGLE NO 0
-
สร้างพื้นที่ตารางที่เข้ารหัส:
SQL> CREATE TABLESPACE ENCRYPTION_TEST datafile '/u01/oracle/app/oracle/oradata/db/encrytest.dbf' size 2G ENCRYPTION USING 'AES256' DEFAULT STORAGE(ENCRYPT); 2 3 4 Tablespace created. SQL> create table ENCRYPTION_EMP( empno Number(3), Name varchar(10) ) tablespace ENCRYPTION_TEST; 2 3 4 Table created. SQL> select tablespace_name,encrypted from dba_tablespaces where tablespace_name='ENCRYPTION_TEST'; TABLESPACE_NAME ENC ------------------------------ --- ENCRYPTION_TEST YES
-
สร้างตารางด้วยคอลัมน์ที่เข้ารหัส:
SQL> CREATE TABLE employee ( first_name VARCHAR2(128), last_name VARCHAR2(128), empID NUMBER, salary NUMBER(6) ENCRYPT ); 2 3 4 5 6 Table created. SQL> select owner,table_name,column_name,encryption_alg from dba_encrypted_columns where table_name='EMPLOYEE'; OWNER TABLE_NAME COLUMN_NAME ENCRYPTION_A ---------- ------------ ------------ ----- RAJ EMPLOYEE SALARY AES 192 bits key
-
เปิดใช้งานการเข้าสู่ระบบอัตโนมัติ:
SQL> SELECT * FROM v$encryption_wallet; WRL_TYPE WRL_PARAMETER STATUS WALLET_TYPE WALLET_OR FULLY_BAC CON_ID ---------- ------------------- ------------ --------------- ------------- ------------- ---------- FILE /u01/oracle/wallet/ OPEN PASSWORD SINGLE NO 0
นี่คือ wallet_type คือ PASSWORD
. ทุกครั้งที่คุณรีสตาร์ทฐานข้อมูล คุณต้องเปิดคีย์หรือกระเป๋าเงินให้ชัดเจน เพื่อหลีกเลี่ยงปัญหานี้ คุณสามารถเปิดใช้งานการเข้าสู่ระบบอัตโนมัติ ซึ่งจะเปิดกระเป๋าเงินโดยอัตโนมัติเมื่อฐานข้อมูลรีสตาร์ท
บทสรุป
TDE ช่วยให้คุณรักษาความปลอดภัยข้อมูลที่มีความละเอียดอ่อนสูง แม้ว่า datafile หรือที่เก็บข้อมูลสื่อจะถูกขโมย ข้อมูลจะไม่สามารถใช้ได้จนกว่าผู้ใช้จะมีคีย์เพื่อถอดรหัสมัน
เรียนรู้เพิ่มเติมเกี่ยวกับบริการฐานข้อมูลของเรา
ใช้แท็บคำติชมเพื่อแสดงความคิดเห็นหรือถามคำถาม คุณสามารถเริ่มการสนทนากับเราได้