تعقب نشاط قاعدة البيانات باستخدام سجلات التدقيق في قاعدة بيانات Azure لخادم MySQL المرن

ينطبق على: قاعدة بيانات Azure ل MySQL - خادم مرن

توفر قاعدة بيانات Azure ل MySQL Flexible Server للمستخدمين القدرة على تكوين سجلات التدقيق. يمكن استخدام سجلات التدقيق لتتبع النشاط على مستوى قاعدة البيانات بما في ذلك أحداث الاتصال والمسؤول وDDL وDML. تُستخدم هذه الأنواع من السجلات بشكل شائع لأغراض التوافق.

تكوين تسجيل التدقيق

هام

يوصى فقط بتسجيل أنواع الأحداث والمستخدمين المطلوبين لأغراض التدقيق الخاصة بك لضمان عدم تأثر أداء الخادم الخاص بك بشكل كبير وجمع كمية ضئيلة من البيانات.

بشكل افتراضي، يتم تعطيل سجلات التدقيق. لتمكينها، قم بتعيين audit_log_enabled معلمة الخادم إلى ON. يمكن تكوين هذا باستخدام مدخل Azure أو Azure CLI .

تتضمن المعلمات الأخرى التي يمكنك ضبطها للتحكم في سلوك تسجيل التدقيق ما يلي:

  • audit_log_eventsيتحكم في الأحداث المراد تسجيلها.: انظر الجدول أدناه للاطلاع على أحداث تدقيق محددة.
  • audit_log_include_usersيجب تضمين مستخدمي MySQL للتسجيل.: القيمة الافتراضية لهذه المعلمة فارغة، والتي ستشمل جميع المستخدمين للتسجيل. هذا له أولوية أعلى على audit_log_exclude_users. الحد الأقصى لطول المعلمة هو 512 حرفا.
  • audit_log_exclude_usersاستبعاد مستخدمي MySQL من التسجيل.: الحد الأقصى لطول المعلمة هو 512 حرفا.

ملاحظة

audit_log_include_users له أولوية أعلى على audit_log_exclude_users. على سبيل المثال ، إذا audit_log_include_users = demouser وdemouseraudit_log_exclude_users = ، سيتم تضمين المستخدم في سجلات التدقيق لأن audit_log_include_users له أولوية أعلى.

الحدث الوصف
CONNECTION - بدء الاتصال (ناجح أو غير ناجح)
- إعادة مصادقة المستخدم مع مستخدم / كلمة مرور مختلفة أثناء الجلسة
- إنهاء الاتصال
DML_SELECT استعلامات مختارة
DML_NONSELECT إدراج/حذف/تحديث الاستعلامات
DML DML = DML_SELECT + DML_NONSELECT
DDL استعلامات مثل "DROP DATABASE"
DCL استفسارات مثل "منح الإذن"
ADMIN استعلامات مثل "إظهار الحالة"
GENERAL الكل في DML_SELECT ، DML_NONSELECT ، DML ، DDL ، DCL ، والمشرف
TABLE_ACCESS - جدول قراءة العبارات، مثل SELECT أو إدراج في ... اختار
- جدول حذف العبارات، مثل حذف أو اقتطاع الجدول
- جدول إدراج العبارات، مثل إدراج أو استبدال
- بيانات تحديث الجدول، مثل UPDATE

الوصول إلى سجلات التدقيق

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

ملاحظة

Premium حسابات التخزين غير مدعومة إذا قمت بإرسال السجلات إلى وحدة تخزين Azure عبر التشخيصات والإعدادات

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

اتصال

الخاصية الوصف
TenantId معرف المستأجر
SourceSystem Azure
TimeGenerated [UTC] الطابع الزمني عند تسجيل السجل بالتوقيت العالمي المنسق
Type نوع السجل. دوما AzureDiagnostics
SubscriptionId المعرف الفريد العمومي للاشتراك الذي ينتمي إليه الخادم
ResourceGroup اسم مجموعة الموارد التي ينتمي إليها الخادم
ResourceProvider اسم موفر المورد. دوما MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId URI للمورد
Resource اسم الخادم
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s اسم الخادم
event_class_s connection_log
event_subclass_s CONNECT, DISCONNECT, CHANGE USER
connection_id_d معرف اتصال فريد تم إنشاؤه بواسطة MySQL
host_s فارغ
ip_s عنوان IP للعميل المتصل ب MySQL
user_s اسم المستخدم الذي ينفذ الاستعلام
db_s اسم قاعدة البيانات المتصلة ب
\_ResourceId URI للمورد

