MySQL için Azure veritabanı 'nda denetim günlükleri

AŞAĞıDAKILER IÇIN GEÇERLIDIR: MySQL için Azure Veritabanı - Tek Sunucu

MySQL için Azure veritabanı 'nda, denetim günlüğü kullanıcılar tarafından kullanılabilir. Denetim günlüğü, veritabanı düzeyindeki etkinlikleri izlemek için ve genellikle uyumluluk için kullanılır.

Denetim günlüğünü yapılandırma

Önemli

Sunucunuzun performansının yoğun bir şekilde etkilenmemesini sağlamak için, yalnızca denetim amaçlarıyla gerekli olay türlerini ve kullanıcıları günlüğe kaydetmek önerilir.

Varsayılan olarak, denetim günlüğü devre dışıdır. Etkinleştirmek için, audit_log_enabled Açık olarak ayarlayın.

Ayarlayabileceğiniz diğer parametreler şunlardır:

  • audit_log_events: günlüğe kaydedilecek olayları denetler. Belirli denetim olayları için aşağıdaki tabloya bakın.
  • audit_log_include_users: Günlük kaydına eklenecek MySQL kullanıcıları. Bu parametre için varsayılan değer boştur; bu, günlüğe kaydedilecek tüm kullanıcıları içerir. Bunun önceliği daha yüksektir audit_log_exclude_users . Parametrenin uzunluk üst sınırı 512 karakterdir.
  • audit_log_exclude_users: MySQL kullanıcılarının günlüğe kaydetme dışında tutulması. Parametrenin uzunluk üst sınırı 512 karakterdir.

Not

audit_log_include_users daha yüksek önceliğe sahiptir audit_log_exclude_users . Örneğin, ve ise audit_log_include_users = demouser audit_log_exclude_users = demouser , Kullanıcı audit_log_include_users daha yüksek önceliğe sahip olduğu için denetim günlüklerine dahil edilir.

Olay Açıklama
CONNECTION -Bağlantı başlatma (başarılı veya başarısız)
-Oturum sırasında farklı kullanıcı/parola ile Kullanıcı yeniden kimlik doğrulaması
-Bağlantı sonlandırma
DML_SELECT Sorguları Seç
DML_NONSELECT EKLEME/SILME/GÜNCELLEŞTIRME sorguları
DML DML = DML_SELECT + DML_NONSELECT
DDL "VERITABANıNı bırak" gibi sorgular
DCL "Izın ver" gibi sorgular
ADMIN "Durumu göster" gibi sorgular
GENERAL DML_SELECT, DML_NONSELECT, DML, DDL, DCL ve ADMIN içinde tümü
TABLE_ACCESS -MySQL 5,7 ve MySQL 8,0 için kullanılabilir
-SELECT veya INSERT gibi tablo okuma deyimleri... SEÇIN
-DELETE veya TRUNCATE TABLE gibi tablo silme deyimleri
-INSERT veya REPLACE gibi tablo ekleme deyimleri
-UPDATE gibi tablo güncelleştirme deyimleri

Denetim günlüklerine erişme

Denetim günlükleri Azure İzleyici Tanılama Günlükleri ile tümleştirilir. MySQL sunucunuzda denetim günlüklerini etkinleştirdikten sonra bunları Azure İzleyici günlüklerine, Event Hubs’a veya Azure Depolama’ya yerleştirebilirsiniz. Azure portal tanılama günlüklerinin nasıl etkinleştirileceği hakkında daha fazla bilgi edinmek için Denetim günlüğü portalı makalesinebakın.

Tanılama günlükleri şemaları

Aşağıdaki bölümlerde, olay türüne göre MySQL denetim günlükleri tarafından yapılan çıktılar açıklanır. Çıkış yöntemine bağlı olarak, dahil edilen alanlar ve göründükleri sıralama farklılık gösterebilir.

Bağlantı

