Thứ Tư, 4 tháng 5, 2022

Mã hóa Tablespace trong Oracle 11g/12c/19c

Tính năng Mã hóa Dữ liệu trong suốt (Transparent Data Encryption - TDE) đã được giới thiệu từ Oracle 10g Database Release 2 để đơn giản hóa việc mã hóa dữ liệu trong các datafile ngăn chặn việc truy cập vào nó từ hệ điều hành. Mã hóa tablespace mở rộng công nghệ này, cho phép mã hóa toàn bộ nội dung của tablespace, thay vì phải định cấu hình mã hóa trên từng cột.
Nội dung:
  • Tạo Ví (Walllet)
  • Tạo tablespace
  • Kiểm tra mã hóa
  • Khởi động cơ sở dữ liệu

Tạo Ví

Thiết lập môi trường cho mã hóa tablespace cũng giống như môi trường cho mã hóa dữ liệu trong suốt. Trước khi thực hiện tạo một tablespace được mã hóa, bạn phải tạo một ví để giữ khóa mã hóa. Thứ tự tìm kiếm để tìm ví như sau:

  1. Nếu có, vị trí được chỉ định bởi tham số ENCRYPTION_WALLET_LOCATION trong tệp sqlnet.ora.
  2. Nếu có, vị trí được chỉ định bởi tham số WALLET_LOCATION trong tệp sqlnet.ora.
  3. Vị trí mặc định cho ví. Nếu $ORACLE_BASE được đặt, là "$ORACLE_BASE/admin/ DB_UNIQUE_NAME/wallet", nếu không nó sẽ nằm trong "$ORACLE_HOME/admin/DB_UNIQUE_NAME/wallet", DB_UNIQUE_NAME lấy từ tệp tham số khởi tạo.

Mặc dù các tablespace được mã hóa có thể chia sẻ ví cơ sở dữ liệu mặc định, Oracle khuyến cáo bạn nên sử dụng một ví riêng cho chức năng mã hóa dữ liệu trong suốt bằng cách chỉ định tham số ENCRYPTION_WALLET_LOCATION trong tệp sqlnet.ora. Để thực hiện điều này, chúng tôi thêm mục  sau vào tệp sqlnet.ora trên máy chủ và đảm bảo rằng thư mục được chỉ định đã được tạo.

ENCRYPTION_WALLET_LOCATION=
  (SOURCE=(METHOD=FILE)(METHOD_DATA=
    (DIRECTORY=/u01/app/oracle/admin/DB11G/encryption_wallet/)))

Tham số này cũng có thể được sử dụng để xác định Mô đun bảo mật phần cứng (HSM) (đây là thiết bị phần cứng chuyên dụng an toàn cao để lưu trữ khóa mã hóa) làm vị trí lưu trữ cho ví.

Lệnh sau tạo và mở ví.

CONN sys/password@db11g AS SYSDBA
ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "oracle";

Ví phải được mở lại sau khi khởi động lại  instance và có thể đóng lại để ngăn truy cập vào dữ liệu được mã hóa.

ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "oracle";

ALTER SYSTEM SET ENCRYPTION WALLET CLOSE;

Tạo tablespace

Tablespace được mã hóa được tạo bằng mệnh đề ENCRYPTION với một tùy chọn USING để chỉ định thuật toán mã hóa. Nếu mệnh đề USING bị bỏ qua, thuật toán mã hóa mặc định là 'AES128'. Ngoài ra, điều khoản lưu trữ mặc định của ENCRYPT phải được chỉ định. Mã hóa tablespace không cho phép tùy chọn NO SALT có sẵn trong TDE. Câu lệnh sau tạo một tablespace được mã hóa bằng cách đặt tên rõ ràng cho thuật toán mã hóa 'AES256' với mệnh đề USING.

CREATE TABLESPACE encrypted_ts
DATAFILE '/u01/app/oracle/oradata/DB11G/encrypted_ts01.dbf' SIZE 128K
AUTOEXTEND ON NEXT 64K
ENCRYPTION USING 'AES256'
DEFAULT STORAGE(ENCRYPT);

