ভূমিকা
কখনও কখনও, আপনাকে Oracle® ডেটাবেস সুপারইউজার, sys-এর সমস্ত অ্যাকশন অডিট করতে হতে পারে। এই প্রয়োজনীয়তা পূরণের জন্য, Oracle 9i ভার্সনে একটি ফিচার চালু করে যা AUDIT_SYS_OPERATIONS প্যারামিটার অন্তর্ভুক্ত করে।
যখন আপনি এই প্যারামিটারকে true-এ সেট করেন, তবে প্রসেস AUDIT_FILE_DEST প্যারামিটার দ্বারা নির্ধারিত ডিরেক্টরিতে ফাইল জেনারেট করে। এই ফাইলগুলো sys ইউজারের সমস্ত অ্যাকশনের একটি প্রোটোকল ধারণ করে। ডিফল্টরূপে, ফাইলগুলো sys-এর কানেকশন ধারণ করে কিন্তু কানেকশনের পরের অ্যাকশনগুলো অন্তর্ভুক্ত করে না।
আপনি যদি AUDIT_SYS_OPERATIONS=true সেট করেন, তবে sys-এর সমস্ত অ্যাকশন ধারণকারী অডিট ফাইলটি অপারেটিং সিস্টেম ইউজারের থাকবে যিনি ডেটাবেস ইনস্টল করেছেন—সাধারণত, Oracle ইউজার। sys-এ কানেক্ট করার প্রivilেজ থাকা একজন ইউজারের সম্ভবত অপারেটিং সিস্টেম (OS) লেভেলে Oracle-এ কানেক্ট করার প্রivilেজও থাকবে। এই অ্যাক্সেস AUDIT_SYS_OPERATIONS-কে নিরাপত্তা দৃষ্টিকোণ থেকে কিছুটা বেঅसर করে দেয়। তাই, Oracle root-কে অডিট ফাইল নিজস্ব করতে অনুমতি দেয়, যা ডেটাবেস অ্যাডমিনিস্ট্রেটরকে ফাইল ম্যানিপুলেট বা ডিলিট করার জন্য কঠিন করা উচিত।
OS লেভেলে অডিট ফাইল কনফিগার করুন
Oracle Real Application Clusters (RAC) এনভায়রনমেন্টে OS লেভেলে অডিট ফাইল কনফিগার করতে নিচের ধাপগুলো ব্যবহার করুন:
ধাপ ১: ডেটাবেস প্যারামিটার সেট করুন
ডেটাবেস প্যারামিটার সেট করতে নিচের কমান্ডগুলো ব্যবহার করুন:
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.
ধাপ ২: 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
ধাপ ৩: Syslog লগার রিস্টার্ট করুন
syslog লগার প্রসেস রিস্টার্ট করতে নিচের কমান্ডগুলো রান করুন:
service rsyslog status
service rsyslog restart
service rsyslog status
ধাপ ৪: RAC ডেটাবেস রিস্টার্ট করুন
RAC ডেটাবেস RAC1 এবং RAC2-এ রোলিং ফ্যাশনে রিস্টার্ট করতে নিচের ধাপগুলো ব্যবহার করুন:
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
ধাপ ৫: Logrotate ফাইল সেট আপ করুন
RAC1 এবং RAC2-এ logrotate ফাইল সেট আপ করতে, root হিসেবে /etc/logrotate.d/oracle_audit এডিট করুন নিচের লাইনগুলো অন্তর্ভুক্ত করতে:
/var/log/oracle/db_name_audit.log {
rotate 12
compress
weekly
dateext
notifempty
missingok
copytruncate
}
Logrotate প্যারামিটার
আপনি logrotate কনফিগারেশন ফাইলে নিচের অপশনগুলো (Manage your logs using Logrotate এবং man ফাইল থেকে সংগ্রহ) অন্তর্ভুক্ত করতে পারেন:
Rotate: লগের শেষ N আর্কাইভ রাখুন। আপনি এটি উচ্চ সেট করতে পারেন, যতক্ষণ না ডিস্ক ব্যবহার যুক্তিসঙ্গত। আপনি এটি শেষ ১০ দিন বা ২ সপ্তাহেও সেট করতে পারেন যদি লগ বড় হয়।
Compress: আর্কাইভড লগ gzip ব্যবহার করে কম্প্রেস করা হয় (সুপারিশ করা)। এই কম্প্রেশন র লগের চেয়ে অনেক কম ফাইল সাইজ রাখে।
Weekly: লগ ফাইল প্রতি দিন একবার রোটেট করা হয়, অথবা যদি তারিখ কমপক্ষে ৭ দিন এডভান্স হয়, শেষ রোটেশনের পর থেকে (সঠিক সময় উপেক্ষা করে)। সপ্তাহের দিনের ব্যাখ্যা নিম্নরূপ: ০ মানে রবিবার, ১ মানে সোমবার, ৬ মানে শনিবার। স্পেশাল ভ্যালু ৭ মানে প্রতিটি ৭ দিনে, সপ্তাহের দিন নির্বিশেষে। ডিফল্ট ০ যদি সপ্তাহের দিন আর্গুমেন্ট উপেক্ষা করা হয়।
Yearly: লগ ফাইল রোটেট করা হয় যদি বর্তমান বছর শেষ রোটেশনের মতো না হয়।
dateext: আর্কাইভড লগ ফাইল প্রসেস হওয়ার তারিখের সাথে অ্যাপেন্ড করা হয়। ডিফল্ট ফরম্যাট YYYYMMDD। এটি আর্কাইভড লগ খুঁজে বের করা সহজ করে।
notifempty: যদি লগ ফাইল খালি থাকে, তবে এটি আর্কাইভ করবেন না। এটি গুরুত্বপূর্ণ কারণ আপনি একটি নির্দিষ্ট সংখ্যক আর্কাইভ রাখেন, এবং এটি নিশ্চিত করে যে আপনার আর্কাইভড খালি ফাইল নেই যা পুরানো আর্কাইভড এন্ট্রি পুশ আউট করে।
missingok: যদি কোনো লগ ফাইল পাওয়া না যায়, তবে কনফিগারেশনে পরবর্তী লগ ফাইল খুঁজে বের করুন। এটি নিশ্চিত করে যে logrotate প্রোগ্রাম অপ্রত্যাশিতভাবে এক্সিট করে না যদি একটি লগ ফাইল মিসিং থাকে।
copytruncate: যখন একটি লগ আর্কাইভ করা হয়, logrotate লগ ফাইলের কন্টেন্ট অন্য একটি ফাইলে কপি করে (টাইমস্ট্যাম্প সহ)। এই অপশনটি তারপর logrotate-কে কপি করা এন্ট্রিগুলো মূল লগ ফাইল থেকে রিমুভ বা ট্রানকেট করতে বলে। এই অপশনটি দরকার যখন প্রোগ্রাম অবিরাম লগ ফাইলে লেখে, এবং এই অপশন নিশ্চিত করে যে একই লগ ফাইল প্রোগ্রাম দ্বারা ব্যবহার করা হচ্ছে যাতে সেটি অপ্রত্যাশিতভাবে এক্সিট না করে (লগ ফাইল অ্যাক্সেস করতে না পারার কারণে)।
সুবিধা এবং অসুবিধা
OS-এ একটি ফাইলে অডিট রেকর্ড লেখার সুবিধা এবং অসুবিধা নিচের বিবেচনাগুলো অন্তর্ভুক্ত করে:
সুবিধা:
অডিট রেকর্ডকে একটি root-owned ফাইলসিস্টেমে লগিং করা ডেটাবেস ইনস্টল করার Oracle ইউজারকেও কন্টেন্ট পড়া এবং মডিফাই করার থেকে রেস্ট্রিক্ট করে।
অসুবিধা:
OS-এ অডিট ফাইল সংরক্ষণ করা স্পেস কনজিউম করে এবং পারফরম্যান্স ইস্যু তৈরি করতে পারে। উদাহরণস্বরূপ, sys এখন বড় অ্যাকশন পারফর্ম করতে পারে, যেমন catalog.sql বা catproc.sql অপারেশন।
উপসংহার
এই পোস্টের ধাপগুলো একটি RAC ডেটাবেসে সমস্ত অডিট রেকর্ডকে একটি OS ফাইলে ডিরেক্ট করে। Oracle সুপারিশ করে যে আপনি OS সেটিংস ব্যবহার করুন, বিশেষ করে যদি আপনি একটি أل্ট্রা-সিকিউর ডেটাবেস কনফিগারেশন ব্যবহার করেন।
ফিডব্যাক ট্যাব ব্যবহার করে যেকোনো মন্তব্য বা প্রশ্ন করুন। আপনি এখন চ্যাট শুরু করতে পারেন।
ডেটাবেস সম্পর্কে আরও জানুন।