عام

ينطبق المخطط أدناه على أنواع الأحداث العامة DML_SELECT DML_NONSELECT وDML وDDL وDCL والمسؤول.

ملاحظة

بالنسبة sql_text_sإلى ، سيتم اقتطاع السجل إذا تجاوز 2048 حرفا.

الخاصية الوصف
TenantId معرف المستأجر
SourceSystem Azure
TimeGenerated [UTC] الطابع الزمني عند تسجيل السجل بالتوقيت العالمي المنسق
Type نوع السجل. دوما AzureDiagnostics
SubscriptionId المعرف الفريد العمومي للاشتراك الذي ينتمي إليه الخادم
ResourceGroup اسم مجموعة الموارد التي ينتمي إليها الخادم
ResourceProvider اسم موفر المورد. دوما MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId URI للمورد
Resource اسم الخادم
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s اسم الخادم
event_class_s general_log
event_subclass_s LOG، ERROR، RESULT (متوفر فقط ل MySQL 5.6)
event_time وقت بدء الاستعلام في الطابع الزمني UTC
error_code_d رمز الخطأ في حالة فشل الاستعلام. 0 يعني عدم وجود خطأ
thread_id_d معرف مؤشر الترابط الذي نفذ الاستعلام
host_s فارغ
ip_s عنوان IP للعميل المتصل ب MySQL
user_s اسم المستخدم الذي ينفذ الاستعلام
sql_text_s نص الاستعلام الكامل
\_ResourceId URI للمورد

الوصول إلى الجدول

ملاحظة

بالنسبة sql_text_sإلى ، سيتم اقتطاع السجل إذا تجاوز 2048 حرفا.

الخاصية الوصف
TenantId معرف المستأجر
SourceSystem Azure
TimeGenerated [UTC] الطابع الزمني عند تسجيل السجل بالتوقيت العالمي المنسق
Type نوع السجل. دوما AzureDiagnostics
SubscriptionId المعرف الفريد العمومي للاشتراك الذي ينتمي إليه الخادم
ResourceGroup اسم مجموعة الموارد التي ينتمي إليها الخادم
ResourceProvider اسم موفر المورد. دوما MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId URI للمورد
Resource اسم الخادم
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s اسم الخادم
event_class_s table_access_log
event_subclass_s READ، ، INSERTUPDATEأوDELETE
connection_id_d معرف اتصال فريد تم إنشاؤه بواسطة MySQL
db_s اسم قاعدة البيانات التي تم الوصول إليها
table_s اسم الجدول الذي تم الوصول إليه
sql_text_s نص الاستعلام الكامل
\_ResourceId URI للمورد

تحليل السجلات في Azure Monitor Logs

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

  • سرد الأحداث العامة على خادم معين

    AzureDiagnostics
    | where Resource  == '<your server name>'
    | where Category == 'MySqlAuditLogs' and event_class_s == "general_log"
    | project TimeGenerated, Resource, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s
    | order by TimeGenerated asc nulls last
    
  • سرد أحداث CONNECTION على خادم معين

    AzureDiagnostics
    | where Resource  == '<your server name>'
    | where Category == 'MySqlAuditLogs' and event_class_s == "connection_log"
    | project TimeGenerated, Resource, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s
    | order by TimeGenerated asc nulls last
    
  • تلخيص الأحداث التي تمت مراجعتها على خادم معين

    AzureDiagnostics
    | where Resource  == '<your server name>'
    | where Category == 'MySqlAuditLogs'
    | project TimeGenerated, Resource, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s
    | summarize count() by event_class_s, event_subclass_s, user_s, ip_s
    
  • Graph توزيع نوع حدث التدقيق على خادم معين

    AzureDiagnostics
    | where Resource  == '<your server name>'
    | where Category == 'MySqlAuditLogs'
    | project TimeGenerated, Resource, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s
    | summarize count() by Resource, bin(TimeGenerated, 5m)
    | render timechart
    
  • سرد الأحداث التي تم تدقيقها عبر جميع خوادم MySQL مع تمكين السجلات التشخيصية لسجلات التدقيق

    AzureDiagnostics
    | where Category == 'MySqlAuditLogs'
    | project TimeGenerated, Resource, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s
    | order by TimeGenerated asc nulls last
    

الخطوات التالية