Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Tạo mặt nạ dữ liệu thời gian thực bằng cách sử dụng trình kích hoạt

Các bài viết trước trong blog IRI đã trình bày chi tiết về việc tạo mặt nạ dữ liệu tĩnh của dữ liệu cơ sở dữ liệu mới bằng cách sử dụng logic / INCLUDE hoặc / QUERY trong tập lệnh công việc IRI FieldShield đã lên lịch yêu cầu thay đổi giá trị cột để phát hiện cập nhật. Bài viết này mô tả một cách thụ động hơn nhưng được tích hợp để kích hoạt các chức năng che FieldShield trên cơ sở các sự kiện SQL; nói cách khác, để che giấu dữ liệu vì nó được tạo ra trong thời gian thực.

Cụ thể hơn, bài viết này ghi lại cách cài đặt và sử dụng các thủ tục được lưu trữ gọi các hàm thư viện mặt nạ dữ liệu FieldShield để che PII trong Oracle 12c trên Windows. Nó cũng có thể đóng vai trò như một "mô hình thủ tục" cho các cơ sở dữ liệu và hệ điều hành khác.

Yêu cầu tối thiểu
  • Một phiên bản của cơ sở dữ liệu Oracle được kích hoạt JVM
  • Máy chủ / thùng Oracle phải nằm trong PATH hệ thống
  • Bản sao được cấp phép của IRI FieldShield và bộ phát triển phần mềm Sandkey của nó
  • Oracle Java JRE 8
  • Microsoft .NET v4.8 Framework
Cài đặt

Khi bạn có thư mục sandkey.zip, hãy giải nén sandkey.jar sandkeyFunctions.jar tệp và libsandkey.dll tệp tương ứng với hệ điều hành của bạn. libsandkey.dll tệp nằm trong thư mục gốc của tệp .zip

Thực hiện theo các bước sau khi bạn có tệp:

  • Mở dấu nhắc lệnh, điều hướng đến nơi chứa tệp và nhập các lệnh này ở định dạng:
 loadjava -r -u  /  @   

Nếu bạn gặp lỗi liên quan đến CREATE $ java $ LOB $ TABLE khi thực hiện việc này, bạn có thể không có đủ đặc quyền và có thể phải chạy lệnh một lần dưới dạng SYSTEM.

  • Đặt libsandkey.dll tập tin trong bin thư mục của máy chủ Oracle. Ngoài ra, hãy thêm vị trí của tệp vào đường dẫn hệ thống.
  • Kết nối với cơ sở dữ liệu dưới dạng SYSTEM bằng SQL * Plus hoặc một chương trình tương tự và nhập truy vấn sau:
 chọn seq, loại, người được cấp, tên, được kích hoạt từ dba_java_policy trong đó tên như ‘% java.lang.RuntimePermission%’; 

Tìm chính sách có nhãn “java.lang.RuntimePermission # loadLibrary. *”. Trong trường hợp này, đó là số 99. Cần tạm thời tắt chính sách này để cấp quyền cho người dùng Sandkey trong cơ sở dữ liệu.

  • Bây giờ, số chính sách đã được biết, hãy đưa ra các lệnh sau để tắt chính sách, cấp quyền cho người dùng, sau đó bật lại chính sách:
 execute dbms_java.disable_permission (99); execute dbms_java.grant_permission ('IRIDEMO', 'SYS:java.lang.RuntimePermission', 'loadLibrary.libsandkey', ''); thi hành dbms_java.enable_permission (99);  

