1. Trang chủ
  2. » Công Nghệ Thông Tin

Tìm hiểu về cơ sở dữ liệu riêng ảo trong Oracle – Oracle VPD

39 66 5

Đ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 39
Dung lượng 604,69 KB

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

Nội dung

Hiện nay vấn đề bảo mật cơ sở dữ liệu của doanh nghiệp, các công ty hay bảo mật thông tin cho khách hàng là nhu cầu tất yếu và rất được quan tâm. Mục đích hướng tới của các cuộc tấn công trên mạng Internet hiện nay chủ yếu là vào hệ thống cơ sở dữ liệu. Vì vậy việc quản trị và bảo đảm an toàn dữ liệu của các phần mềm ứng dụng cũng như các trang web là rất cần thiết. Để hạn chế việc xâm nhập dữ liệu một cách trái phép thì cần có các biện pháp áp dụng cho việc bảo vệ cơ sở dữ liệu. Ý tưởng cơ bản để giải quyết vấn đề cho số lượng người dùng lớn là:“ Người dùng không thể truy cập vào phần dữ liệu mà họ không được phép nhìn thấy”. Điều này sẽ giới hạn lại thông tin được hiển thị với những người dùng khác nhau trong cùng một hệt thống cơ sở dữ liệu. Việc bảo mật sẽ không dừng lại ở mức cho phép truy xuất trên các đối tượng, mà với Oracle’s Virtual Private Database – Oracle VPD dữ liệu sẽ được an toàn trên mức dòng và cột của các đối tượng.

Trang 1

HỌC VIỆN KỸ THUẬT MẬT MÃ

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

ĐỀ TÀI: TÌM HIỂU VỀ CƠ SỞ DỮ LIỆU RIÊNG

ẢO TRONG ORACLE

Trang 2

NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN

···

···

···

···

···

···

···

···

···

···

···

···

···

···

···

···

···

···

···

···

···

···

Trang 3

MỤC LỤC

LỜI MỞ ĐẦU 1

CHƯƠNG 1: TỔNG QUAN VỀ ORACLE’S VIRTUAL PRIVATE DATABASE (ORACLE VPD) 2 1.1 Giới thiệu về Oracle 2

1.2 Giới thiệu về Oracle Virtual Private Database (Oracle VPD) 2

1.3 Lợi ích của việc sử dụng Oracle VPD 3

1.3.1 Bảo mật 3

1.3.2 Đơn giản 4

1.3.3 Linh động 4

1.4 Cơ chế hoạt động của Oracle VPD 4

1.4.1 Oracle VPD sử dụng với ngữ cảnh ứng dụng 4

1.4.2 Phát sinh mệnh để WHERE tự động 5

1.4.3 Chính sách áp dụng phải gắn với một đối tượng bảo mật cụ thể 6

1.5 VPD trên cách phiên bản Oracle 6

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT CHÍNH SÁCH ORACLE VPD 8

2.1 Gắn chính sách Oracle VPD tới một đối tượng 8

2.2 Thực thi chính sách với loại câu lệnh SQL 9

2.3 Điều khiển việc hiển thị dữ liệu dựa vào các chính sách 10

2.3.1.Thiết lập những chính sách Oracle VPD ở mức cột 10

2.3.2.Điều khiển hiển thị dữ liệu trong Oracle VPD 12

2.3.3.Dùng mặt nạ hiển thị đối với những dữ liệu áp dụng chính sách Oracle VPD 12

2.4 Tạo nhóm chính sách 13

2.4.1.Định nghĩa nhóm chính sách 13

2.4.2.Tạo một nhóm chính sách mới 14

2.4.3.Chỉ định nhóm chính sách mặc định sys_default 15

2.4.4.Thiết lập chính sách trên đối tượng 15

2.4.5.Chứng thực chính sách trên đối tượng 16

2.5 Đánh giá việc thực thi chính sách theo từng loại chính sách VPD 16

2.5.1 Sử dụng loại chính sách Dynamic 16

2.5.2 Sử dụng loại chính sách Static 17

2.5.3 Sử dụng loại chính sách Shared_Static 17

Trang 4

2.5.5 Sử dụng loại chính sách Shared_Context_Sensitive 19

2.5.6 Bảng tóm tắt năm loại chính sách Oracle VPD 19

