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

การเข้ารหัสข้อมูลที่โปร่งใส

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:

  1. เพื่อรักษาความปลอดภัยข้อมูลที่ละเอียดอ่อนแม้ว่าจะมีคนขโมยสื่อจัดเก็บข้อมูลหรือไฟล์ข้อมูลก็ตาม
  2. เพื่อช่วยเราแก้ไขปัญหาการปฏิบัติตามกฎระเบียบด้านความปลอดภัย
  3. เพื่อสร้างส่วนเสริมหรือมุมมองเพิ่มเติมเพื่อถอดรหัสข้อมูลแอปพลิเคชัน มันถอดรหัสข้อมูลตารางอย่างโปร่งใสสำหรับผู้ใช้ฐานข้อมูลและแอปพลิเคชันโดยมีการเปลี่ยนแปลงเพียงเล็กน้อยหรือไม่มีเลยในแอปพลิเคชัน
  4. ผู้ใช้ฐานข้อมูลและแอปพลิเคชันไม่จำเป็นต้องตระหนักว่าข้อมูลที่พวกเขากำลังเข้าถึงได้รับการเข้ารหัส
  5. คุณสามารถเข้ารหัสข้อมูลโดยไม่มีการหยุดทำงานโดยใช้การกำหนดนิยามใหม่ทางออนไลน์หรือเข้ารหัสในโหมดออฟไลน์
  6. คุณไม่จำเป็นต้องเปลี่ยนแปลงแอปพลิเคชันใดๆ เพื่อจัดการกับข้อมูลที่เข้ารหัส ฐานข้อมูลเข้ารหัสและถอดรหัสข้อมูล
  7. ฐานข้อมูล Oracle ทำให้คีย์การเข้ารหัสหลัก TDE และการจัดการคีย์สโตร์เป็นแบบอัตโนมัติ

กำหนดค่า TDE

ทำตามขั้นตอนต่อไปนี้เพื่อกำหนดค่า TDE และกระเป๋าเงิน:

  1. สร้างกระเป๋าสตางค์หรือตำแหน่งที่เก็บคีย์:

     mkdir -p /u01/oracle/wallet
    
  2. อัปเดตตำแหน่งกระเป๋าเงินหรือที่เก็บคีย์ใน 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)))
    
  3. สร้างที่เก็บคีย์:

     SQL> ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '/u01/oracle/wallet/' IDENTIFIED BY Oraclewallet#123 ;
     keystore altered.
     SQL> host ls /u01/oracle/wallet/
     Oraclewallet.P12
    
  4. เปิดที่เก็บคีย์:

    SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY Oraclewallet#123;
    keystore altered.
    
  5. เปิดใช้งานคีย์:

     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
    
  6. สร้างพื้นที่ตารางที่เข้ารหัส:

     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
    
  7. สร้างตารางด้วยคอลัมน์ที่เข้ารหัส:

     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
    
  8. เปิดใช้งานการเข้าสู่ระบบอัตโนมัติ:

     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 หรือที่เก็บข้อมูลสื่อจะถูกขโมย ข้อมูลจะไม่สามารถใช้ได้จนกว่าผู้ใช้จะมีคีย์เพื่อถอดรหัสมัน

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

ใช้แท็บคำติชมเพื่อแสดงความคิดเห็นหรือถามคำถาม คุณสามารถเริ่มการสนทนากับเราได้