ESC را فشار دهید تا بسته شود

زمیوس آموزش، یادگیری و سرگرمی

آموزش Auditing در سطح ستون در Oracle 26ai

در بسیاری از سیستم‌های سازمانی، دانستن اینکه چه کسی، چه زمانی و دقیقاً کدام بخش از داده را تغییر داده یا مشاهده کرده، فقط یک مزیت نیست؛ بلکه یک الزام امنیتی و قانونی است.

در Oracle Database، یکی از پیشرفته‌ترین قابلیت‌ها در این زمینه، Auditing در سطح ستون (Column‑Level Auditing) است.

در این مقاله آموزش Oracle در بخش آموزش Oracle 26ai، به‌صورت کامل، روان و کاربردی یاد می‌گیریم:

  • Auditing در سطح ستون چیست
  • چه تفاوتی با Auditing معمولی دارد
  • چگونه با FGA و Unified Auditing پیاده‌سازی می‌شود
  • و در نهایت، بهترین Practiceها در محیط عملیاتی چیست.

اگر با Oracle کار کرده باشی، حتماً این سناریو را تجربه کرده‌ای:

«سیستم کند شده، کاربران شاکی‌اند، اما هیچ‌کس دقیق نمی‌داند مشکل از کجاست!»

اینجاست که DBMS_MONITOR مثل یک ذره‌بین حرفه‌ای وارد عمل می‌شود.

در این مقاله شما می خوانید

Auditing چیست و چرا اهمیت دارد؟

Auditing یعنی ثبت و نگهداری جزئیات فعالیت کاربران در دیتابیس؛ از جمله:

  • اجرای SELECT، UPDATE، DELETE
  • تغییر داده‌های حساس
  • دسترسی به اطلاعات محرمانه

چرا Auditing مهم است؟

  • ✅ رعایت الزامات قانونی و Compliance
  • ✅ افزایش امنیت اطلاعات
  • ✅ شناسایی سوءاستفاده‌ها
  • ✅ امکان پیگیری خطاهای انسانی یا سیستمی

Column‑Level Auditing (Auditing در سطح ستون) چیست؟

در Auditing معمولی، هر تغییری روی جدول ثبت می‌شود؛ اما در Oracle 26ai:

  • لاگ‌های بسیار زیادی تولید می‌کند
  • Performance را کاهش می‌دهد
  • اطلاعات غیرضروری ثبت می‌کند

فقط زمانی Audit انجام شود که ستون یا ستون‌های مشخصی مورد دسترسی یا تغییر قرار بگیرند.

مثال ساده

در جدول کارمندان:

  • تغییر ستون SALARY → بسیار حساس ✅
  • تغییر ستون ADDRESS → کم‌اهمیت ❌

روش‌های Auditing در Oracle

Oracle چند مکانیزم Auditing در اختیار ما می‌گذارد:

وضعیت پشتیبانی از سطح ستون روش
قدیمی Standard Auditing
رایج Fine‑Grained Auditing (FGA)
جدید در oracle 26ai ✅✅ Unified Auditing

📌 برای Auditing در سطح ستون، تمرکز اصلی روی FGA و Unified Auditing است.

Fine‑Grained Auditing (FGA) چیست؟

FGA با استفاده از پکیج DBMS_FGA امکان Auditing بسیار دقیق را فراهم می‌کند:

  • Auditing روی ستون خاص
  • Auditing شرطی (Condition‑Based)
  • Auditing روی SELECT و UPDATE

سناریوی عملی Column‑Level Auditing در Oracle 26ai

فرض کنید جدول زیر را داریم:

				
					EMPLOYEES
- EMP_ID
- NAME
- SALARY
- DEPARTMENT

				
			

🎯 هدف:

فقط زمانی که ستون SALARY تغییر کند، عملیات Audit ثبت شود.

پیاده‌سازی Column‑Level Auditing با FGA

در FGA می‌توان مشخص کرد که:

  • فقط ستون خاصی مانیتور شود
  • فقط نوع خاصی از عملیات (مثلاً UPDATE) Audit شود

نتیجه:

  • اگر UPDATE انجام شود اما SALARY تغییر نکند → هیچ لاگی ثبت نمی‌شود
  • فقط تغییر واقعی ستون هدف ثبت خواهد شد ✅

مشاهده لاگ‌های FGA

لاگ‌های مربوط به FGA در View زیر ذخیره می‌شوند:

				
					DBA_FGA_AUDIT_TRAIL

				
			

این View اطلاعاتی مثل:

  • کاربر
  • جدول
  • نوع عملیات
  • زمان اجرا
  • متن SQL

را در اختیار DBA قرار می‌دهد.

Auditing شرطی

یکی از قابلیت‌های بسیار قدرتمند FGA این است که Auditing را مشروط کنیم.

مثال:

فقط زمانی Audit شود که حقوق بیشتر از ۱۰٬۰۰۰ تغییر کند

✅ این نوع Auditing در سیستم‌های مالی و بانکی بسیار رایج است و باعث کاهش شدید حجم لاگ‌ها می‌شود.

Auditing روی SELECT ستون‌های حساس

Column‑Level Auditing فقط برای UPDATE نیست.

می‌توان مشخص کرد:

اگر کسی فقط ستون خاصی را SELECT کرد، Audit انجام شود.

این موضوع برای اطلاعاتی مثل:

  • حقوق
  • شماره حساب
  • اطلاعات هویتی

بسیار حیاتی است.