CHƯƠNG 3: THỰC HÀNH 20

3.1 Tạo ngữ cảnh ứng dụng 20

3.1.1 Chuẩn bị bảng và tạo các user 21

3.1.2 Tạo ngữ cảnh ứng dụng 24

3.2 Bảo mật mức hàng 26

3.2.1 RLS với cấu lệnh SELECT 26

3.2.2 RLS với câu lệnh INSERT, UPDATE, DELETE 29

3.3 Bảo mật mức cột 33

3.4 Xóa bỏ chính sách và hàm 34

TÀI LIỆU THAM KHẢO 35

Trang 5

LỜI MỞ ĐẦU

Hiện nay vấn đề bảo mật cơ sở dữ liệu của doanh nghiệp, các công ty haybảo mật thông tin cho khách hàng là nhu cầu tất yếu và rất được quan tâm Mụcđích hướng tới của các cuộc tấn công trên mạng Internet hiện nay chủ yếu là vào

hệ thống cơ sở dữ liệu Vì vậy việc quản trị và bảo đảm an toàn dữ liệu của cácphần mềm ứng dụng cũng như các trang web là rất cần thiết Để hạn chế việc xâmnhập dữ liệu một cách trái phép thì cần có các biện pháp áp dụng cho việc bảo vệ

cơ sở dữ liệu

Có rất nhiều cách để hạn chế việc truy xuất dữ liệu như việc vô hiệu hóa tàikhoản đăng nhập sau vài lần đăng nhập liên tiếp không thành công hoặc có thể sửdụng một số ứng dụng sẽ cảnh báo khi có dịch vụ bên ngoài đang cố gắng xâmphạm vào hệ thống… Ngoài ra các hệ quản trị cơ sở dữ liệu cũng cung cấp nhiềucông cụ hỗ trợ hạn chế quyền, cấp quyền và phân quyền thích hợp cho từng ngườidùng truy xuất dữ liệu Cụ thể trong Oracle người quản trị dễ dàng quản lý mứctruy cập dữ liệu cho từng người dùng thông qua Role Role được tổ chức trong một

hệ thống phân cấp, người sử dụng khác nhau được gán các Role khác nhau tùytheo vai trò và quyền hạn của họ trong hệ thống…Việc quản lý truy xuất dữ liệutheo cách này sẽ trở lên ngày càng phức tạp hơn nếu số người sử dụng lớn và việckiểm soát đồng thời truy cập của người dùng vào hệ thống cũng rất khó khăn

Ý tưởng cơ bản để giải quyết vấn đề cho số lượng người dùng lớn là:“Người dùng không thể truy cập vào phần dữ liệu mà họ không được phép nhìnthấy” Điều này sẽ giới hạn lại thông tin được hiển thị với những người dùng khácnhau trong cùng một hệt thống cơ sở dữ liệu Việc bảo mật sẽ không dừng lại ởmức cho phép truy xuất trên các đối tượng, mà với Oracle’s Virtual PrivateDatabase – Oracle VPD dữ liệu sẽ được an toàn trên mức dòng và cột của các đốitượng

Với những lý do trên, nhóm em đã thực hiện đề tài “Tìm hiểu về cơ sở dữliệu riêng ảo trong Oracle – Oracle VPD”

Trang 6

CHƯƠNG 1: TỔNG QUAN VỀ ORACLE’S VIRTUAL PRIVATE DATABASE (ORACLE VPD)

1.1 Giới thiệu về Oracle

Oracle Database hay còn gọi là OracleRDBMS hoặc đơn giản

là Oracle (do đây có lẽ là sản phẩm nổi tiếng nhất của hãng), 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.

Phần mềm này vẫn đang được phát triển tiếp lên những version cao hơn, vàvẫn đang là 1 trong những phần mềm quản trị database hàng đầu thế giới Theo

thông tin từ Wikipedia thì phần mềm này được viết bằng Assembly, C và C++ Có

lẽ đó là cốt lõi chính của Oracle Database Sau này những công cụ liên quan nhưemctl, dbca, netca… thì được viết bằng Java

Phần mềm này hỗ trợ nhiều ngôn ngữ, được phân phối rộng khắp thế giới.Bản quyền phần mềm này thuộc dạng Proprietary, tức là closed source software.Phần mềm này chỉ mua để sử dụng, không được can thiệp vào mã nguồn như opensource software

