1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Đề tài TÌM HIỂU VỀ VIRTUAL PRIVATE DATABASE TRONG ORACLE

15 165 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 202,2 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Khi người dùng bắt đầu truy vấn: SELECT * FROM NhanVien; Chức năng thực thiện chính sách bảo mật trả về vị từ Phong = ‘Lập trình’ và CSDL viết lại một cách trong suốt truy vấn.. Từ đó đế

Trang 1

HỌC VIỆN KĨ THUẬT MẬT MÃ KHOA : AN TOÀN THÔNG TIN

AN TOÀN CƠ SỞ DỮ LIỆU

Đề tài:

TÌM HIỂU VỀ VIRTUAL PRIVATE DATABASE

TRONG ORACLE

Giáo viên bộ môn: Th.S Phạm Duy Trung Sinh viên thực hiện: Nguyễn Hoàng Lân

Phan Hoàng Trung

Lê Thanh Lâm

Trang 2

MỤC LỤC

CHƯƠNG I: GIỚI THIỆU VỀ CƠ SỞ DỮ LIỆU RIÊNG ẢO 2

1.1 Giới thiệu về hệ quản trị CSDL Oracle: 2

1.2 Giới thiệu chung về VPD: 3

1.2.1 Các phiên bản VPD: 4

1.2.2 Lợi ích của VPD: 2

CHƯƠNG II: NGỮ CẢNH ỨNG DỤNG 3

2.1 Giới thiệu về ngữ cảnh ứng dụng: 3

2.2 Ngữ cảnh mặc định USERNV: 3

2.3 Ngữ cảnh cục bộ (Local Context): 5

2.3.1 Tạo một ngữ cảnh ứng dụng: 6

2.3.2 Thiết lập các thuộc tính và giá trị cho ngữ cảnh ứng dụng: 6

2.3.3 Áp dụng ngữ cảnh ứng dụng và bảo mật: 7

2.4 Ngữ cảnh toàn cục (Global Context): 7

CHƯƠNG III: BẢO MẬT MỨC HÀNG VỚI VPD 7

3.1 Giới thiệu về RLS: 7

3.2 Tạo Function PL/SQL trả về chuỗi string: 8

3.3 Tạo chính sách bảo mật áp dụng vào bảng, khung nhìn: 9

3.4 Riêng tư mức cột trong VPD: 10

3.5 Xóa Policy RLS: 11

3.6 Quyền Exempt Access Policy: 11

TÀI LIỆU THAM KHẢO 12

CHƯƠNG I: GIỚI THIỆU VỀ CƠ SỞ DỮ LIỆU RIÊNG ẢO

1.1 Giới thiệu về hệ quản trị CSDL Oracle:

Oracle Database hay còn gọi là Oracle RDBMS hoặc đơn giản là Oracle, là một hệ quản trị cơ sở dữ liệu quan hệ, được phát triển và phân phối bởi tập đoàn Oracle Oracle version 1 ra đời từ năm 1978 Sau vài chục năm, hiện tại Oracle Database đã lên đến version 19 Trước kia các version Oracle Database chỉ được đánh số Bắt đầu

từ version 8 trở đi có thêm ký tự phía sau version Với version 8 và 9 là i (internet),

Trang 3

version 10 và 11 là g (grid)… Version 19 mới nhất là c (cloud) Các ký tự thể hiện đặc tính nền tảng/kiến trúc của version đó

Không giống như các nhà cung cấp CSDL khác, Oracle xem trọng việc bảo mật và các đặc tính của CSDL để từ đó xây dựng các quan hệ an ninh vào trong hệ thống quản lý CSDL

1.2 Giới thiệu chung về VPD:

VPD là tên viết tắt của Virtual Private Database hay còn được gọi là CSDL riêng ảo VPD cho phép bạn thực hiện bảo mật tới một mức thấp nhất trực tiếp trên các bảng hoặc các khung nhìn Bởi vì chính sách bảo mật gán trực tiếp vào các bảng, khung nhìn và được tự động áp dụng bất cứ khi nào người dùng truy xuất dữ liệu, không có cách nào để

