บางครั้ง คุณอาจต้องการตรวจสอบ (Audit) การกระทำทั้งหมดของ Superuser ของ Oracle® Database คือ sys เพื่อให้ตรงตามข้อกำหนดนี้ Oracle ได้นำเสนอคุณลักษณะใน Version 9i ที่รวมพารามิเตอร์ AUDIT_SYS_OPERATIONS
บทนำ
เมื่อคุณตั้งค่าพารามิเตอร์นี้เป็น true กระบวนการจะสร้างไฟล์ในไดเรกทอรีที่กำหนดโดยพารามิเตอร์ AUDIT_FILE_DEST ไฟล์เหล่านี้มีโปรโตคอลของการกระทำทั้งหมดของ User sys โดยค่าเริ่มต้น ไฟล์มีการเชื่อมต่อโดย sys แต่ไม่รวมการกระทำที่เกิดขึ้นหลังการเชื่อมต่อ
หากคุณตั้งค่า AUDIT_SYS_OPERATIONS=true ไฟล์ Audit ที่มีการกระทำทั้งหมดของ sys จะเป็นของ Operating System User ที่ติดตั้งฐานข้อมูล - ปกติคือ User Oracle ผู้ใช้ที่มีสิทธิ์เชื่อมต่อเป็น sys อาจมีสิทธิ์เชื่อมต่อเป็น Oracle บนระดับ Operating System (OS) เช่นกัน การเข้าถึงนี้ทำให้การใช้ AUDIT_SYS_OPERATIONS ค่อนข้างไร้ประโยชน์จากมุมมองความปลอดภัย ดังนั้น Oracle จึงอนุญาตให้ root เป็นเจ้าของไฟล์ Audit ซึ่งควรทำให้ Administrator ฐานข้อมูลยากขึ้นในการจัดการหรือลบไฟล์
กำหนดค่า Audit File ในระดับ OS
ใช้ขั้นตอนต่อไปนี้เพื่อกำหนดค่า Audit File ในระดับ OS ในสภาพแวดล้อม Oracle Real Application Clusters (RAC):
ขั้นตอน 1: ตั้งค่าพารามิเตอร์ฐานข้อมูล
ใช้คำสั่งต่อไปนี้เพื่อตั้งค่าพารามิเตอร์ฐานข้อมูล:
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.
ขั้นตอน 2: กำหนดค่า RAC Nodes
ใช้ขั้นตอนต่อไปนี้ในฐานะ root เพื่อกำหนดค่าโหนด RAC1 และ RAC2:
a) รันคำสั่งต่อไปนี้เพื่อสำรอง /etc/rsyslog.conf:
cp -p /etc/rsyslog.conf /etc/rsyslog.conf.<ITK#>
b) เพิ่มบรรทัดต่อไปนี้ลงใน /etc/rsyslog.conf:
# Oracle audit <ITK#> local1.warning /var/log/oracle/db_name_audit.log
ขั้นตอน 3: Restart Syslog Logger
รันคำสั่งต่อไปนี้เพื่อ Restart Process ของ syslog Logger:
service rsyslog status service rsyslog restart service rsyslog status
ขั้นตอน 4: Restart RAC Database
ใช้ขั้นตอนต่อไปนี้เพื่อ Restart RAC Database บน RAC1 และ RAC2 แบบ Rolling:
a) รันคำสั่งต่อไปนี้บน 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) รอ 10 นาที
c) รันคำสั่งต่อไปนี้บน 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
ขั้นตอน 5: ตั้งค่า Logrotate File
เพื่อตั้งค่าไฟล์ logrotate บน RAC1 และ RAC2 ให้แก้ไข /etc/logrotate.d/oracle_audit ในฐานะ root ให้รวมบรรทัดต่อไปนี้:
/var/log/oracle/db_name_audit.log { rotate 12 compress weekly dateext notifempty missingok copytruncate }
พารามิเตอร์ Logrotate
คุณสามารถรวมตัวเลือกต่อไปนี้ (รวบรวมจาก Manage your logs using Logrotate และ man file) ในไฟล์ Configuration logrotate:
Rotate: เก็บ Archive ล่าสุด N ไฟล์ของ Log คุณสามารถตั้งค่านี้สูงได้ ตราบใดที่ Disk Usage ยังสมเหตุสมผล คุณยังสามารถตั้งค่าเป็น 10 วันล่าสุดหรือ 2 สัปดาห์ หาก Log ใหญ่ขึ้น
Compress: Archived Logs ถูกบีบอัดด้วย gzip (แนะนำ) การบีบอัดนี้ทำให้ขนาดไฟล์ต่ำกว่า Raw Logs มาก
Weekly: ไฟล์ Log ถูก Rotate หนึ่งครั้งทุกวัน หรือหากวันที่ก้าวหน้าอย่างน้อย 7 วัน นับจากการ Rotate ครั้งล่าสุด (โดยไม่สนใจเวลาที่แน่นอน) การตีความวันของสัปดาห์คือ: 0 คือ Sunday, 1 คือ Monday, 6 คือ Saturday ค่าพิเศษ 7 หมายถึงทุก 7 วัน ไม่สนใจวันของสัปดาห์ ค่าเริ่มต้นคือ 0 หากไม่ระบุ Weekday Argument
Yearly: ไฟล์ Log ถูก Rotate หากปีปัจจุบันไม่เหมือนกับการ Rotate ครั้งล่าสุด
dateext: Archived Log Files ถูกต่อท้ายด้วยวันที่ที่มันถูกประมวลผล รูปแบบเริ่มต้นคือ YYYYMMDD การต่อท้ายนี้ทำให้การค้นหา Archived Logs ง่ายขึ้น
notifempty: หากไฟล์ Log ว่าง อย่า Archive มัน สิ่งนี้สำคัญเพราะคุณเก็บ Archive จำนวนหนึ่งเท่านั้น และสิ่งนี้ทำให้แน่ใจว่าคุณไม่มี Archived Empty Files ที่ผลัก Archive เก่าออก
missingok: หากไม่พบไฟล์ Log ใดๆ ให้ค้นหา Log File ถัดไปใน Configuration นี้ทำให้โปรแกรม Logrotate ไม่ Exit อย่างไม่คาดคิดในกรณีที่ขาด Log File หนึ่งไฟล์
copytruncate: เมื่อ Log ถูก Archive Logrotate จะคัดลอกเนื้อหาของ Log File ไปยังไฟล์อื่น (พร้อม Timestamp) ตัวเลือกนี้จึงบอก Logrotate ให้ Remove หรือ Truncate Entry ที่คัดลอกจาก Log File ต้นฉบับ ตัวเลือกนี้จำเป็นเมื่อโปรแกรมเขียนต่อเนื่องลงใน Log File และตัวเลือกนี้ทำให้แน่ใจว่า Log File เดียวกันถูกใช้โดยโปรแกรม เพื่อป้องกันไม่ให้มัน Exit อย่างไม่คาดคิด (เนื่องจากไม่สามารถเข้าถึง Log File ได้)
ข้อดีและข้อเสีย
ข้อดีและข้อเสียของการเขียน Audit Records ไปยังไฟล์บน OS รวมถึงการพิจารณาต่อไปนี้:
ข้อดี:
การบันทึก Audit Records ไปยัง Filesystem ที่เป็นของ root จำกัดแม้แต่ User Oracle ที่ติดตั้งฐานข้อมูล จากการอ่านเนื้อหาและแก้ไขมัน
ข้อเสีย:
การจัดเก็บ Audit Files บน OS ใช้พื้นที่และอาจก่อให้เกิดปัญหา Performance ตัวอย่างเช่น sys สามารถทำการกระทำขนาดใหญ่ได้ ตัวอย่างเช่น รัน catalog.sql หรือ catproc.sql Operations
สรุป
ขั้นตอนในโพสต์นี้ส่ง Audit Records ทั้งหมดไปยัง OS File ใน RAC Database Oracle แนะนำให้คุณใช้ OS Settings โดยเฉพาะหากคุณใช้การกำหนดค่าฐานข้อมูล Ultra-secure
ใช้แท็บ Feedback เพื่อแสดงความคิดเห็นหรือถามคำถาม คุณยังสามารถแชทได้ทันทีเพื่อเริ่มการสนทนา
เรียนรู้เพิ่มเติมเกี่ยวกับ Databases