1.2 Giới thiệu về Oracle Virtual Private Database (Oracle VPD)

Oracle VPD (Cơ sở dữ liệu riêng ảo trong Oracle) cung cấp các tính năngbảo mật trên cơ sở dữ liệu Oracle VPD rất hữu ích đối với những cơ sở dữ liệu vàứng dụng bảo mật phân quyền trên từng đối tượng Có thể thiết lập Oracle VPDvới các chính sách đơn giản hay phức tạp phụ thuộc vào từng nhu cầu cụ thể củacác ứng dụng

Oracle VPD được sử dụng trong môi trường nhiều người dùng truy cập vàocùng một cơ sở dữ liệu mà phạm vi cho phép truy cập của mỗi nhóm người là khácnhau

Oracle VPD còn được biết là chính sách bảo mật để kiểm soát truy xuất dữliệu tại mức dòng và cột Thức chất Oracle VPD có thể thêm tự động một mệnh đề

Trang 7

WHERE thích hợp vào câu lệnh SQL dùng cho table, view, synonym khi ngườidùng muốn truy cập dữ liệu Chính sách bảo mật của Oracle VPD được tự độngthực thi khi một người dùng truy xuất dữ liệu.

Khi một người dùng trực tiếp hay gián tiếp truy xuất dữ liệu trên các table,view, synonym được bảo mật bới chính sách VPD sẽ tự điều chỉnh câu lệnh SQLcủa người dùng Việc điều chỉnh câu lệnh SQL dựa trên mệnh đề WHERE để trảlại một hàm thực thi chính sách bảo mật Chính sách Oracle VPD có thể áp dụngcho các câu lệnh SELECT, INSERT, UPDATE, INDEX, DELETE

Giả sử rằng trong bảng Orders chỉ có những hóa đơn do nhân viên có địnhdanh là 159 bán được phép truy cập, còn những hóa đơn do nhân viên khác bán thìkhông được phép truy cập Để thực hiện được điều này ta thiết lập một chính sáchOracle VPD Khi đó một người dùng thực hiện dòng lệnh truy vấn sau:

SELECT * FROM OE.Orders

Chính sách Oracle VPD tự động gắn thêm câu lệnh với mệnh đề WHEREnhư sau:

SELECT * FROM OE.Orders WHERE SALES_REP_ID = 159;

Như vậy khi người dùng muốn thực hiện câu truy vấn xem toàn bộ hóa đơntrong bảng Orders nhưng kết quả truy xuất trả về chỉ có những dữ liệu được phéphiển thị, phần dữ liệu không được phép hiển thị sẽ không thể truy xuất Đây chính

là chính sách bảo mật trên dữ liệu mà thực tế khi người dùng truy xuất hoàn toànkhông biết

Chính sách Oracle VPD có thể được thực hiện với nhóm người dùng khácnhau bằng cách tạo ra ngữ cảnh ứng dụng tương ứng với từng nhóm

1.3 Lợi ích của việc sử dụng Oracle VPD

1.3.1 Bảo mật

Thêm một chính sách bảo mật VPD vào một table, view, sysnonym có thểgiải quyết các vấn đề nghiêm trọng về bảo mật ứng dụng Giả sử một người dùngđược phép sử dụng một ứng dụng và có quyền chỉnh sửa CSDL bằng cách sử dụngcông cụ truy vấn như SQL plus Bằng cách thêm các chính sách bảo mật trực tiếpđến các table, view, synonym có thể kiểm soát được việc truy xuất dữ liệu của bất

cứ người dùng nào

Ví dụ: Một người dùng trực tiếp dùng SQL Plus hoặc thông qua một ứng

Trang 8

thuộc vào cách người đó truy cập Việc thực thi cập nhập dữ liệu của ngườidùng có thành công hay không phụ thuộc vào chính sách bảo mật được thiếtlập trên cơ sở dữ liệu và trên từng đối tượng người dùng.

Ví dụ: Thiết lập một chính sách để quản lý việc truy cập dữ liệu trên nhóm