bỏ qua sự kiểm tra này

Khi một người dùng trực tiếp hoặc gián tiếp truy xuất một bảng, khung nhìn đã được bảo vệ bằng một chính sách VPD, máy chủ tự điều chỉnh một cách động câu lệnh SQL của người sử dụng Sự điều chỉnh này dựa trên điều kiện WHERE (vị từ) được trả lại bởi một chức năng thực hiện chính sách bảo mật Câu lệnh được điều chỉnh một cách động, trong suốt với người dùng, sử dụng bất kỳ điều kiện có thể được biểu diễn bên trong, hoặc được trả lại bằng một chức năng Những chính sách VPD có thể được áp dụng cho những câu lệnh SELECT, INSERT, UPDATE, INDEX, và DELETE

Những chức năng mà trả lại những vị từ cũng có thể bao gồm lời gọi đến các chức năng khác Bên trong gói PL/SQL của bạn, bạn có thể nhúng vào C hoặc Java mà có thể truy xuất thông tin hệ điều hành, hoặc trả về những mệnh đề WHERE tùy biến Một chức năng chính sách có thể trả về những vị từ khác nhau cho từng người dùng, từng nhóm hoặc cho từng ứng dụng Sử dụng những chức năng chính sách trên từ đồng nghĩa

có thể thay thế cho việc duy trì một khung nhìn riêng biệt cho mỗi người dùng hoặc lớp người dùng, sự lưu trữ trên không đáng kể trong bộ nhớ và tài nguyên xử lý

Lấy ví dụ một nhân viên là người mà chỉ được phép thấy các bảng ghi NhanVien trong phòng lập trình Khi người dùng bắt đầu truy vấn:

SELECT * FROM NhanVien;

Chức năng thực thiện chính sách bảo mật trả về vị từ Phong = ‘Lập trình’ và CSDL viết lại một cách trong suốt truy vấn Câu truy vấn thực sự được thực hiện trở thành:

SELECT * FROM NhanVien WHERE Phong = ‘Lập trình’;

Trang 4

1.2.1 Các phiên bản VPD:

VPD được bắt đầu sử dụng trong Oracle 8i (phiên bản 8.1.5), nó được xem như là một giải pháp mới để thực thi kiểm soát truy cập dữ liệu tại máy chủ Từ đó đến nay VPD

có các phiên bản đi kèm với sự phát triển của Oracle, bao gồm:

 Oracle 8i

- Điều khiển truy cập mức mịn (Fine-grained Access Control)

- Ngữ cảnh ứng dụng (Application Context)

- Bảo mật mức hàng (Row Level Security)

- Hỗ trợ cho các bảng và khung nhìn (VPD support for table and view)

 Oracle 9i

- Chính sách quản lý Oracle (Oracle Policy Manager)

- Điều khiển truy cập mức mịn và sự phân chia (Partitioned fine-grained access

control)

- Ngữ cảnh ứng dụng toàn cục (Global application context)

- Hỗ trợ cho synonyms (VPD support for synonyms)

 Oracle 10g

- Tùy biến Có thể tùy chỉnh VPD để luôn luôn thực hiện các predicate cùng với một chính sách tĩnh hoặc ta có thể có các predicate VPD thay đổi với các chính sách không tĩnh

- Tính riêng tư mức cột

- Chính sách chia sẻ cho nhiều đối tượng để giảm thiểu chi phí

 Oracle 11g cung cấp cho người quản lý doanh nghiệp sự tích hợp các chính sách bảo mật mức hàng

 Oracle 12c cung cấp nhiều hỗ trợ liên quan đến điện toán đám mây

 Trong khoảng thời gian gần đây, Oracle cung cấp them cho người dùng nhiều phiên bản như 18c, 19c them nhiều tiện ích mới

Trang 5

1.2.2 Lợi ích của VPD:

VPD cho phép người quản trị gán các chính sách bảo mật lên các bảng, khung nhìn