Unified Auditing؛ روش جدید در Oracle 26ai

از Oracle 12c به بعد، Unified Auditing معرفی شد تا تمام مکانیزم‌های Auditing در یک چارچوب یکپارچه شوند.

مزایای Unified Auditing

  • Performance بهتر
  • ✅ مدیریت متمرکز
  • ✅ آینده‌دار و مورد توصیه Oracle
  • ✅ مناسب محیط‌های عملیاتی

Column‑Level Auditing با Unified Auditing

در Unified Auditing می‌توان Policyهایی تعریف کرد که:

  • فقط وقتی مقدار یک ستون واقعاً تغییر کرد
  • یا فقط در شرایط خاص

Audit انجام شود.

تمام لاگ‌ها در View زیر ذخیره می‌شوند:

				
					UNIFIED_AUDIT_TRAIL

				
			

مقایسه FGA و Unified Auditing

Unified Auditing FGA ویژگی
Auditing در سطح ستون
Auditing شرطی
عالی خوب Performance
بسیار بالا متوسط آینده‌داری
✅✅✅ پیشنهاد Oracle

Best Practiceهای حرفه‌ای DBA

✅ فقط ستون‌های حساس را Audit کن

Auditing شرطی را جدی بگیر

✅ لاگ‌ها را به‌صورت دوره‌ای آرشیو یا Purge کن

✅ قبل از انجام در محیط های عملیاتی، تست کن

✅ در نسخه‌های جدید Oracle، Unified Auditing را ترجیح بده

سوالات متداول درباره Auditing در سطح ستون در Oracle 26ai

Auditing در سطح ستون این مشکل رایج را حل می‌کند که در Auditing معمولی، همه‌ی تغییرات یک جدول ثبت می‌شوند؛ حتی تغییرات کم‌اهمیت.

با Column‑Level Auditing، فقط زمانی لاگ ثبت می‌شود که ستون‌های حساس (مثل حقوق، شماره حساب یا اطلاعات هویتی) تغییر کنند یا مشاهده شوند.

نتیجه این کار:

  • لاگ‌های کمتر و تمیزتر
  • Performance بهتر دیتابیس
  • تمرکز دقیق روی داده‌های حیاتی

به همین دلیل، این نوع Auditing در سیستم‌های بانکی و مالی یک استاندارد حرفه‌ای محسوب می‌شود.

تفاوت اصلی در دقت و هوشمندی است.

در Auditing معمولی، Oracle هر تغییری روی جدول را ثبت می‌کند؛ حتی اگر آن تغییر هیچ ارزش امنیتی نداشته باشد.

اما در Auditing در سطح ستون:

  • فقط ستون‌های مشخص مانیتور می‌شوند
  • می‌توان Auditing را شرطی کرد
  • حجم لاگ‌ها به‌شدت کاهش پیدا می‌کند

به‌طور خلاصه، Auditing معمولی «کلی» است، ولی Column‑Level Auditing «هدفمند و حرفه‌ای».

پاسخ کوتاه این است: بستگی به نسخه Oracle و معماری سیستم دارد.

اما اگر بخواهیم حرفه‌ای نگاه کنیم:

  • FGA برای پروژه‌های قدیمی‌تر هنوز بسیار قدرتمند و کاربردی است
  • Unified Auditing در نسخه‌های جدید Oracle (۱۲c به بعد) آینده‌دارتر، سریع‌تر و متمرکزتر است

اگر سیستم جدید طراحی می‌کنید یا قصد ارتقا دارید، Unified Auditing انتخاب هوشمندانه‌تری است.

اما اگر دیتابیس قدیمی دارید، FGA همچنان یک ابزار کاملاً قابل اتکاست.

اگر درست پیاده‌سازی شود، خیر.

مشکل Performance زمانی به وجود می‌آید که:

  • همه ستون‌ها Audit شوند
  • شرطی برای Auditing وجود نداشته باشد
  • حجم لاگ‌ها مدیریت نشود

در Column‑Level Auditing حرفه‌ای:

  • فقط ستون‌های حساس مانیتور می‌شوند
  • Auditing شرطی است
  • لاگ‌ها به‌صورت دوره‌ای پاک‌سازی یا آرشیو می‌شوند

به همین دلیل، این روش در محیط‌های عملیاتی بزرگ هم بدون مشکل استفاده می‌شود.

جمع‌بندی

Auditing در سطح ستون در Oracle یکی از مهم‌ترین ابزارهای امنیتی برای حفاظت از داده‌های حساس است.

اگر این قابلیت به‌درستی و هوشمندانه پیاده‌سازی شود:

  • امنیت افزایش می‌یابد
  • Performance حفظ می‌شود
  • و سیستم با الزامات قانونی سازگار خواهد بود

سؤالی درباره این مقاله داری؟

اگر نکته‌ای در این مقاله برات مبهم بود یا خواستی بیشتر بدونی، همین حالا برام بنویس تا دقیق و صمیمی پاسخت رو بدم — مثل یه گفت‌وگوی واقعی 💬

برو به صفحه پرسش و پاسخ

میثم راد

من یه برنامه نویسم که حسابی با دیتابیس اوراکل رفیقم! از اونایی ام که تا چیزی رو کامل نفهمم،ول کن نیستم، یادگرفتن برام مثل بازیه، و نوشتن اینجا کمک می کنه تا چیزایی که یاد گرفتم رو با بقیه به شریک بشم، با هم پیشرفت کنیم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *