MỤC LỤC DANH MỤC KÝ HIỆU VÀ TỪ VIẾT TẮT III DANH MỤC CÁC BẢNG IV LỜI MỞ ĐẦU V CHƯƠNG 1. GIỚI THIỆU VỀ CƠ SỞ DỮ LIỆU RIÊNG ẢO 1 1.1. Giới thiệu về hệ quản trị CSDL Oracle 1 1.2. Giới thiệu chung về VPD 1 a. Các phiên bản VPD 2 b. Lợi ích của VPD 3 CHƯƠNG 2. NGỮ CẢNH ỨNG DỤNG 4 2.1. Giới thiệu về ngữ cảnh ứng dụng 4 2.2. Ngữ cảnh mặc định USERENV 4 2.3. Ngữ cảnh cục bộ (Local Context) 6 a. Tạo một ngữ cảnh ứng dụng 6 b. Thiết lập các thuộc tính và giá trị cho ngữ cảnh ứng dụng 6 c. Áp dụng ngữ cảnh ứng dụng vào bảo mật 7 2.4. Ngữ cảnh toàn cục (Global Context) 7 CHƯƠNG 3. BẢO MẬT MỨC HÀNG VỚI VPD 8 3.1. Giới thiệu về RLS (RowLevel Security) 8 3.2. Tạo Function PLSQL trả về chuỗi String 9 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 CHƯƠNG 4. ÁP DỤNG VPD VÀO MỘT CSDL CỤ THỂ 13 4.1. Đặt vấn đề 13 4.2. Giải quyết bài toán 13 a. Tạo schema quản trị VPD 13 b. Tạo ngữ cảnh ứng dụng 14 c. Tạo các chính sách VPD 15 KẾT LUẬN 17 TÀI LIỆU THAM KHẢO 18 DANH MỤC KÝ HIỆU VÀ TỪ VIẾT TẮT Viết tắt Giải thích CNTT Công nghệ thông tin CSDL Cơ sở dữ liệu DML Data Manipulation Language PLSQL Procedural LanguageStructured Query Language RDBMS Relational Database Management System RLS RowLevel Security VPD Virtual Private Database DANH MỤC CÁC BẢNG Bảng 1. Những thuộc tính xác định của USERENV 6 Bảng 2. Bảng nhân viên 13 Bảng 3. Bảng tài khoản 13 Bảng 4. Kiểm tra ngữ cảnh ứng dụng 15 Bảng 5. Các bản ghi xem được với tài khoản nhân viên. 15 Bảng 6. Các bản ghi xem được với tài khoản trưởng phòng lập trình. 16 Bảng 7. Các bản ghi xem được với tài khoản trưởng phòng kế hoạch. 16 Bảng 8. Các bản ghi xem được với tài khoản giám đốc. 16 Bảng 9. Các bản ghi sau khi thực hiện chính sách bảo mật mức cột 16 LỜI MỞ ĐẦU Ngày nay chúng ta đã biết được tầm quan trọng của công nghệ thông tin (CNTT) trong đời sống. Và riêng đối với các công ty, tổ chức thì CSDL là trái tim, là nguồn sống của họ. Sự bùng nổ của Internet đã đánh thức nhu cầu trao đổi và tìm kiếm thông tin trên mạng. Nhu cầu càng cao, sự tìm kiếm thông tin càng mạnh đã khiến cho các công ty, tổ chức lao đao trước bài toán bảo vệ và quản lý dữ liệu. Trước nhu cầu thực tế đó, việc bắt buộc tìm kiếm một giải pháp tối ưu thật là khó đối với các nhà quản lý thông tin nhưng không phải là không có hướng giải quyết. Oracle là một trong những giải pháp mà hầu hết các công ty đã lựa chọn. Dưới sự lựa chọn và tin tưởng của các công ty, tổ chức, Oracle không thể không ngừng nỗ lực phát triển để đáp ứng các nhu cầu của họ. Nhiều giải pháp tiếp tục được đưa ra và VPD là một giải pháp mới dùng để thực thi kiểm soát truy cập dữ liệu tại máy chủ. Dưới sự cần thiết và những tính mới của nó nên nhóm em đã lựa chọn đề tài “Tìm hiểu về cơ sở dữ liệu riêng ảo trong Oracle” cho bài tập lớn môn An toàn cơ sở dữ liệu. Dù cả nhóm đã nỗ lực cố gắng nhưng do thời gian có hạn nên đề tài vẫn còn nhiều thiếu sót. Chúng em mong nhận được sự chỉ bảo cuả thầy cô và các bạn. CHƯƠNG 1. 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à 1 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 12. 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). Version 10 và 11 là g (grid). Version 12 mới nhất là c (cloud). Các ký tự thể hiện đặc tính nền tảngkiế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 PLSQL 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’; a. 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 (Finegrained 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 finegrained 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. b. 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.
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO BÀI TẬP LỚN MÔN HỌC
AN TOÀN CƠ SỞ DỮ LIỆU
Trang 2TÌM HIỂU VỀ CƠ SỞ DỮ LIỆU RIÊNG ẢO TRONG ORACLE
Trang 3MỤC LỤC
DANH MỤC KÝ HIỆU VÀ TỪ VIẾT TẮT III DANH MỤC CÁC BẢNG IV LỜI MỞ ĐẦU V
CHƯƠNG 1 GIỚI THIỆU VỀ CƠ SỞ DỮ LIỆU RIÊNG ẢO 1
1.1 Giới thiệu về hệ quản trị CSDL Oracle 1
1.2 Giới thiệu chung về VPD 1
a Các phiên bản VPD 2
b Lợi ích của VPD 3
CHƯƠNG 2 NGỮ CẢNH ỨNG DỤNG 4
2.1 Giới thiệu về ngữ cảnh ứng dụng 4
2.2 Ngữ cảnh mặc định USERENV 4
2.3 Ngữ cảnh cục bộ (Local Context) 6
a Tạo một ngữ cảnh ứng dụng 6
b Thiết lập các thuộc tính và giá trị cho ngữ cảnh ứng dụng 6
c Áp dụng ngữ cảnh ứng dụng vào bảo mật 7
2.4 Ngữ cảnh toàn cục (Global Context) 7
CHƯƠNG 3 BẢO MẬT MỨC HÀNG VỚI VPD 8
3.1 Giới thiệu về RLS (Row-Level Security) 8
3.2 Tạo Function PL/SQL trả về chuỗi String 9
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
CHƯƠNG 4 ÁP DỤNG VPD VÀO MỘT CSDL CỤ THỂ 13
4.1 Đặt vấn đề 13
4.2 Giải quyết bài toán 13
a Tạo schema quản trị VPD 13
b Tạo ngữ cảnh ứng dụng 14
AN TOÀN CƠ SỞ DỮ LIỆU
Trang 4TÌM HIỂU VỀ CƠ SỞ DỮ LIỆU RIÊNG ẢO TRONG ORACLE
c Tạo các chính sách VPD 15KẾT LUẬN 17TÀI LIỆU THAM KHẢO 18
Trang 5DANH MỤC KÝ HIỆU VÀ TỪ VIẾT TẮT
Viết tắt Giải thích
CNTT Công nghệ thông tin
CSDL Cơ sở dữ liệu
DML Data Manipulation Language
PL/SQL Procedural Language/Structured Query Language
RDBMS Relational Database Management System
RLS Row-Level Security
VPD Virtual Private Database
Trang 6TÌM HIỂU VỀ CƠ SỞ DỮ LIỆU RIÊNG ẢO TRONG ORACLE
DANH MỤC CÁC BẢNG
Bảng 1 Những thuộc tính xác định của USERENV 6
Bảng 2 Bảng nhân viên 13
Bảng 3 Bảng tài khoản 13
Bảng 4 Kiểm tra ngữ cảnh ứng dụng 15
Bảng 5 Các bản ghi xem được với tài khoản nhân viên 15
Bảng 6 Các bản ghi xem được với tài khoản trưởng phòng lập trình 16
Bảng 7 Các bản ghi xem được với tài khoản trưởng phòng kế hoạch 16
Bảng 8 Các bản ghi xem được với tài khoản giám đốc 16
Bảng 9 Các bản ghi sau khi thực hiện chính sách bảo mật mức cột 16
Trang 7LỜI MỞ ĐẦU
Ngày nay chúng ta đã biết được tầm quan trọng của công nghệ thông tin(CNTT) trong đời sống Và riêng đối với các công ty, tổ chức thì CSDL là tráitim, là nguồn sống của họ Sự bùng nổ của Internet đã đánh thức nhu cầu traođổi và tìm kiếm thông tin trên mạng Nhu cầu càng cao, sự tìm kiếm thông tincàng mạnh đã khiến cho các công ty, tổ chức lao đao trước bài toán bảo vệ vàquản lý dữ liệu
Trước nhu cầu thực tế đó, việc bắt buộc tìm kiếm một giải pháp tối ưu thật
là khó đối với các nhà quản lý thông tin nhưng không phải là không có hướnggiải quyết Oracle là một trong những giải pháp mà hầu hết các công ty đã lựachọn
Dưới sự lựa chọn và tin tưởng của các công ty, tổ chức, Oracle không thểkhông ngừng nỗ lực phát triển để đáp ứng các nhu cầu của họ Nhiều giải pháptiếp tục được đưa ra và VPD là một giải pháp mới dùng để thực thi kiểm soáttruy cập dữ liệu tại máy chủ Dưới sự cần thiết và những tính mới của nó nên
nhóm em đã lựa chọn đề tài “Tìm hiểu về cơ sở dữ liệu riêng ảo trong Oracle” cho bài tập lớn môn An toàn cơ sở dữ liệu.
Dù cả nhóm đã nỗ lực cố gắng nhưng do thời gian có hạn nên đề tài vẫn cònnhiều thiếu sót Chúng em mong nhận được sự chỉ bảo cuả thầy cô và các bạn
Trang 8CẤU TRÚC ĐỊNH DẠNG PHÂN VÙNG Ổ ĐĨA CỨNG NTFS
CHƯƠNG 1 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à
1 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ànOracle
Oracle version 1 ra đời từ năm 1978 Sau vài chục năm, hiện tại OracleDatabase đã lên đến version 12 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) Version 10 và 11 là g (grid) Version 12 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ảomậ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à CSDLriê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ếptrê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àocác bảng, khung nhìn và được tự động áp dụng bất cứ khi nào người dùng truyxuấ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ệnWHERE (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ụngbấ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ộtchức năng Những chính sách VPD có thể được áp dụng cho những câu lệnhSELECT, 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ácchứ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ặcJava 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
Trang 9nhau cho từng người dùng, từng nhóm hoặc cho từng ứng dụng Sử dụng nhữngchức năng chính sách trên từ đồng nghĩa có thể thay thế cho việc duy trì mộtkhung 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ênkhô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 ghiNhanVien 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ựchiện trở thành:
SELECT * FROM NhanVien WHERE Phong = ‘Lập trình’;
- 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-grainedaccess 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ùngvới một chính sách tĩnh hoặc ta có thể có các predicate VPD thay đổi với cácchính sách không tĩnh
- Tính riêng tư mức cột
Trang 10TÌM HIỂU VỀ CƠ SỞ DỮ LIỆU RIÊNG ẢO TRONG ORACLE
- 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ínhsách bảo mật mức hàng
b 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ấtcác bản ghi khác nhau trong bảng, khung nhìn đó Việc giới hạn này sẽ trongsuố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ụngcho bất kỳ user nào truy xuất đến bảng, khung nhìn đó mà không cần ngườiquả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 trongviệ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âydự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ínhbả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 antoà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
Trang 11Thông thường các ngữ cảnh ứng dụng chứa một số thuộc tính chẳng hạnnhư 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ínhsá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 đangkiểm soát truy nhập Việc lưu trữ các giá trị trong bộ nhớ, với các câu truy vấngiố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ácngữ 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 USERENV
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ườidù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 quafunction SYS_CONTEXT Function SYS_CONTEXT có không gian tên giốngnhư tham số đầu và tên thuộc tính giống như tham số thứ hai và trả về giá trị củamộ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')
Trang 12TÌM HIỂU VỀ CƠ SỞ DỮ LIỆU RIÊNG ẢO TRONG ORACLE
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_CURSORID 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_IDENTITY 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.
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.
CURRENT_SCHEMA Tên của schema hiện tại.
CURRENT_SCHEMAID 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_LENGTH Độ 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_IDENTITY 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_TYPE 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_PROTOCOL 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_FORMAT Định dạng ngày của phiên.
NLS_DATE_LANGUAGE 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_ENTERPRISE_IDENT
ITY Trả về Oracle Internet Directory DN khi tài khoản proxy là tài khoảndoanh nghiệp.PROXY_GLOBAL_UID 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
Trang 13PROXY_USERID ID của người dùng đã mở phiên hiện tại trên danh nghĩa của
SESSION_USER.
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.
Bảng 1 Những thuộc tính xác định của USERENV
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ừngphiê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êngdự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
a 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;
b 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ụcDBMS_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ủachúng ta
Để 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ọimột function có tên là ctx_KetNoi _pkg
Trang 14TÌM HIỂU VỀ CƠ SỞ DỮ LIỆU RIÊNG ẢO TRONG ORACLE
Ví dụ dưới đây là cách thiết lập một PACKAGE PL/SQL
CREATE OR REPLACE PACKAGE ctx_KetNoi_pkg
Tuy nhiên muốn thiết lập ngữ cảnh ứng dụng tự động thì phải thêm mộtTRIGGER ràng buộc sau khi đăng nhập vào CSDL:
CREATE OR REPLACE TRIGGER trg_KetNoi AFTER LOGON ON DATABASE
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ùngchỉ 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ị trongcá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ụngvới nhau Khi ấy các giá trị sẽ không được xác nhận cụ thể là của người nàocũ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