để những người dùng với quyền hạn khác nhau sẽ được truy xuất các bản ghi khác nhau trong bảng, khung nhìn đó Việc giới hạn này sẽ trong suốt đối với mọi người dùng Đồng thời chính sách bảo mật đó sẽ được áp dụng cho bất kỳ user nào truy xuất đến bảng, khung nhìn đó mà không cần người quản trị phải gán chính sách cho từng user VPD mang lại rất nhiều lợi ích trong việc bảo mật CSDL và dưới đây là một số lợi ích mà ta có thể nhận thấy dễ dàng đó là:

 Chi phí thấp: Có thể tiết kiệm được một khoản chi phí rất lớn bằng cách xây dựng một hệ thống bảo mật cho máy chủ dữ liệu thay vì phải thực thi các chính bảo mật giống nhau cho mỗi ứng dụng khi có truy cập dữ liệu

 Trong suốt với người dùng: Người dùng có thể truy cập dữ liệu mà không hề biết tới các chính sách bảo mật được áp dụng Bởi các chính sách bảo mật được đính kèm với CSDL và được thực thi một cách tự động, trong suốt trên máy chủ

 Cơ hội kinh doanh: Trong quá khứ, các công ty không thể cho khách hàng, đối tác truy cập trực tiếp vào CSDL của họ bởi họ chưa có cách nào để làm an toàn dữ liệu của

họ Ngày nay, bằng cách kiểm soát truy cập mức mịn, dữ liệu sẽ được bảo mật trên máy chủ, và việc truy cập dữ liệu sẽ được giới hạn ở mức độ ủy quyền khác nhau

CHƯƠNG II: NGỮ CẢNH ỨNG DỤNG

2.1 Giới thiệu về ngữ cảnh ứng dụng:

Ngữ cảnh ứng dụng (Application context) là một tập các cặp thuộc tính - giá trị được lưu trong bộ nhớ Nó được xác định, thiết lập và lấy ra bởi người dùng và các ứng dụng Các thuộc tính liên quan được nhóm lại thành một nhóm và được truy cập theo tên của

nó Bằng cách lưu trữ các giá trị và các thuộc tính trong bộ nhớ, sau đó chia sẻ chúng dựa trên ngữ cảnh sẽ giúp việc truy xuất các giá trị nhanh chóng hơn

Thông thường các ngữ cảnh ứng dụng chứa một số thuộc tính chẳng hạn như tên một người dùng, một tổ chức, một quy tắc, hay một tiêu đề Các chính sách bảo mật có thể được tham chiếu tới các thuộc tính này khi người dùng đang kiểm soát truy nhập Việc

Trang 6

lưu trữ các giá trị trong bộ nhớ, với các câu truy vấn giống nhau, hệ thống sẽ lấy cùng một giá trị trong ngữ cảnh ứng dụng, như vậy sẽ tiết kiệm được thời gian Vì vậy mà trong tài liệu bảo mật thường chứa các ngữ cảnh ứng dụng Tuy nhiên không phải tất cả ngữ cảnh ứng dụng được sử dụng trong việc thực thi bảo mật hay ngược lại

2.2 Ngữ cảnh mặc định USERNV:

Oracle cung cấp một ngữ cảnh mặc định cho mỗi phiên sử dụng CSDL Nó có không

gian tên là USERNV Hầu hết các thuộc tính trong USRENV được định sẵn bởi CSDL.

Nếu ta sử dụng các ngữ cảnh mặc định này thì vấn đề trở nên đơn giản và sáng sủa

hơn Bởi USERENV cung cấp rất nhiều thuộc tính hữu ích chẳng hạn như thông tin về

môi trường người dùng, địa chỉ IP của máy khách, tên người dùng ủy quyền, giao thức được sử dụng để kết nối

Tất cả thuộc tính của ngữ cảnh ứng dụng đều được tham chiếu thông qua function SYS_CONTEXT Function SYS_CONTEXT có không gian tên giống như tham số đầu

và tên thuộc tính giống như tham số thứ hai và trả về giá trị của một thuộc tính liên quan

