Giới Thiệu
Bài viết này thảo luận về việc thiết lập mã hóa cấp cột Transparent Data Encryption (TDE) trong môi trường Oracle® E-Business Suite® (EBS) R12. Bạn có thể thiết lập mã hóa cấp cột trên bảng đơn cột hoặc đa cột, tùy thuộc vào yêu cầu của người dùng.
Tổng Quan Về TDE
Bạn có thể sử dụng chức năng mã hóa cột TDE để mã hóa các cột được chọn của bảng. Vì mã hóa là minh bạch, bạn không cần viết lại mã ứng dụng và có thể sử dụng mã hiện có. Thuật ngữ minh bạch cũng có nghĩa là phiên bản cơ sở dữ liệu có thể đọc dữ liệu được mã hóa mà không gặp bất kỳ vấn đề nào.
Sau khi làm theo các hướng dẫn trong bài viết này, bạn có thể thiết lập mã hóa cấp cột TDE trong môi trường EBS R12.
Tác Động Của TDE
Việc triển khai mã hóa TDE có thể ảnh hưởng đến các khía cạnh sau của ứng dụng của bạn:
- Hiệu suất: Một số hạn chế khi triển khai TDE được ghi chép trong Hướng dẫn Bảo mật Nâng cao. Bạn nên xem xét tài liệu này trước khi triển khai TDE. Bạn cũng nên chọn cẩn thận các cột cần mã hóa vì lựa chọn này ảnh hưởng đến hiệu suất của Ngôn ngữ Thao tác Dữ liệu (DML) và các truy vấn khác sử dụng các cột được mã hóa.
- Vai bản sửa lỗi: Bạn nên nhận biết các bản vá EBS có sẵn, đặc biệt là các bản vá áp dụng thay đổi cho các cột được mã hóa bằng TDE. Điều này bao gồm các thay đổi như thêm chỉ mục trên cột được mã hóa.
Hạn Chế Của TDE
Mã hóa cột TDE không được hỗ trợ với các công nghệ dựa trên Oracle LogMiner, chẳng hạn như Streams hoặc DataGuard ở chế độ standby logic. Nếu bạn đang sử dụng các công nghệ này, bạn không thể sao chép các cột được mã hóa. Tuy nhiên, mã hóa TDE được hỗ trợ khi bạn sử dụng DataGuard ở chế độ standby vật lý. Trong trường hợp này, ví chứa khóa chính phải được sao chép từ máy chủ chính sang máy chủ standby vật lý, như được hiển thị trong hình ảnh sau:
Nguồn hình ảnh: https://docs.oracle.com/cd/E11882_01/network.112/e40393/asotrans.htm#ASOAG9567
Các Bước Triển Khai TDE
Thực hiện các bước sau để triển khai TDE:
- Lấy danh sách các cột và bảng cần được mã hóa.
- Tạo thư mục ví tại vị trí yêu cầu bằng cách chạy lệnh sau:
$ mkdir TDEWallet - Thực hiện mục nhập bắt buộc trong
sqlnet.orahoặcsqlnet_ifile.oratương tự như dòng sau:[oratactp@odbprod1 tactprd_odbprod1]$ cat sqlnet_ifile.ora - Thiết lập
Khóa Chínhbằng cách sử dụng các lệnh sau, sẽ tạo file ví tại vị trí ví được chỉ định ở bước trước:$ Sqlplus '/as sysdba' SQL> ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "*****"; System altered. - Tải xuống và áp dụng bản vá
7337863nếu chưa được áp dụng. - Thực thi
aftdeval.sqltrên AppsTier từ$FND_TOP/sqlđối với bảng hoặc cột cần được mã hóa, như ví dụ sau:SQL> @aftdeval.sql IBY IBY_CREDITCARD CCNUMBER E - Thực thi tất cả các lệnh mã hóa được tạo bởi
aftdeval.sql. - Xác minh các cột được mã hóa bằng lệnh sau:
SQL> SELECT * FROM DBA_ENCRYPTED_COLUMNS; OWNER TABLE_NAME COLUMN_NAME ENCRYPTION_ALG SAL INTEGRITY_AL ---------- ------------------------- -------------------- -------------------- --- ------------ IBY IBY_CREDITCARD CCNUMBER AES 192 bits key NO SHA-1 - Bạn có thể mở hoặc đóng ví bằng các lệnh sau:
SQL> ALTER SYSTEM SET ENCRYPTION WALLET CLOSE IDENTIFIED BY "****"; SQL> SELECT * FROM v$encryption_wallet; SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "****"; - Bạn có thể thiết lập đăng nhập tự động cho ví bằng lệnh sau:
$ orapki wallet create -wallet-auto_login
Ràng Buộc Cho Triển Khai TDE
Các ràng buộc sau áp dụng cho triển khai TDE:
- Chỉ một số kiểu dữ liệu nhất định có thể được mã hóa.
- Chỉ các cột được định nghĩa với độ dài nhỏ hơn 3932 byte mới có thể được mã hóa.
- Nếu cột là một phần của khóa ngoại hoặc được sử dụng trong một ràng buộc cơ sở dữ liệu khác, nó không thể được mã hóa.
- Nếu có chỉ mục dựa trên hàm trên cột, nó không thể được mã hóa.
- Nếu một cột được lập chỉ mục và quét phạm vi được thực hiện đối với cột đó, chỉ mục sẽ không còn được sử dụng sau khi cột được mã hóa. Thay vào đó, quét toàn bảng sẽ được thực hiện.
- Nếu một bảng được phân vùng và các phân vùng hoặc phân vùng con được trao đổi, tất cả các phân vùng bảng phải được mã hóa tương tự. Các bảng sau đây hiện phù hợp với tiêu chí này:
- EGO_MTL_SY_ITEMS_EXT_B
- EGO_MTL_SY_ITEMS_EXT_TL
- WF_LOCAL_ROLES
- WF_LOCAL_ROLES_STAGE
- WF_USER_ROLE_ASSIGNMENTS
- WF_UR_ASSIGNMENTS_STAGE
- WF_LOCAL_USER_ROLES
- WF_LOCAL_USER_ROLES_STAGE
- WF_LOCAL_ROLES_TL
- WF_LOCAL_ROLES_TL_STAGE
Kế Hoạch Quay Lại
Nếu mã hóa cột không còn cần thiết, hãy chạy các lệnh sau như một kế hoạch quay lại:
SQL> ALTER TABLE IBY.IBY_CREDITCARD modify (CCNUMBER decrypt); << lặp lại điều này cho tất cả các cột/bảng đã được mã hóa. Comment ENCRYPTION_WALLET_LOCATION từ sqlnet_ifile.ora
Sau khi thực thi các lệnh trước đó, hãy khởi động lại môi trường và thực hiện kiểm tra toàn diện.
Kết Luận
Bằng cách triển khai TDE ở cấp cột, bạn có thể ngăn chặn người dùng xem dữ liệu nhạy cảm được lưu trữ trong các cột, chẳng hạn như số thẻ tín dụng hoặc dữ liệu Nhân sự. Bạn không phải viết lại mã ứng dụng sau khi mã hóa. Mã hiện có có thể được sử dụng, và phiên bản cơ sở dữ liệu có thể xử lý dữ liệu được mã hóa mà không gặp rắc rố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.
Tìm hiểu thêm về các dịch vụ cơ sở dữ liệu của chúng tôi.