Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Cơ Sở Dữ Liệu

Bảo Mật Oracle Database Với Transparent Data Encryption (TDE)

Oracle® giới thiệu tính năng Transparent Data Encryption (TDE) trong Oracle 12C cho mục đích bảo mật để cho phép người dùng bật tablespace và column-level encryption cho dữ liệu nhạy cảm.

Giới thiệu

Sau khi mã hóa dữ liệu, chỉ authorized users hoặc applications mới có thể truy cập nó. Oracle dùng các tools và processes để authenticate, authorize, và audit database nhưng không phải OS data files lưu trữ dữ liệu.

Theo Oracle Database Advanced Security Guide (ASOAG), "TDE mã hóa sensitive data lưu trong data files. Để ngăn unauthorized decryption, TDE lưu encryption keys trong một security module bên ngoài database, gọi là keystore."

Quyền TDE cần thiết

Để cấu hình TDE, cấp cho user SYSKM administrative privilege. Sau đó ASOAG khuyến nghị bạn "tạo password file cho nó để user có thể kết nối database với SYSKM dùng password. ... Để cấu hình TDE column hoặc tablespace encryption, bạn không cần SYSKM ... privilege." Tuy nhiên, ASOAG thêm rằng bạn cần các "privileges sau để mã hóa table columns và tablespaces:

  • CREATE TABLE
  • ALTER TABLE
  • CREATE TABLESPACE
  • ALTER TABLESPACE (cho online và offline tablespace encryption)
  • ALTER DATABASE (cho fast offline tablespace encryption)"

Ngoài các privilege này, bạn nên tạo wallet luôn open để bật TDE. Wallet cũng được gọi là keystore trong 12c.

Hai loại TDE

Các phần sau mô tả hai loại TDE:

1. Transparent Data Encryption column encryption

Điều này bảo vệ confidential data như thẻ tín dụng, số an sinh xã hội, v.v., lưu trong table. Theo ASOAG, nó dùng "kiến trúc key-based hai tầng để transparently mã hóa và giải mã sensitive table columns. TDE master encryption key lưu trong external security module, có thể là Oracle software hoặc hardware keystore. TDE master encryption key này mã hóa và giải mã TDE table key, mà lần lượt mã hóa và giải mã dữ liệu trong table column."

Bảo Mật Oracle Database Với Transparent Data Encryption (TDE)

Nguồn hình ảnh: https://docs.oracle.com/database/121/ASOAG/introduction-to-transparent-data-encryption.htm#ASOAG10137


2. Transparent Data Encryption tablespace encryption

Tất cả object tạo trong encrypted tablespace tự động được mã hóa. Nó giúp bạn mã hóa toàn bộ table hoặc nhiều column. ASOAG thêm: "TDE tablespace encryption dùng kiến trúc key-based hai tầng để transparently mã hóa (và giải mã) tablespaces. TDE master encryption key lưu trong external security module (software hoặc hardware keystore). TDE master encryption key này dùng để mã hóa TDE tablespace encryption key, mà lần lượt dùng để mã hóa và giải mã dữ liệu trong tablespace."

Bảo Mật Oracle Database Với Transparent Data Encryption (TDE)

Nguồn hình ảnh: https://docs.oracle.com/database/121/ASOAG/introduction-to-transparent-data-encryption.htm#ASOAG10137

Mục đích của TDE

ASOAG nêu các lý do sau để dùng TDE:

  1. Bảo vệ sensitive data ngay cả khi ai đó đánh cắp storage media hoặc data file.
  2. Giúp giải quyết các vấn đề tuân thủ quy định bảo mật liên quan.
  3. Tạo additional auxiliary hoặc views để giải mã application data. Nó transparently giải mã table data cho database user và application với ít hoặc không thay đổi application.
  4. DB và application users không cần biết rằng data họ truy cập đang được mã hóa.
  5. Bạn có thể mã hóa data không downtime bằng online redefinition hoặc mã hóa ở offline mode.
  6. Bạn không cần thay đổi application để handle encrypted data. Database tự mã hóa và giải mã data.
  7. Oracle Database tự động hóa TDE master encryption key và keystore management operations.

Cấu hình TDE

Thực hiện các bước sau để cấu hình TDE và wallet:

  1. Tạo wallet hoặc keystore location:

     mkdir -p /u01/oracle/wallet 
  2. Cập nhật wallet hoặc keystore location trong 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. Tạo keystore:

     SQL> ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '/u01/oracle/wallet/' IDENTIFIED BY Oraclewallet#123 ; keystore altered. SQL> host ls /u01/oracle/wallet/ Oraclewallet.P12 
  4. Mở keystore:

    SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY Oraclewallet#123; keystore altered. 
  5. Kích hoạt key:

     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. Tạo encrypted tablespace:

     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. Tạo table với encrypted column:

     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. Bật autologin:

     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 

Ở đây wallet_type là PASSWORD. Mỗi khi bạn restart database, bạn cần mở key hoặc wallet rõ ràng. Để tránh điều này, bạn có thể bật auto login, tự động mở wallet khi database restart.

Kết luận

TDE cho phép bạn bảo mật dữ liệu nhạy cảm cao. Ngay cả khi datafile hoặc media storage bị đánh cắp, dữ liệu không khả dụng cho đến khi user có key để giải mã.

Tìm hiểu thêm về dịch vụ Database của chúng tôi.

Sử dụng tab Feedback để đưa ra nhận xét hoặc đặt câu hỏi. Bạn cũng có thể bắt đầu cuộc trò chuyện với chúng tôi.