Ví dụ cú pháp sau đây để trả về thông tin của phiên hiện tại

SYS_CONTEXT('userenv', 'tên thuộc tính')

Tên thuộc tính Giá trị trả về

ACTION ID vị trí trong module (application name) và được thiết lập

thông qua DBMS_APPLICATION_INFO package hoặc OCI

AUDITED_CURSORI

D Trả về ID cursor của phiên mà Triggered bởi kiểm toán Tham số này

không hợp lệ trong một môi trường kiểm toán mức mịn

AUTHENTICATED_I

DENTITY Trả về ID người dùng đã được sử dụng trong xác thực.

AUTHENTICATION_

DATA Dữ liệu đang được sử dụng để xác thực người dùng đăng nhập

AUTHENTICATION_

METHOD Trả về phương thức xác thực.

BG_JOB_ID ID công việc của phiên hiện tại nếu nó được thành lập bởi

một tiến trình nền

CLIENT_IDENTIFIE

R Trả về ID được thiết lập bởi ứng dụng thông qua thủ tụcDBMS_SESSION.SET_IDENTIFIER, thuộc tính

OCI_ATTR_CLIENT_IDENTIFIER của OCI, hoặc lớp Java

Oracle.jdbc.OracleConnection.setClientIdentifier

CLIENT_INFO Trả về kích thước lên tới 64 byte thông tin phiên người dùng

được lưu trữ bởi DBMS_APPLICATION_INFO package

CURRENT_BIND Các biến ràng buộc đối với kiểm toán mức mịn

Trang 7

CURRENT_SCHEMA Tên của schema hiện tại.

CURRENT_SCHEMA

ID ID schema hiện tại.

CURRENT_SQL

CURRENT_SQLn

CURRENT_SQL trả về 4K byte dầu tiên của SQL Triggered kiểm toán mức mịn hiện tại

CURRENT_SQLn trả về 4K byte tiếp theo

CURRENT_SQL_LEN

GTH Độ dài của SQL Triggered kiểm toán mức mịn hiện tại. DB_DOMAIN Tên miền của CSDL

DB_NAME Tên của CSDL

DB_UNIQUE_NAME Tên duy nhất của CSDL

ENTRYID Số Entry kiểm toán hiện tại

ENTERPRISE_IDENT

ITY Trả về ID người dùng doanh nghiệp.

FG_JOB_ID ID công việc của phiên hiện tại nếu nó được thành lập bởi

một tiến trình nổi bật

GLOBAL_CONTEXT

_MEMORY Trả về số đang được sử dụng System Global Area.

GLOBAL_UID Trả về ID người dùng toàn cục từ Oracle Internet Directory

for Enterprise User Security

HOST Tên máy chủ mà Client đã kết nối tới

IDENTIFICATION_T

YPE Trả về cách mà schema đã được tạo trong CSDL.

INSTANCE Số ID của Instance hiện tại

INSTANCE_NAME Tên của Instance hiện tại

IP_ADDRESS Địa chỉ IP của máy chủ mà Client đã kết nối tới

ISDBA Trả về TRUE nếu người dùng xác thực có đặc quyền DBA

LANG Chữ viết tắt ISO cho tên ngôn ngữ

LANGUAGE Ngôn ngữ và lãnh thổ đang được sử dụng bởi phiên người

dùng

MODULE Tên ứng dụng được thiết lập thông qua OCI hoặc

DBMS_APPLICATION_INFO

NETWORK_PROTO

COL Giao thức mạng được sử dụng để liên lạc.

NLS_CALENDAR Lịch của phiên hiện tại

NLS_CURRENCY Đơn vị tiền tệ của phiên hiện tại

NLS_DATE_FORMA

T Định dạng ngày của phiên.

NLS_DATE_LANGUA

GE Ngôn ngữ được sử dụng để diễn tả ngày.

NLS_SORT BINARY hoặc linguistic

NLS_TERRITORY Lãnh thổ của phiên hiện tại

OS_USER Tên tài khoản OS đã bắt đầu phiên

POLICY_INVOKER Invoker của RLS policy functions