ALTER USER test QUOTA UNLIMITED ON encrypted_ts;

Cột  ENCRYPTED của DBA_TABLESPACES và USER_TABLESPACES cho chúng ta biết tablespace có được mã hóa hay không.

SELECT tablespace_name, encrypted FROM dba_tablespaces;

TABLESPACE_NAME                ENC
------------------------------ ---
SYSTEM                         NO
SYSAUX                         NO
UNDOTBS1                       NO
TEMP                           NO
USERS                          NO
ENCRYPTED_TS                   YES

6 rows selected.

SQL>

Tablespace thông thường không thể được chuyển đổi thành tablespace được mã hóa. Thay vào đó, dữ liệu phải được chuyển theo cách thủ công bằng cách sử dụng export/import hoặc " ALTER TABLE ... MOVE ..." hoặc " CREATE TABLE ... AS SELECT * FROM ...".

Kiểm tra việc mã hóa

Với tablespace, chúng ta có thể tạo một số đối tượng để kiểm tra việc mã hóa. Đoạn mã sau tạo một bảng và chỉ mục trong tablespace được mã hóa và chèn một hàng vào bảng.

CONN test/test@db11g

CREATE TABLE ets_test (
  id    NUMBER(10),
  data  VARCHAR2(50)
)
TABLESPACE encrypted_ts;

CREATE INDEX ets_test_idx ON ets_test(data) TABLESPACE encrypted_ts;

INSERT INTO ets_test (id, data) VALUES (1, 'This is a secret!');
COMMIT;

Flush bộ đệm cache để đảm bảo dữ liệu được ghi vào datafile.

CONN sys/password@db11g AS SYSDBA
ALTER SYSTEM FLUSH BUFFER_CACHE;

Khi tệp được mở bằng trình chỉnh sửa HEX (như UltraEdit ), chỉ hiển thị được ký tự không in được. Chuỗi "This is a secret!" không hiển thị trong bảng hoặc dữ liệu chỉ mục trong tablespace đã được mã hóa.

Khi bạn kiểm tra xong tablespace được mã hóa, hãy đảm bảo dọn sạch tablespace và tệp dữ liệu liên quan.

DROP TABLESPACE encrypted_ts INCLUDING CONTENTS AND DATAFILES;

Khởi động cơ sở dữ liệu

Thủ tục sau đây cho thấy tác động của việc dừng và khởi động cơ sở dữ liệu trên tablespace được mã hóa. Lưu ý cách ví phải được mở trước khi dữ liệu có thể truy cập được.

SQL>CONN / AS SYSDBA
Connected.

SQL> SHUTDOWN IMMEDIATE;
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> STARTUP
ORACLE instance started.

Total System Global Area  626327552 bytes
Fixed Size                  2255832 bytes
Variable Size             234882088 bytes
Database Buffers          381681664 bytes
Redo Buffers                7507968 bytes
Database mounted.
Database opened.

SQL> SELECT tablespace_name, encrypted, status FROM dba_tablespaces;

TABLESPACE_NAME                ENC STATUS
------------------------------ --- ---------
SYSTEM                         NO  ONLINE
SYSAUX                         NO  ONLINE
UNDOTBS1                       NO  ONLINE
TEMP                           NO  ONLINE
USERS                          NO  ONLINE
EXAMPLE                        NO  ONLINE
SOE                            NO  ONLINE
ENCRYPTED_TS                   YES ONLINE

8 rows selected.

SQL> SELECT * FROM test.ets_test;
select * from test.ets_test
                   *
ERROR at line 1:
ORA-28365: wallet is not open


SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "oracle";

System altered.

sys@db11g> select * from test.ets_test;

        ID DATA
---------- --------------------------------------------------
         1 This is a secret!

1 row selected.

SQL>

Để biết thêm thông tin, hãy xem:

Hi vọng hữu ích cho bạn.

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile: 0902912888
⚡️ Skype: tranbinh48ca
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,khóa học pl/sql, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, middleware, hoc solaris, hoc linux, hoc aix, unix, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master