người dùng khi muốn thực hiện xem tiền lương của các nhân viên khác trongcông ty Với điều này đơn giản chỉ cần thiết lập chính sách bảo mật trên cộtlương nhân viên thì bất kể nhân viên nào xem lương của các nhân viên khácđều trả về kết quả NULL ở cột tiền lương và chính sách này chỉ cần áp dụngmột lần duy nhất trên các đối tượng bảo mật

1.3.3 Linh động

Có thể tạo các chính sách bảo mật khác nhau với từng câu lệnh SELECT, INSERT,UPDATE, DELETE hoặc có thể tạo nhóm chính sách trên từng đối tượng hoặcnhóm đối tượng khác nhau mà không ảnh hưởng đến cấu trúc của đối tượng được

áp dụng chính sách

Ví dụ: Có thể thiết lập chính sách bảo mật để nhân viên phòng nhân sự có

thể SELECT toàn bộ thông tin nhân viên nhưng chỉ có thể UPDATE tiềnlương của nhân viên thuộc phòng nhân sự Hoặc cũng có thể áp dụng chínhsách đó cho một nhóm nhân viên thuộc các phòng ban khác nhau trong côngty

1.4 Cơ chế hoạt động của Oracle VPD

1.4.1 Oracle VPD sử dụng với ngữ cảnh ứng dụng

Ngữ cảnh ứng dụng được sử dụng với chính sách Oracle VPD Khi tạo mộtngữ cảnh của ứng dụng thông tin ứng dụng được bảo mật với từng người dùng

Ví dụ: Người dùng muốn truy xuất tới bảng ORDERS_TAB dựa vào định

danh của khách hàng Thay vì dùng định danh của khách hàng này để đăngnhập vào hệ thống, có thể tạo ngữ cảnh ứng dụng để lưu lại định danh nàycho các phiên làm việc khác khi cần

Ngữ cảnh ứng dụng thì đặc biệt hữu dụng nếu chính sách bảo mật dựa trên nhiềuthuộc tính bảo mật

Trang 9

Ví dụ: Nếu hàm chính sách dựa trên mệnh đề WHERE với 4 thuộc tính ID,

cost, enter, position, spending limit Như vậy nhiều truy vấn phait thực thi đểlấy thông tin Để tiết kiệm thời gian và chi phí cho các truy vấn như trên tatạo ra một ngữ cảnh để tăng khả năng thực thi khi truy xuất dữ liệu

Có thể dùng một ngữ cảnh ứng dụng để trả lại đúng chính sách bảo mật thông quamột chuỗi ngữ (predicate)

Ví dụ: Trong bảng ORDERS chỉ cho phép khách hàng nhìn thấy Order của

họ, những nhân viên có thể nhìn thấy tất cả các Order của khách hàng Haichính sách này được sử dụng là khác nhau, có thể định nghĩa một ngữ cảnhứng dụng với thuộc tính position, thuộc tính này có thể được truy xuất bêntrong hàm chính sách để trả lại chuỗi ngữ đúng Điều này còn phụ thuộc vàogiá trị của thuộc tính Như vậy một người dùng có thuộc tính position làClerk thì có thể thấy tất cả các thông tin của tất cả các Order nhưng mộtngười dùng khác có thuộc tính positon là Customer thì chỉ nhìn thấy các mẩutin thuộc người dùng đó

Để thiết kế một chính sách điều khiển truy xuất hạt mịn (fine-grained) trả lại mộtchuỗi ngữ chỉ định cho một thuộc tính, thì cần phải truy xuất tới một ngữ cảnh ứngdụng bên trong có chức năng thực hiện chính sách

Ví dụ: Giả sử muốn khách hàng chỉ thấy những mẩu tin riêng của họ thì

người dùng cần thực thi query sau:

SELECT * FROM ORDERS_TABNhưng điều khiển truy xuất hạt mịn tự động chỉnh sửa câu truy vấn nàythành

SELECT * FROM ORDERS_TAB WHEREcustID=SYS_CONTEXT(‘order_entry’,’cust_num’)

