Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Cơ Sở Dữ Liệu

Bật Auditing Cấp OS Cho Oracle RAC Database Để Giám Sát Hành Động Superuser

Giới Thiệu

Thỉnh thoảng, bạn có thể cần audit tất cả hành động của Oracle® Database superuser, sys. Để đáp ứng yêu cầu này, Oracle giới thiệu tính năng trong phiên bản 9i bao gồm tham số AUDIT_SYS_OPERATIONS.

Khi bạn đặt tham số này thành true, tiến trình tạo file trong thư mục xác định bởi tham số AUDIT_FILE_DEST. Các file này chứa giao thức tất cả hành động của user sys. Mặc định, file chứa kết nối bởi sys nhưng không bao gồm hành động xảy ra sau kết nối.

Nếu bạn đặt AUDIT_SYS_OPERATIONS=true, file audit chứa tất cả hành động của sys thuộc về user hệ điều hành cài đặt database—thường là user Oracle. User có đặc quyền kết nối như sys có thể cũng có đặc quyền kết nối như Oracle ở cấp OS. Truy cập này làm cho việc dùng AUDIT_SYS_OPERATIONS hơi vô nghĩa từ góc độ bảo mật. Vì vậy, Oracle cho phép root sở hữu file audit, làm cho nó khó hơn cho database administrator thao túng hoặc xóa file.

Cấu Hình File Audit Ở Cấp OS

Sử dụng các bước sau để cấu hình file audit ở cấp OS trong môi trường Oracle Real Application Clusters (RAC):

Bước 1: Thiết Lập Tham Số Database

Dùng các lệnh sau để thiết lập tham số database:

SQL> alter system set audit_sys_operations=true scope=spfile; System altered.
SQL> alter system set audit_syslog_level='LOCAL1.WARNING' scope=spfile; System altered.
SQL> alter system set audit_trail = OS SCOPE=SPFILE; System altered. 

Bước 2: Cấu Hình Các Nút RAC

Dùng các bước sau, với tư cách root, để cấu hình nút RAC1 và RAC2:

a) Chạy lệnh sau để backup /etc/rsyslog.conf:

cp -p /etc/rsyslog.conf /etc/rsyslog.conf.<ITK#> 

b) Thêm các dòng sau vào /etc/rsyslog.conf:

# Oracle audit <ITK#>
local1.warning /var/log/oracle/db_name_audit.log 

Bước 3: Khởi Động Lại Syslog Logger

Chạy các lệnh sau để khởi động lại tiến trình syslog logger:

service rsyslog status
service rsyslog restart
service rsyslog status 

Bước 4: Khởi Động Lại RAC Database

Dùng các bước sau để khởi động lại RAC database trên RAC1 và RAC2 theo kiểu rolling:

a) Chạy các lệnh sau trên RAC2:

srvctl stop instance -d DB_NAME -i DB_SID2
srvctl start instance -d DB_NAME -i DB_SID2
srvctl status database -d DB_NAME 

b) Đợi mười phút.

c) Chạy các lệnh sau trên RAC1:

srvctl stop instance -d DB_NAME -i DB_SID1
srvctl start instance -d DB_NAME -i DB_SID1
srvctl status database -d DB_NAME 

Bước 5: Thiết Lập File Logrotate

Để thiết lập file logrotate trên RAC1 và RAC2, chỉnh sửa /etc/logrotate.d/oracle_audit, với tư cách root, để bao gồm các dòng sau:

/var/log/oracle/db_name_audit.log {
  rotate 12
  compress
  weekly
  dateext
  notifempty
  missingok
  copytruncate
} 

Tham Số Logrotate

Bạn có thể bao gồm các tùy chọn sau (thu thập từ Manage your logs using Logrotate và man file) trong file cấu hình logrotate:

Rotate: Giữ N archive cuối cùng của log. Bạn có thể đặt cao, miễn là sử dụng disk hợp lý. Bạn cũng có thể đặt thành 10 ngày cuối hoặc 2 tuần nếu log lớn.

Compress: Log archive được nén bằng gzip (khuyên dùng). Nén này giữ kích thước file thấp hơn log thô rất nhiều.

Weekly: File log được rotate mỗi ngày một lần, hoặc nếu ngày tiến ít nhất 7 ngày kể từ lần rotate cuối (bỏ qua thời gian chính xác). Giải thích weekday: 0 là Chủ nhật, 1 là Thứ hai, 6 là Thứ bảy. Giá trị đặc biệt 7 nghĩa là mỗi 7 ngày, bất kể weekday. Mặc định là 0 nếu tham số weekday bị bỏ qua.

Yearly: File log được rotate nếu năm hiện tại khác năm rotate cuối.

dateext: File log archive được thêm ngày khi xử lý. Định dạng mặc định YYYYMMDD. Phụ gia này làm tìm log archive dễ dàng hơn.

notifempty: Nếu file log trống, không archive nó. Điều này quan trọng vì bạn chỉ giữ một số archive nhất định, và điều này đảm bảo bạn không có file archive trống đẩy ra entry archive cũ hơn.

missingok: Nếu bất kỳ file log nào không tìm thấy, chỉ tìm file log tiếp theo trong cấu hình. Điều này đảm bảo chương trình logrotate không thoát bất ngờ nếu một file log bị thiếu.

copytruncate: Khi log được archive, logrotate sao chép nội dung file log vào file khác (có timestamp). Tùy chọn này sau đó bảo logrotate xóa hoặc cắt bớt entry đã sao chép từ file log gốc. Tùy chọn này cần thiết khi chương trình liên tục ghi vào file log, và tùy chọn này đảm bảo cùng file log được dùng bởi chương trình để ngăn nó thoát bất ngờ (do không thể truy cập file log).

Ưu Và Nhược Điểm

Ưu và nhược điểm của việc ghi audit record vào file trên OS bao gồm các cân nhắc sau:

Ưu điểm:

Ghi audit record vào filesystem thuộc root hạn chế ngay cả user Oracle cài đặt database đọc nội dung và sửa đổi nó.

Nhược điểm:

Lưu trữ file audit trên OS tiêu tốn dung lượng và có thể gây vấn đề hiệu suất. Ví dụ, sys bây giờ có thể thực hiện hành động lớn, như chạy catalog.sql hoặc catproc.sql.

Kết Luận

Các bước trong bài viết này hướng tất cả audit record đến file OS trong RAC database. Oracle khuyên bạn dùng cài đặt OS, đặc biệt nếu bạn dùng cấu hình database siêu bảo mật.