Özellik Açıklama
TenantId Kiracı KIMLIĞINIZ
SourceSystem Azure
TimeGenerated [UTC] Günlük kaydedildiği zaman damgası (UTC)
Type Günlüğün türü. Her AzureDiagnostics
SubscriptionId Sunucunun ait olduğu abonelik için GUID
ResourceGroup Sunucunun ait olduğu kaynak grubunun adı
ResourceProvider Kaynak sağlayıcının adı. Her MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId Kaynak URI 'SI
Resource Sunucunun adı
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s Sunucunun adı
event_class_s connection_log
event_subclass_s CONNECT, DISCONNECT , CHANGE USER (yalnızca MySQL 5,7 için kullanılabilir)
connection_id_d MySQL tarafından oluşturulan benzersiz bağlantı KIMLIĞI
host_s Boş
ip_s MySQL 'e bağlanan istemcinin IP adresi
user_s Sorguyu yürüten kullanıcının adı
db_s Bağlanılan veritabanının adı
\_ResourceId Kaynak URI 'SI

Genel

Aşağıdaki şema genel, DML_SELECT, DML_NONSELECT, DML, DDL, DCL ve yönetıcı olay türleri için geçerlidir.

Not

İçin sql_text , 2048 karakteri aşarsa günlük kesilecek.

Özellik Açıklama
TenantId Kiracı KIMLIĞINIZ
SourceSystem Azure
TimeGenerated [UTC] Günlük kaydedildiği zaman damgası (UTC)
Type Günlüğün türü. Her AzureDiagnostics
SubscriptionId Sunucunun ait olduğu abonelik için GUID
ResourceGroup Sunucunun ait olduğu kaynak grubunun adı
ResourceProvider Kaynak sağlayıcının adı. Her MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId Kaynak URI 'SI
Resource Sunucunun adı
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s Sunucunun adı
event_class_s general_log
event_subclass_s LOG, ERROR , RESULT (yalnızca MySQL 5,6 için kullanılabilir)
event_time UTC zaman damgasında sorgu başlangıç saati
error_code_d Sorgu başarısız olduysa hata kodu. 0 hata yok demektir
thread_id_d Sorguyu yürüten iş parçacığının KIMLIĞI
host_s Boş
ip_s MySQL 'e bağlanan istemcinin IP adresi
user_s Sorguyu yürüten kullanıcının adı
sql_text_s Tam sorgu metni
\_ResourceId Kaynak URI 'SI

Tablo erişimi

Not

Tablo erişim günlükleri yalnızca MySQL 5,7 için çıkışlardır.
İçin sql_text , 2048 karakteri aşarsa günlük kesilecek.

Özellik Açıklama
TenantId Kiracı KIMLIĞINIZ
SourceSystem Azure
TimeGenerated [UTC] Günlük kaydedildiği zaman damgası (UTC)
Type Günlüğün türü. Her AzureDiagnostics
SubscriptionId Sunucunun ait olduğu aboneliğin GUID'si
ResourceGroup Sunucunun ait olduğu kaynak grubunun adı
ResourceProvider Kaynak sağlayıcısının adı. Her zaman MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId Kaynak URI'sı
Resource Sunucunun adı
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s Sunucunun adı
event_class_s table_access_log
event_subclass_s READ, INSERT UPDATE , veya DELETE
connection_id_d MySQL tarafından oluşturulan benzersiz bağlantı kimliği
db_s Erişilen veritabanının adı
table_s Erişilen tablonun adı
sql_text_s Tam sorgu metni
\_ResourceId Kaynak URI'sı

Günlüklerde Azure İzleyici çözümleme

Denetim günlüklerinizi Tanılama Günlükleri aracılığıyla Azure İzleyici sonra, denetlenen olaylarınızı daha fazla analiz gerçekleştirebilirsiniz. Başlamanıza yardımcı olacak bazı örnek sorgular aşağıda verilmiştir. Aşağıdakini sunucu adınızla güncelleştirin.

  • Belirli bir sunucuda GENEL olayları listele

    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 
    
  • Belirli bir sunucuda CONNECTION olaylarını listele

    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
    
  • Belirli bir sunucuda denetlenen olayları özetleme

    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 sunucuda denetim olayı türü dağıtımını yapılandırma

    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 
    
  • Tanılama Günlükleri denetim günlükleri için etkinleştirildiğinde tüm MySQL sunucularında denetlenen olayları listele

    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
    

Sonraki adımlar