Computer >> Máy Tính >  >> Lập trình >> Cơ sở dữ liệu

Mã hóa dữ liệu minh bạch

Oracle® đã giới thiệu tính năng Mã hóa dữ liệu minh bạch (TDE) trong mục đích bảo mật của Oracle 12C để cho phép người dùng kích hoạt mã hóa vùng bảng và cấp cột cho dữ liệu nhạy cảm.

Giới thiệu

Sau khi bạn mã hóa dữ liệu, chỉ những người dùng hoặc ứng dụng được ủy quyền mới có thể truy cập. Oracle sử dụng các công cụ và quy trình để xác thực, ủy quyền và kiểm tra cơ sở dữ liệu nhưng không sử dụng các tệp dữ liệu hệ điều hành lưu trữ dữ liệu.

Theo Hướng dẫn Bảo mật Nâng cao Cơ sở dữ liệu Oracle (ASOAG), “TDE mã hóa dữ liệu nhạy cảm được lưu trữ trong các tệp dữ liệu. Để ngăn giải mã trái phép, TDE lưu trữ các khóa mã hóa trong mô-đun bảo mật bên ngoài cơ sở dữ liệu, được gọi là kho khóa. ”

Đặc quyền TDE bắt buộc

Để định cấu hình TDE, hãy cấp cho người dùng SYSKM đặc quyền quản trị. Sau đó ,ASOAG thông báo rằng bạn “tạo một tệp mật khẩu cho nó để người dùng có thể kết nối với cơ sở dữ liệu dưới dạng SYSKM bằng mật khẩu. … Để định cấu hình mã hóa cột TDE hoặc không gian bảng, bạn không cần đặc quyền SYSKM… ”. Tuy nhiên, ASOAG cho biết thêm rằng bạn cần có “các đặc quyền sau để mã hóa các cột bảng và không gian bảng:

  • TẠO BẢNG
  • BẢNG THAY THẾ
  • TẠO TABLESPACE
  • ALTER TABLESPACE (để mã hóa vùng bảng trực tuyến và ngoại tuyến)
  • ALTER DATABASE (để mã hóa vùng bảng ngoại tuyến nhanh chóng) ”

Ngoài những đặc quyền này, bạn nên tạo một ví luôn mở để kích hoạtTDE. Ví còn được gọi là kho khóa trong 12c.

Hai loại TDE

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

1. Mã hóa cột Mã hóa dữ liệu minh bạch

Điều này bảo vệ dữ liệu bí mật như thẻ tín dụng, số an sinh xã hội, v.v. được lưu trữ trong bảng. TheoASOAG, nó sử dụng “kiến trúc dựa trên khóa hai tầng để mã hóa và giải mã các cột nhạy cảm một cách minh bạch. Khóa mã hóa chính TDE được lưu trữ trong một mô-đun bảo mật bên ngoài, có thể là một kho khóa phần cứng hoặc phần mềm Oracle. Khóa mã hóa chính TDE này sẽ mã hóa và giải mã khóa bảng TDE, khóa này sẽ mã hóa và giải mã dữ liệu trong cột bảng. ”

Mã hóa dữ liệu minh bạch

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


2. Mã hóa vùng bảng mã hóa dữ liệu minh bạch

Tất cả các đối tượng được tạo trong vùng bảng được mã hóa đều được mã hóa tự động. Nó giúp youto mã hóa toàn bộ bảng hoặc nhiều cột .ASOAG thêm điều này:“Mã hóa vùng bảng TDE sử dụng kiến ​​trúc hai tầng, dựa trên khóa để mã hóa (và giải mã) không gian bảng rõ ràng. Khóa mã hóa chính TDE được lưu trữ trong mô-đun bảo mật bên ngoài (kho khóa phần mềm hoặc phần cứng). Khóa mã hóa chính TDE này được sử dụng để mã hóa khóa mã hóa vùng bảng TDE, khóa này được sử dụng để mã hóa và giải mã dữ liệu trong vùng bảng. ”

Mã hóa dữ liệu minh bạch

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 đề cập đến những lý do sau để sử dụng TDE:

  1. Để bảo mật dữ liệu nhạy cảm ngay cả khi ai đó đánh cắp phương tiện lưu trữ hoặc tệp dữ liệu.
  2. Để giúp chúng tôi giải quyết các vấn đề tuân thủ quy định liên quan đến bảo mật.
  3. Để tạo thêm phần bổ trợ hoặc khung nhìn để giải mã dữ liệu ứng dụng. Nó mã hóa dữ liệu bảng một cách minh bạch cho người dùng cơ sở dữ liệu và ứng dụng với ít hoặc không có thay đổi đối với ứng dụng.
  4. Người dùng DB và ứng dụng không cần biết rằng dữ liệu họ đang truy cập đã được mã hóa.
  5. Bạn có thể mã hóa dữ liệu mà không mất thời gian chết bằng cách sử dụng tính năng xác định lại trực tuyến hoặc mã hóa dữ liệu ở chế độ không trực tuyến.
  6. Bạn không cần bất kỳ thay đổi ứng dụng nào để xử lý dữ liệu được mã hóa. Cơ sở dữ liệu mã hóa và giải mã dữ liệu.
  7. Cơ sở dữ liệu Oracle tự động hóa khóa mã hóa chính TDE và các hoạt động quản lý kho khóa.

Định cấu hình TDE

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

  1. Tạo ví hoặc vị trí kho khóa:

     mkdir -p /u01/oracle/wallet
    
  2. Cập nhật ví hoặc vị trí kho khóa 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 kho khóa:

     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ở kho khóa:

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

     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 một vùng bảng được mã hóa:

     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 bảng có cột được mã hóa:

     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 là wallet_type PASSWORD . Mỗi khi khởi động lại cơ sở dữ liệu, bạn cần mở khóa hoặc ví một cách rõ ràng. Để tránh điều này, bạn có thể bật đăng nhập tự động, thao tác này sẽ tự động vận hành ví khi cơ sở dữ liệu khởi động lại.

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 tệp dữ liệu hoặc bộ nhớ phương tiện bị lỗi, dữ liệu sẽ không có sẵn cho đến khi người dùng có khóa để giải mã.

Tìm hiểu thêm về các dịch vụ Cơ sở dữ liệu của chúng tôi.

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