PROXY_ENTERPRI

SE_IDENT ITY

Trả về Oracle Internet Directory DN khi tài khoản proxy là tài khoản

doanh nghiệp

PROXY_GLOBAL_U

ID

ID tài khoản toàn cục từ Oracle Internet Directory for Enterprise User

Security NULL cho tất cả tài khoản proxy khác

PROXY_USER Tên của người dùng đã mở phiên hiện tại trên danh nghĩa

của

SESSION_USER

PROXY_USERID ID của người dùng đã mở phiên hiện tại trên danh nghĩa của

SESSION_USER

Trang 8

SERVER_HOST Tên máy chủ đang chạy.

SERVICE_NAME Tên dịch vụ mà phiên đã kết nối.

SESSION_USER Đối với tài khoản doanh nghiệp thì trả về schema Đối với

người dùng khác, trả về tên tài khoản CSDL mà người dùng hiện tại đã xác thực

SESSION_USERID ID của người dùng CSDL mà người dùng hiện tại đã được

xác thức

SESSIONID ID phiên kiểm toán.

SID Số phiên (khác với sessionID).

STATEMENTID Định danh báo cáo kiểm toán STATEMENTID trả về số

lượng các câu SQL được kiểm toán trong phiên cụ thể

TERMINAL Định danh OS của client trong phiên hiện tại.

2.3 Ngữ cảnh cục bộ (Local Context):

Khác với USERENV định danh người dùng và thuộc tính khách hàng đều được thiết

lập bởi người dùng thì ngữ cảnh cục bộ được thiết lập riêng cho từng phiên làm việc Ngữ cảnh cục bộ hỗ trợ khả năng xác định không gian tên riêng dựa trên các thuộc tính bổ sung

Trong khi các giá trị trong USERENV được tự động thiết lập bởi CSDL thì các giá trị

trong ngữ cảnh cục bộ được thiết lập thông qua các PL/SQL Đó là quy định khi tạo ngữ cảnh ứng dụng

2.3.1 Tạo một ngữ cảnh ứng dụng:

Khi tạo một ngữ cảnh ứng dụng, ta cần phải cho nó một cái tên và liên kết nó với một Package PL/SQL chứa các hàm định nghĩa giá trị của các thuộc tính

Dưới đây là câu lệnh tạo một ngữ cảnh ctx_KetNoi liên kết với PL/SQL ctx_KetNoi _pkg

CREATE CONTEXT ctx_KetNoi USING ctx_KetNoi _pkg;

2.3.2 Thiết lập các thuộc tính và giá trị cho ngữ cảnh ứng dụng:

Các giá trị trong ngữ cảnh ứng dụng được thiết lập bằng cách gọi thủ tục DBMS_SESION.SET_CONTEXT từ trình quản lý không gian tên Trong ngữ cảnh ứng dụng ta tạo một cặp thuộc tính - giá trị liên quan tới ứng dụng của chúng ta

Trang 9

Để minh họa điều này, chúng ta tạo một bảng chứa các thông tin nhân viên Giả sử muốn hạn chế hồ sơ của một số người dùng trong tổ chức, ta sử dụng ngữ cảnh ứng dụng

để nắm bắt và thiết lập thông tin người dùng

Sau khi tạo bảng thì sẽ thiết lập các giá trị trong ngữ cảnh, bằng cách gọi một

function có tên là ctx_KetNoi _pkg

Ví dụ dưới đây là cách thiết lập một PACKAGE PL/SQL:

CREATE OR REPLACE PACKAGE ctx_KetNoi_pkg AS

PROCEDURE GetInfo_KetNoi; END;

CREATE OR REPLACE PACKAGE BODY ctx_KetNoi _pkg IS

PROCEDURE GetInfo_KetNoi; AS

TenTK varchar(20); TenPhong

varchar(50);

BEGIN

TenTK := SYS_CONTEXT('USERENV','SESSION_USER');

SELECT Phong into TenPhong FROM NhanVien WHERE TenTK = TenTK; DBMS_SESSION.set_context('ctx_KetNoi','tt_TaiKhoan', TenTK);