Giả sử có 50000 khách hàng cùng được áp dụng một chính sách bảo mật.Như vậy tất cả các khách hàng có cùng mệnh đề WHERE khi thực hiện truyvấn nhưng với quy định là khác hàng chỉ được thấy những hóa đơn của họ.Dùng ngữ cảnh ứng dụng có thể trả lại một mệnh đề WHERE bên trong mộtchính sách được áp dụng cho 50000 khách hàng Với kết quả này, có mộtCursor thực thi các cách khác nhau với mỗi khách hàng vì khách hàng đượcđánh giá tại thời điểm thực thi Giá trị này thì khác nhau ứng với mỗi kháchhàng Việc dùng ngữ cảnh ứng dụng trong trường hợp này cung cấp điềukiện thực thi tốt nhất cho yêu cầu bảo mật mức dòng

1.4.2 Phát sinh mệnh để WHERE tự động

Trang 10

Để phát sinh mệnh đề WHERE một cách tự động cần phải tạo một function

để định nghĩa sự hạn chế dữ liệu mà ta muốn thực hiện Thường thường, ngườiquản trị hệ thống tạo hàm này trong schema của họ Với những hành động phức tạphơn như là gọi tới một hàm khác thì những hàm nàu cần được tạo bên trong mộtgói

Hàm phải có thành phần sau:

(table, view, synonym)

tượng

sinh ra

Hàm phát sinh mệnh đề WHERE phải hợp lý

nhiều trường hợp muốn thiết kế mệnh đề WHERE khác nhau cho mỗingười dùng, mỗi nhóm người dùng hoặc mỗi ứng dụng truy xuất đếnứng dụng muốn bảo mật

Ví dụ: Khi người quản lý đăng nhập vào hệ thống, mệnh đề WHERE có thể

xác định đúng thông tin cho người quản lý Ta có thể làm điều này bằngcách xây dựng môt ngữ cảnh ứng dụng với mệnh đề WHERE tự phát sinhmã

Những chức năng Oracle VPD tạo ra có thể không dùng một ngữ cảnh ứngdụng Nhưng một ngữ cảnh ứng dụng tọa ra một chính sách Oracle VPD tốt hơn,bằng cách tạo bảo mật cho từng người dùng truy xuất tới từng thuộc tính trongphiên làm việc của người dùng đó như là định danh của họ

1.4.3 Chính sách áp dụng phải gắn với một đối tượng bảo mật cụ thể

Sau khi tạo hàm, cần tạo một chính sách Oracle VPD kết hợp hàm với mộttable, view, synonym Chính sách này được tạo bằng cách sử dụng gói dbms_rls.Đối với những user không là sys thì phải gán quyền execute tới người dùng trêngói dbms_rls Gói này chứa thủ tục quản lý chính sách và thiết lập điều khiển truyxuất hạt mịn

Ví dụ: Để thêm chính sách tới một bảng, dùng thủ tục dbms_rls.add_policy.

Bên trong thiết lập fine-grained access control như là chính sách hiệu quả

Trang 11

khi một người dùng đưa ra câu lệnh SELECT hay UPDATE trên table hayview.

1.5 VPD trên cách phiên bản Oracle

sách được áp dụng cho nhiều nhóm

trợ colum_masking, hỗ trợ loại chính sách thực thi chính sách bảo mật

cho chính sách bảo mật trên dòng

Trang 12

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT CHÍNH SÁCH ORACLE VPD

2.1 Gắn chính sách Oracle VPD tới một đối tượng

Sau khi tạo một hàm định nghĩa hành động trong mệnh đề WHERE củachính sách Oracle VPD, cần phải gắn hàm này tới đối tượng (table, view,synonym) cần thiết lập một chính sách Oracle VPD đó Để thực hiện điều này tacần thiết lập một chính sách Oracle VPD Chính sách này là công cụ quản lý cáchàm trong VPD Chính sách Oracle VPD được quản lý bới gói DBMS_RLS Khingười dùng thực hiện truy xuất dữ liệu trong cơ sở dữ liệu thì chính sách tự độngthực thi

Danh sách các thủ tục trong gói DBMS_RLS:

For Handling Individual Policies

DBMS_RLS.ENABLE_POLICY

Thêm một chính sách ưu tiên tới table, view, synonym

For Handling Grouped Policies

Trang 13

DBMS_RLS.REFRESH_GROUPED _POLICY

Phân tích lại câu lệnh SQL kết hợp với một chính sach refresh

For Handling Application Context

Bảng 2.1: Danh sách các thủ tục trong DBMS_RLS

2.2 Thực thi chính sách với loại câu lệnh SQL

