परिचय
कभी-कभी, आपको Oracle® डेटाबेस सुपरयूजर, sys की सभी क्रियाओं को ऑडिट करने की आवश्यकता हो सकती है। इस आवश्यकता को पूरा करने के लिए, Oracle ने संस्करण 9i में एक फीचर पेश किया जिसमें AUDIT_SYS_OPERATIONS पैरामीटर शामिल है।
जब आप इस पैरामीटर को true पर सेट करते हैं, तो प्रक्रिया AUDIT_FILE_DEST पैरामीटर द्वारा निर्धारित डायरेक्टरी में फाइलें जनरेट करती है। इन फाइलों में sys उपयोगकर्ता की सभी क्रियाओं का प्रोटोकॉल होता है। डिफ़ॉल्ट रूप से, फाइलों में sys द्वारा कनेक्शन होते हैं लेकिन कनेक्शन के बाद होने वाली क्रियाएं शामिल नहीं होतीं।
यदि आप AUDIT_SYS_OPERATIONS=true सेट करते हैं, तो sys की सभी क्रियाओं वाली ऑडिट फाइल उस ऑपरेटिंग सिस्टम उपयोगकर्ता की होती है जिसने डेटाबेस इंस्टॉल किया—आमतौर पर, Oracle उपयोगकर्ता। sys के रूप में कनेक्ट करने के विशेषाधिकार वाला उपयोगकर्ता शायद ऑपरेटिंग सिस्टम (OS) स्तर पर Oracle के रूप में कनेक्ट करने का विशेषाधिकार भी रखता है। यह पहुंच सुरक्षा दृष्टिकोण से AUDIT_SYS_OPERATIONS को कुछ हद तक बेकार बना देती है। इसलिए, Oracle root को ऑडिट फाइल का मालिक बनने की अनुमति देता है, जो डेटाबेस प्रशासक के लिए फाइल में हेरफेर या हटाना कठिन बना देना चाहिए।
OS स्तर पर ऑडिट फाइल कॉन्फ़िगर करें
Oracle रियल एप्लिकेशन क्लस्टर्स (RAC) वातावरण में OS स्तर पर ऑडिट फाइल कॉन्फ़िगर करने के लिए निम्न चरणों का उपयोग करें:
चरण 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 नोड्स कॉन्फ़िगर करें
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: Syslog लॉगर पुनः आरंभ करें
syslog लॉगर प्रक्रिया को पुनः आरंभ करने के लिए निम्न कमांड चलाएं:
service rsyslog status
service rsyslog restart
service rsyslog status
चरण 4: RAC डेटाबेस पुनः आरंभ करें
रोलिंग फैशन में RAC1 और RAC2 पर RAC डेटाबेस को पुनः आरंभ करने के लिए निम्न चरणों का उपयोग करें:
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) दस मिनट प्रतीक्षा करें।
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 फाइल सेट करें
RAC1 और RAC2 पर logrotate फाइल सेट करने के लिए, /etc/logrotate.d/oracle_audit को root के रूप में संपादित करें ताकि निम्न पंक्तियाँ शामिल हों:
/var/log/oracle/db_name_audit.log {
rotate 12
compress
weekly
dateext
notifempty
missingok
copytruncate
}
Logrotate पैरामीटर
आप logrotate कॉन्फ़िगरेशन फाइल में निम्न विकल्प शामिल कर सकते हैं (Manage your logs using Logrotate और मैन फाइल से एकत्रित):
Rotate: लॉग के अंतिम N आर्काइव रखें। आप इसे उच्च सेट कर सकते हैं, जब तक डिस्क उपयोग उचित है। आप इसे अंतिम 10 दिनों या 2 सप्ताह पर भी सेट कर सकते हैं यदि लॉग बड़ा हो जाता है।
Compress: आर्काइव्ड लॉग gzip का उपयोग करके संपीड़ित होते हैं (अनुशंसित)। यह संपीड़न फाइल आकार को रॉ लॉग से बहुत कम रखता है।
Weekly: लॉग फाइलें दिन में एक बार घुमाई जाती हैं, या यदि अंतिम रोटेशन के बाद से तारीख कम से कम 7 दिन आगे बढ़ी है (सटीक समय को नजरअंदाज करते हुए)। सप्ताहांत की व्याख्या इस प्रकार है: 0 का अर्थ रविवार, 1 का अर्थ सोमवार, 6 का अर्थ शनिवार। विशेष मान 7 का अर्थ प्रत्येक 7 दिन, सप्ताहांत के बावजूद। डिफ़ॉल्ट 0 है यदि सप्ताहांत तर्क छोड़ा गया है।
Yearly: यदि वर्तमान वर्ष अंतिम रोटेशन के समान नहीं है तो लॉग फाइलें घुमाई जाती हैं।
dateext: आर्काइव्ड लॉग फाइलों में प्रसंस्करण की तारीख जोड़ी जाती है। डिफ़ॉल्ट प्रारूप YYYYMMDD है। यह परिशिष्ट आर्काइव्ड लॉग की खोज को आसान बनाता है।
notifempty: यदि लॉग फाइल खाली है, तो इसे आर्काइव न करें। यह महत्वपूर्ण है क्योंकि आप केवल एक निश्चित संख्या में आर्काइव रखते हैं, और यह सुनिश्चित करता है कि आपके पास आर्काइव्ड खाली फाइलें नहीं हैं जो पुराने आर्काइव्ड प्रविष्टियों को बाहर धकेलती हैं।
missingok: यदि कोई लॉग फाइल नहीं मिलती है, तो कॉन्फ़िगरेशन में अगली लॉग फाइल खोजें। यह सुनिश्चित करता है कि लॉगफाइल गायब होने की स्थिति में लॉग रोटेट प्रोग्राम अप्रत्याशित रूप से बाहर नहीं निकलता।
copytruncate: जब लॉग आर्काइव किया जाता है, तो लॉग रोटेट लॉग फाइल की सामग्री को दूसरी फाइल (टाइमस्टैम्प के साथ) में कॉपी करता है। यह विकल्प तब लॉग रोटेट को कॉपी की गई प्रविष्टियों को मूल लॉग फाइल से हटाने या काटने के लिए कहता है। यह विकल्प तब आवश्यक होता है जब प्रोग्राम लगातार लॉग फाइल में लिखते हैं, और यह विकल्प सुनिश्चित करता है कि उसी लॉग फाइल का उपयोग प्रोग्राम द्वारा किया जा रहा है ताकि इसे अप्रत्याशित रूप से बाहर निकलने से रोका जा सके (लॉग फाइल तक पहुंचने में असमर्थ होने के कारण)।
पक्ष और विपक्ष
OS पर फाइल में ऑडिट रिकॉर्ड लिखने के पक्ष और विपक्ष में निम्नलिखित विचार शामिल हैं:
पक्ष:
root-स्वामित्व वाले फाइल सिस्टम पर ऑडिट रिकॉर्ड लॉग करना उस Oracle उपयोगकर्ता को भी प्रतिबंधित करता है जिसने डेटाबेस इंस्टॉल किया है, सामग्री को पढ़ने और संशोधित करने से।
विपक्ष:
OS पर ऑडिट फाइल स्टोर करना स्थान का उपभोग करता है और प्रदर्शन समस्याएं पैदा कर सकता है। उदाहरण के लिए, sys अब बड़ी क्रियाएं कर सकता है, जैसे catalog.sql या catproc.sql ऑपरेशन चलाना।
निष्कर्ष
इस पोस्ट के चरण RAC डेटाबेस में सभी ऑडिट रिकॉर्ड को OS फाइल में निर्देशित करते हैं। Oracle अनुशंसा करता है कि आप OS सेटिंग्स का उपयोग करें, विशेष रूप से यदि आप अल्ट्रा-सिक्योर डेटाबेस कॉन्फ़िगरेशन का उपयोग करते हैं।