Đảm bảo rằng tên người dùng được viết hoa hoàn toàn như hình minh họa, nếu không hệ thống sẽ không nhận dạng được.

  • Tạo các hàm sau trong SQL * Plus bằng cách chạy tập lệnh hoặc bằng cách nhập thủ công các lệnh sau:
 CREATE FUNCTION enc_aes256 (input VARCHAR2, pass VARCHAR2) RETURN VARCHAR2AS NGÔN NGỮ JAVANAME 'sandkeyFunctions.Functions.encaes256 (java.lang.String, java.lang.String) return java.lang.String'; / CREATE FUNCTION encATE VARCHAR2, chuyển VARCHAR2) QUAY LANGUAGE VARCHAR2AS JAVANAME 'sandkeyFunctions.Functions.encfpascii (java.lang.String, java.lang.String) trả về java.lang.String'; / CREATE FUNCTION enc_fp_alphan2AS JAVANAME 'sandkeyFunctions.Functions.encfpalphanum (java.lang.String, java.lang.String) trả về java.lang.String'; / CREATE FUNCTION dec_aes256 (input VARCHAR2, pass VARCHAR2) RETURN VARCHAR2AS LANGUAGE JAVANAME 'sandkeyFunctions256 java. lang.String) trả về java.lang.String '; / CREAT E FUNCTION dec_fp_alphanum (đầu vào VARCHAR2, truyền VARCHAR2) QUAY LẠI NGÔN NGỮ VARCHAR2AS JAVANAME 'sandkeyFunctions.Functions.decfpalphanum (java.lang.String, java.lang.String) trả về java.lang.String'; / 
  • Giờ đây, bạn có thể tạo các thủ tục hoặc trình kích hoạt được lưu trữ bằng cách sử dụng các chức năng mã hóa và giải mã Sandkey, các chức năng này tương thích với các chức năng mã hóa dữ liệu tĩnh tương tự trong các phiên bản tiện ích của IRI FieldShield, IRI DarkShield và IRI CellShield.
Trường hợp sử dụng:PL / SQL Trigger

Đây là một ví dụ sử dụng chức năng mã hóa Sandkey để tự động mã hóa dữ liệu khi nó được chèn vào bảng NHÂN VIÊN:

Trình kích hoạt này sử dụng hàm enc_fp_ascii (mã hóa bảo toàn định dạng ASCII) để mã hóa LAST_NAME của nhân viên mới và hàm enc_fp_alphanum để mã hóa PHONE_NUMBER của nhân viên mới trong mỗi hàng được chèn.

Trước khi dữ liệu được chèn, trình kích hoạt chuyển dữ liệu mới làm đầu vào và mật khẩu (giá trị khóa mã hóa) là pass , vào các chức năng mã hóa Sandkey. Hàm trả về kết quả bản mã của mỗi giá trị dưới dạng đầu ra sang hàng mới.

Trong ví dụ này, khi năm hàng mới được chèn vào bảng, hãy lưu ý cách mã hóa cột LAST_NAME và PHONE_NUMBER bằng các chức năng được mô tả ở trên.

Trên thực tế, sau khi được cài đặt, các chức năng tạo mặt nạ Sandkey có thể được sử dụng theo bất kỳ cách nào mong muốn trong khả năng của PL / SQL để hỗ trợ các yêu cầu về mặt nạ dữ liệu ổ đĩa sự kiện “động” hơn.

Liên hệ để được trợ giúp về phương pháp này trong môi trường cơ sở dữ liệu của bạn.

Trường hợp sử dụng:Chế độ xem được giải mã

Ví dụ này cho thấy việc tạo chế độ xem được giải mã dựa trên bảng NHÂN VIÊN.

Chế độ xem được giải mã được tạo tương tự như cách tạo bất kỳ chế độ xem nào, ngoại trừ cách gọi các cột dữ liệu. Các cột riêng lẻ được giải mã bằng các chức năng tương ứng của chúng, ở định dạng:

  (, ‘’)  

Việc tạo chế độ xem được giải mã cho phép người dùng được chỉ định truy vấn dữ liệu từ chế độ xem, đồng thời cho phép dữ liệu thực tế trong bảng NHÂN VIÊN vẫn được mã hóa. Dưới đây là hình ảnh về cách chế độ xem sẽ xuất hiện khi được truy vấn.

Việc tích hợp Sandkey và Oracle cho phép kiểm soát tốt hơn tính bảo mật của dữ liệu của bạn thông qua các trình kích hoạt mã hóa tự động, các chế độ xem được giải mã hoặc các thủ tục được lưu trữ tùy chỉnh. Nói một cách tổng quát hơn, bằng cách sử dụng các thủ tục và quy trình tạo mặt nạ FieldShield như PL / SQL, giờ đây bạn có thể che giấu dữ liệu nhạy cảm trên cơ sở các sự kiện cơ sở dữ liệu thời gian thực cho nhiều trường hợp sử dụng khác nhau.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tránh sắp xếp bằng hợp nhất Nối kết nối

  2. Hekaton with a twist:In-memory TVPs - Part 3

  3. Các lệnh SQL được phân loại như thế nào | UBIQ

  4. Python, Ruby và Golang:So sánh ứng dụng dịch vụ web

  5. Cách sử dụng DISTINCT trong SQL