Để thêm một chính sách vào một table, view, synonym có thể dùng thủ tục

dbms_rls.add_policy Sau đó thiết lập thủ tục này tới đối tượng cần áp dụng chính

sách bảo mật Trong thủ tục này có thể chỉ định thông tin khác như loại câu lệnh đểđiều khiển chính sách (SELECT, INSERT, UPDATE, DELETE,…)

Ví dụ: Sử dụng dbms_rls.add_policy để thêm chính sách Oracle VPD gọi là secure_update tới bảng hr.employees Hàm thực hiện chính sách là

check_updates

BEGIN

DBMS_RLS.ADD_POLICY(

object_schema => ‘hr’,object_name => ‘employess’,policy_name => ‘secure_update’

Nếu hàm được tạo trong gói phải bao gồm tên gói

Ví dụ:

policy_function => ‘pkg.check_updates’

Trang 14

Các tham số trong thủ tục add_policy

OBJECT_SCHEMA

Chủ sở hữu đối tượng thiết lập chính sách bảo mật Nếu Object_schema là NULL mặc định là người dùng hay shema đang dùng

OBJECT_NAME

Tên của đối tượng thiết lập chính sách bảo mật Có thể là table, view,

synonym

thiết lập trong chính sách

UPDATE_CHECK

Câu lệnh chỉ dùng cho insert và update.Thiết lập Update_check = TRUE để Server kiểm tra các chính sách áp dụngsau khi insert hoặc update

ENABLE

Mặc định là TRUE khi thêm một chínhsách Enable để chỉ định thiết lập chínhsách trên đối tượng

STATIC_POLICY

Mặc định là False Nếu thiết lập TRUEthì predicate trong chính sách là giống nhau cho mọi người dùng truy xuất dữ liệu

LONG_PREDICATE

Mặc định là FALSE nghĩa là hàm chính sách có thể trả về lại một predicate với chiều dài >4000 byte TRUE nghĩa là predicate có thể > 32k byte

cột Chỉ dùng với table, view không dùng với synonym Mặc định là tất cả các cột người dùng định nghĩa trong

Trang 15

đối tượngSEC_RELEVANT_COLS_OPTS

Dùng để hiển thị tất cả các dòng trong chinh sách bảo mật ở mức cột Nhưng những cột không được phép hiển thị sẽ mang giá trị NULL khi hiển thị

Bảng 2.2: Danh sách các tham số ADD_POLICY

2.3 Điều khiển việc hiển thị dữ liệu dựa vào các chính sách

2.3.1.Thiết lập những chính sách Oracle VPD ở mức cột

Có thể áp dụng một chính sách Oracle VPD ở mức cột tới các Table, Viewnhưng không thể dùng cho các Synonym

Để áp dụng chính sách tới mọt cột phải chỉ định các cột bảo mật liên quan

bằng các tham số Sec_Relavant_Cols của thủ tục dbms_rls.add_policy Tham số

này thực thi chính sách bảo mật bất cứ khi nào các cột được tham chiếu được gọitường minh trong một câu truy vấn hay không

Ví dụ: Những người dùng không thuộc phòng nhân sự chỉ được phép thấy

những thông tin cá nhân của họ Khi nhân viên bán hàng thực hiện yêu cầutruy vấn sau:

SELECT fname,lname,ssn FROM emp;

Thiết lập mọt hàm thực thi chính sách bảo mật trả lại điều kiện trong mệnh

đề WHERE là ssn=“my_ssn” Khi thực thi câu truy vấn sẽ được tự động viếtlại như sau:

SELECT fname,lname,ssn FROM emp

WHERE ssn=’my_ssn’;

Ví dụ: Thiết lập một chính sách Oracle VPD cho phép nhân viên phòng bán

hàng không thể nhìn thấy lương của nhân viên không thuộc phòng này (cóđịnh danh phòng là 30) Những cột liên quan trong chính sách này gồm sal,comm

Đầu tiên, tạo hàm chính sách Oracle VPD và thực hiện gói dbms_rlsPL/SQL

CREATE OR REPLACE FUNCTION hide_sal_comm(

v_schema IN VARCHAR2,v_objname IN VARCHAR2,)RETURN VARCHAR2 AS con VARCHAR2(200);

Trang 16

object_schema => ‘scott’,object_name => ‘emp’,policy_name => ‘hide_sal_policy’,policy_function => ‘hide_sal_comm’,

sec_relevant_cols trong thủ tục dbms_rls.add_policy như ví dụ trên.

Khi người dùng (SCOTT) thực thi truy vấn:

SELECT ENAME, D.NAME, JOB, SAL, COMMFROM emp e, dept d

WHERE d.deptno=e.deptno;

Kết quả câu truy vấn trên chỉ trả về thông tin ENAME, DNAME, JOB, SAL,COMM của những nhân viên thuộc phòng bán hàng, những thông tin thuộc cácphòng khác sẽ không được hiển thị do chính sách VPD đã cài đặt ở trên được ápdụng

2.3.3.Dùng mặt nạ hiển thị đối với những dữ liệu áp dụng chính sách Oracle VPD

Nếu một truy vấn tham chiếu đến một cột nhạy cảm thì hành động mặc địnhtrong chính sách Oracle VPD ở mức cột sẽ làm giảm số thông tin truy vấn trả về.Tác dụng của mặt nạ hiển thị cột (column – masking) làm cho tất cả những dòngđều được hiển thị kể cả những dòng có cột nhạy cảm Tuy nhiên những cột nhạy

Trang 17

cảm này hiển thị với giá trị NULL Để enable mặt nạ cột ta thiết lập tham sốsec_relevant_cols_opt của thủ tục dbms_rls.add_policy.

Ví dụ: Trong kết quả truy vấn của nhân viên bán hàng mô tả ở ví dụ trước.

Nếu mặt nạ cột được áp dụng thay vì chỉ thấy những dòng chứa thông tin cánhân của những nhân viên bán hàng thì có thể nhìn thấy toàn bộ thông tinbảng emp

Để mặc định hành động ở mức cột trong chính sách Oracle VPD, có thể sửdụng mặt nạ mạng để hiển thị tất cả các dòng nhưng những cột nhạy cảm trả

lại giá trị NULL Cần thiết lập tham số sec_relevant_opt của thủ tục

dbms_rls.add_policy tới dbms_rls.all_rows.

Ví dụ: Chỉ ra chính sách Oracle VPD ở mức cột sử dụng colums-masking

làm mặt nạ hiển thị Chính sách sử dụng giống như chính sách VPD ở trênnhững tham số sec_relevant_cols_opt chỉ định là dbms_rls.add_rows thaychi tên các cột

BEGIN

DBMS_RLS.ADD_POLICY(

object_schema => ‘scott’,object_name => ‘emp’,policy_name => ‘hide_sal_policy’,policy_function => ‘hide_sal_comm’,

Trang 18

Column-Masking trả lại toàn bộ thông tin của nhân viên bán hàng những đãlàm cho cột sal và comm có giá trị NULL cho nhân viên không thuộc phòngbán hàng.

2.4 Tạo nhóm chính sách

2.4.1.Định nghĩa nhóm chính sách

Một nhóm chính sách là tập hợp nhiều chính sách bảo mật thuộc một ứngdụng Có thể tạo một ngữ cảnh ứng dụng (gọi là driving context hoặc policycontext) để quản lý nhóm chính sách ảnh hưởng Khi một người dùng truy xuất tớicác cột trong table, view hoặc synonym, CSDL Oracle tìm kiếm ngữ cảnh thíchhợp để xác định chính sách phù hợp cho nhóm và thực thi toàn bộ chính sách trongnhóm đó

Với nhóm chính sách được sử dụng cho các ứng dụng gồm nhiều chính sáchbảo mật giống nhau trên các table, view, synonym Trường hợp này chúng ta chỉenable những chính sách khi các table, view hay synonym được truy xuất

Ví dụ: Công ty A giữ bảng BENEFIT cho hai công ty B và C Bảng này

được truy xuất bằng 2 ứng dụng khác nhau Những người dùng thuộc phòngban HR và FI với hai chính sách bảo mật khác nhau Ứng dụng HR ưu tiênngười dùng dựa trên cấp bậc trong công ty còn ứng dụng FI ưu tiên ngườidùng theo phòng ban Việc tích hợp chính sách riêng cho 2 công ty vào bảngBENEFIT theo yêu cầu phát triển của hai công ty là một lựa chọn không khảthi Bằng cách định nghĩa một ngữ cảnh ứng dụng để kiểm soát việc thực thichính sách cho mỗi đối tượng, mỗi ngữ cảnh ứng dụng điều khiển một chínhsách bảo mật riêng trên từng đối tượng Để làm được điều này cần tổ chứcchính sách bảo mật thành nhiều nhóm và tạo ngữ cảnh ứng dụng để thiết lậpchính sách trên các nhóm Những chính sách này chỉ bị ảnh hưởng trong thờigian thực thi Điều này bắt buộc tất cả các chính sách phải thuộc nhóm mộtchính sách

2.4.2.Tạo một nhóm chính sách mới

Để thêm một chính sách tới đối tượng vào nhóm chính sách dùng thủ tụcdbms_rls.add_group_policy Để xác định những chính sách thích hợp cho nhómcần thêm ngữ cảnh điều khiển bằng thủ tục dbms_rls.add_policy_context Lỗi phátsinh khi ngữ cảnh điều khiển trả về kết quả không tìm thấy nhóm chính sách nào.Nếu điều khiển ngữ cảnh không được định (nó sẽ NULL) thì Oracle sẽ thực thitất cả các chính sách từ trong nhóm chính sách đã được thiết lập từ trước Một ứngdụng truy xuất dữ liệu không thể tránh bất cứ phạm vi nào được thiết lập bảo mật

Trang 19

Việc áp dụng đa điều khiển ngữ cảnh tới những table, view, synonym là giốngnhau nhưng mỗi đối tượng có một cách xử lý riêng Điều này thực hiện bằng cáchcấu hình nhiều hành động được thiết lập cho chính sách.

Ví dụ: Một công ty cung cấp dịch vụ máy chủ cho hai ứng dụng BE và FI.

Hai ứng dụng này chia sẻ chung một số đối tường trong CSDL Cả hai ứngdụng dùng một chính sách Subcriber trong chính sách nhóm sys_default Dữliệu truy xuất được phân chia đầu tiên bởi định danh subcriber tiếp theo làbằng điều khiển ngữ cảnh để xác định người dùng truy xuất tới ứng dung BEhay FI Giả sử công ty A muốn áp dụng một chính sách trên dữ liệu riêngcho công ty A thì cần phải thêm vào một điều khiển ngữ cảnh tạo một chínhsách đặc biệt chỉ áp dụng cho công ty A Chính sách này chỉ liên quan đếncông ty A và nó có hiệu quả hơn các chính sách khác trong nhóm, các chínhsách dùng chung

2.4.3.Chỉ định nhóm chính sách mặc định sys_default

Trong một nhóm nhiều chính sách bảo mật có thể thiết kế một chính sáchbảo mật mặc định Chính sách này rất hữu dụng khi phân vùng bảo mật trên ứngdụng Chính sách mặc định cho phép hình thành để thực thi những bảo mật cơ bảntrong mọi điều kiện Để thực thi chính sách bảo mật mặc định cần thêm chính sáchnày tới nhóm sys_default

Những chính sách định nghĩa riêng cho từng table, view, synonym trong nhómnày được thực thi nhờ vào điều khiển ngữ cảnh Nhóm chính sách sys_default cóthể chứa hoặc không chứa những chính sách khác bên trong Ta không thể xóanhững chính sách sys_default, nếu xóa nó sẽ phát sinh lỗi

Với nhóm chính sách sys_default, có thể được gắn từ những chính sách nàyvào hai hay nhiều đối tượng Mỗi đối tượng sẽ có một nhóm chính sách riêng trongnhóm sys_default được gắn vào nó

Ví dụ: Trong bảng emp và dept thuộc nhóm schema scott cũng có chính

sách trong sys_default sử dụng cho 2 bảng trên là hoàn toàn khác nhau

Có thể tạo những nhóm chính sách với tên giống nhau trên nhiều đối tượng Đểlựa chọn đúng chính sách muốn thực hiện phải kết hợp với schema và tên đốitượng dùng chính sách

2.4.4.Thiết lập chính sách trên đối tượng

Có thể thiết lập một số chính sách cho cùng table, view, synonym nhằm mục

Ngày đăng: 02/10/2021, 17:32

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w