كيفية تدقيق نشاط قاعدة البيانات دون مشاكل في الأداء وقابلية التوسع؟

StackOverflow https://stackoverflow.com/questions/67557

سؤال

أحتاج إلى إجراء تدقيق لجميع أنشطة قاعدة البيانات بغض النظر عما إذا كان ذلك من تطبيق أو من شخص يصدر بعض SQL عبر وسائل أخرى.لذلك يجب أن يتم التدقيق على مستوى قاعدة البيانات.قاعدة البيانات المعنية هي Oracle.لقد فكرت في القيام بذلك عبر Triggers وأيضًا عبر ما يسمى Fine Grained Auditing الذي توفره Oracle.وفي كلتا الحالتين، قمنا بتشغيل التدقيق على جداول محددة وأعمدة محددة.ومع ذلك، وجدنا أن الأداء سيئ جدًا عندما نستخدم أيًا من هذه الطرق.

نظرًا لأن التدقيق أمر لا بد منه بسبب اللوائح الموضوعة حول خصوصية البيانات، فأنا أتساءل ما هي أفضل طريقة للقيام بذلك دون حدوث تدهور كبير في الأداء.إذا كان لدى شخص ما خبرة خاصة بشركة Oracle في هذا الأمر، فسيكون ذلك مفيدًا، ولكن إن لم يكن فقط الممارسات العامة حول تدقيق نشاط قاعدة البيانات ستكون جيدة أيضًا.

هل كانت مفيدة؟

المحلول

لست متأكدًا مما إذا كان هذا نهجًا ناضجًا بما فيه الكفاية لنظام الإنتاج ، لكنني حققت نجاحًا كبيرًا في مراقبة حركة مرور قاعدة البيانات باستخدام Sniffer لحركة المرور على الشبكة.

أرسل البيانات الأولية بين التطبيق وقاعدة البيانات إلى جهاز آخر وفك تشفيرها وتحليلها هناك.

لقد استخدمت PostgreSQL ، وفك تشفير حركة المرور وتحويلها إلى دفق من عمليات قاعدة البيانات التي يمكن تسجيلها كان واضحًا نسبيًا.أتصور أنها ستعمل على أي قاعدة بيانات حيث يتم توثيق تنسيق الحزمة.

كانت النقطة الأساسية هي أنه لم يضع أي حمل إضافي على قاعدة البيانات نفسها.

أيضًا ، كانت المراقبة السلبية ، فقد سجلت جميع الأنشطة ، لكنها لم تستطع منع أي عمليات ، لذلك قد لا يكون ما تبحث عنه تمامًا.

نصائح أخرى

ليست هناك حاجة إلى "لف نفسك".فقط قم بتشغيل التدقيق:

  1. قم بتعيين معلمة قاعدة البيانات AUDIT_TRAIL = DB.
  2. ابدأ المثيل.
  3. تسجيل الدخول باستخدام SQLPlus.
  4. أدخل البيان
    audit all;
    يؤدي هذا إلى تشغيل التدقيق للعديد من عمليات DDL الهامة، لكن DML وبعض عبارات DDL الأخرى لا تزال غير مدققة.
  5. لتمكين التدقيق على هذه الأنشطة الأخرى، جرب عبارات مثل هذه:
    audit alter table; -- DDL audit
    audit select table, update table, insert table, delete table; -- DML audit

ملحوظة:يتم دائمًا تدقيق جميع الأنشطة "مثل sysdba" إلى نظام التشغيل/النظام.في Windows، هذا يعني سجل أحداث Windows.في UNIX، يكون هذا عادةً $ORACLE_HOME/rdbms/audit.

تفحص ال فصل التدقيق في Oracle 10g R2 من مرجع قاعدة بيانات SQL.

يمكن عرض مسار تدقيق قاعدة البيانات في طريقة العرض SYS.DBA_AUDIT_TRAIL.

وتجدر الإشارة إلى أن التدقيق الداخلي لأوراكل سيكون عالي الأداء بحكم التعريف.لقد تم تصميمه ليكون كذلك تمامًا، ومن الصعب جدًا تخيل أي شيء آخر ينافسه في الأداء.كما توجد أيضًا درجة عالية من التحكم "الدقيق" في تدقيق Oracle.يمكنك الحصول عليها بالدقة التي تريدها.وأخيرًا، يمكن نقل الجدول SYS.AUD$ مع فهارسه إلى مساحة جدول منفصلة لمنع ملء مساحة الجدول SYSTEM.

تحيات طيبة ، opus

إذا كنت تريد تسجيل نسخ من السجلات التي تم تغييرها على نظام مستهدف، فيمكنك القيام بذلك باستخدام برنامج Golden Gate ولا تتحمل الكثير في طريق استنزاف الموارد من جانب المصدر.كما لا يتعين عليك إجراء أي تغييرات على قاعدة البيانات المصدر لتنفيذ هذا الحل.

تقوم Golden Gate بجمع سجلات الإعادة للمعاملات التي تشير إلى قائمة الجداول التي تهتم بها.تتم كتابة هذه التغييرات في "ملف المسار" ويمكن تطبيقها على مخطط مختلف في نفس قاعدة البيانات، أو شحنها إلى نظام مستهدف وتطبيقها هناك (مثالي لتقليل الحمل على نظامك المصدر).

بمجرد حصولك على ملف المسار إلى النظام المستهدف، توجد بعض تعديلات التكوين، حيث يمكنك تعيين خيار لإجراء التدقيق، وإذا لزم الأمر، يمكنك استدعاء وظيفتين لـ Golden Gate للحصول على معلومات حول المعاملة:

1) قم بتعيين معلمة النسخ المتماثل INSERTALLRECORDS لإدراج سجل جديد في الجدول الهدف لكل عملية تغيير يتم إجراؤها على الجدول المصدر.احذر من أن هذا قد يستهلك مساحة كبيرة، ولكن إذا كنت بحاجة إلى تدقيق شامل، فمن المحتمل أن يكون هذا أمرًا متوقعًا.

2) إذا لم يكن لديك بالفعل CHANGED_BY_USERID وCHANGED_DATE مرفقين بسجلاتك، فيمكنك استخدام وظائف Golden Gate على الجانب المستهدف للحصول على هذه المعلومات الخاصة بالمعاملة الحالية.تحقق من الوظائف التالية في الدليل المرجعي GG:GGHEADER ("UserId") GGHEADER ("Timestamp")

لذا لا، فهو ليس مجانيًا (يتطلب ترخيصًا من خلال Oracle)، وسيتطلب بعض الجهد للتشغيل، ولكن من المحتمل أن يكون جهدًا/تكلفة أقل بكثير من تنفيذ وصيانة حل مخصص يتم طرحه بنفسك، كما أنك تتمتع بميزة إضافية تتمثل في شحن البيانات إلى نظام بعيد حتى تتمكن من ضمان الحد الأدنى من التأثير على قاعدة البيانات المصدر الخاصة بك.

إذا كنت تستخدم أوراكل، فهناك ميزة تسمى CDC (تغيير بيانات الالتقاط) وهي حل أكثر كفاءة في الأداء لمتطلبات التدقيق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top