DBMS_SESSION.set_context('ctx_KetNoi','tt_Phong', TenPhong);

EXCEPTION

WHEN NO_DATA_FOUND THEN NULL;

END GetInfo;

END;

Với ngữ cảnh ứng dụng ctx_KetNoi trên thì ở mỗi phiên kết nối chúng ta có thể lấy

được tên người dùng và tên phòng làm việc của trong 2 thuộc tính tương ứng là

tt_TaiKhoan và tt_TenPhong.

Tuy nhiên muốn thiết lập ngữ cảnh ứng dụng tự động thì phải thêm một TRIGGER ràng buộc sau khi đăng nhập vào CSDL:

CREATE OR REPLACE TRIGGER trg_KetNoi AFTER LOGON ON DATABASE BEGIN QuanTriVPD.ctx_KetNoi_pkg.GetInfo_KetNoi; EXCEPTION

WHEN NO_DATA_FOUND THEN

NULL;

END;

Trang 10

2.3.3 Áp dụng ngữ cảnh ứng dụng và bảo mật:

Chúng ta có thể áp dụng ngữ cảnh ứng dụng vào việc thực thi các chính sách bảo mật

CSDL Đây là một ví dụ về việc giới hạn truy vấn của người dùng:

CREATE OR REPLACE VIEW view_NhanVien AS

SELECT * FROM NhanVien

WHERE Phong = SYS_CONTEXT('ctx_KetNoi','tt_Phong');

Sau câu lệnh trên chúng ta sẽ có được một khung nhìn để mỗi người dùng chỉ có thể xem được dữ liệu các nhân viên thuộc cùng phòng làm việc của mình

2.4 Ngữ cảnh toàn cục (Global Context):

Ngữ cảnh toàn cục được sử dụng khi chúng muốn chia sẻ các giá trị trong các phiên làm việc với nhau, hoặc trong trường hợp muốn kết nối các ứng dụng với nhau Khi ấy các giá trị sẽ không được xác nhận cụ thể là của người nào cũng như việc liệu dữ liệu có tin cậy hay không Tuy nhiên, chúng ta không nên sử dụng ngữ cảnh toàn cục mà nên sử dụng ngữ cảnh cục bộ bởi các thuộc tính thì được thiết lập cho từng phiên và nó là dữ liệu nhạy cảm

CHƯƠNG III: BẢO MẬT MỨC HÀNG VỚI VPD

3.1 Giới thiệu về RLS:

RLS là một chính sách bảo mật mức hàng cho phép giới hạn việc truy xuất các hàng dựa trên một chính sách bảo mật được hiện thực bằng PL/SQL Một chính sách bảo mật

mô tả các quy định quản lý việc truy xuất các dòng dữ liệu

Để thực hiện RLS, đầu tiên ta tạo 1 hàm PL/SQL trả về một chuỗi String String này chứa các điều kiện của chính sách bảo mật mà ta muốn hiện thực Hàm PL/SQL vừa được tạo ở trên sau đó được đăng ký cho các bảng, khung nhìn mà ta muốn bảo vệ bằng cách dùng package PL/SQL DBMS_RLS Khi có một câu truy vấn của bất kỳ user nào trên đối tượng được bảo vệ, Oracle sẽ nối chuỗi được trả về từ hàm nêu trên vào mệnh đề WHERE của câu lệnh SQL ban đầu, nhờ đó sẽ lọc được các hàng dữ liệu theo các điều kiện của chính sách bảo mật Vậy ta có thể tóm lược cơ chế làm việc của LRS gồm 3 bước sau:

 Bước 1: Tạo Function PL/SQL trả về String A

 Bước 2: Tạo chính sách bảo mật áp dụng vào table, view mà muốn bảo vệ

 Bước 3: Khi User thực hiện một câu truy vấn SQL Hệ thống sẽ gán String A vào sau

Ngày đăng: 21/09/2021, 19:16

TỪ KHÓA LIÊN QUAN

w