سجلات التدقيق في قاعدة بيانات Azure لـ MySQL

تُطبق على: قاعدة بيانات Azure للخادم الوحيد الخاص بـ MySQL

هام

قاعدة بيانات Azure لخادم MySQL الفردي على مسار الإيقاف. نوصي بشدة بالترقية إلى قاعدة بيانات Azure لخادم MySQL المرن. لمزيد من المعلومات حول الترحيل إلى خادم Azure Database for MySQL المرن، راجع ما الذي يحدث لقاعدة بيانات Azure لخادم MySQL الفردي؟

في قاعدة بيانات Azure Database لـ MySQL، يوجد سجل تدقيق متاح للمستخدمين. يمكن استخدام سجل التدقيق لتعقب نشاط مستوى قاعدة البيانات ويستخدم عادة للامتثال.

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

هام

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

بشكل افتراضي، يُعطل سجل التدقيق. لتمكينه، قم بتعيين audit_log_enabled إلى «تشغيل».

تتضمن المعلمات الأخرى التي يمكنك ضبطها ما يلي:

  • 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 وaudit_log_exclude_users = demouser، سيتم تضمين المستخدم في سجلات التدقيق لأن audit_log_include_users له أولوية أعلى.

الحدث الوصف
CONNECTION - بدء الاتصال (ناجح أو غير ناجح)
- إعادة مصادقة المستخدم باستخدام مستخدم/كلمة مرور مختلفة أثناء الجلسة
- إنهاء الاتصال
DML_SELECT تحديد الاستعلامات
DML_NONSELECT إدراج/حذف/تحديث الاستعلامات
DML DML = DML_SELECT + DML_NONSELECT
DDL استعلامات مثل "DROP DATABASE"
DCL استعلامات مثل "GRANT PERMISSION"
ADMIN استعلامات مثل "SHOW STATUS"
GENERAL الكل في DML_SELECT DML_NONSELECT وDML وDDL وDCL والمسؤول
TABLE_ACCESS - متوفر ل MySQL 5.7 وMySQL 8.0
- عبارات قراءة الجدول، مثل SELECT أو INSERT INTO ... حدد
- عبارات حذف الجدول، مثل DELETE أو TRUNCATE TABLE
- عبارات إدراج الجدول، مثل INSERT أو REPLACE
-عبارات تحديث الجدول مثل UPDATE

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

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

إشعار

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

مخططات سجلات التشخيص

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

Connection

الخاصية الوصف
TenantId معرف المستأجر
SourceSystem Azure
TimeGenerated [UTC] الطابع الزمني عندما تم تسجيل السجل في 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 (مُتاحة فقط لـ MySQL 5.7)
connection_id_d معرف اتصال فريد تم إنشاؤه بواسطة MySQL
host_s فارغ
ip_s عنوان IP للعميل المتصل بـ MySQL
user_s اسم المستخدم المنفذ الاستعلام
db_s اسم قاعدة البيانات المتصلة بـ
\_ResourceId URI للمورد

عام

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

إشعار

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

الخاصية الوصف
TenantId معرف المستأجر
SourceSystem Azure
TimeGenerated [UTC] الطابع الزمني عندما تم تسجيل السجل في 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 للمورد

الوصول للجدول

إشعار

سجلات الوصول للجدول هي إخراج فقط ل MySQL 5.7.
بالنسبة إلى sql_text، سوف يتم اقتطاع السجل إذا تجاوز 2048 حرفا.

الخاصية الوصف
TenantId معرف المستأجر
SourceSystem Azure
TimeGenerated [UTC] الطابع الزمني عندما تم تسجيل السجل في 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, INSERT, UPDATE, أو DELETE
connection_id_d معرف اتصال فريد تم إنشاؤه بواسطة MySQL
db_s اسم قاعدة البيانات التي تم الوصول لها
table_s اسم الجدول الذي تم الوصول له
sql_text_s نص استعلام كامل
\_ResourceId URI للمورد

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

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

  • أحداث List GENERAL على خادم معين

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

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

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

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

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