Logs de auditoria no Banco de Dados do Azure para MySQL

APLICA-SE A: Banco de Dados do Azure para MySQL - Servidor Único

Importante

O servidor único do Banco de Dados do Azure para MySQL está no caminho de desativação. É altamente recomendável que você atualize para o Banco de Dados do Azure para o servidor flexível MySQL. Para obter mais informações sobre como migrar para o Banco de Dados do Azure para servidor flexível MySQL, consulte O que está acontecendo com o Banco de Dados do Azure para Servidor Único MySQL?

No Banco de Dados do Azure para MySQL, o log de auditoria está disponível para os usuários. O log de auditoria pode ser usado para rastrear a atividade no nível do banco de dados e é comumente usado para fins de conformidade.

Configurar log de auditoria

Importante

Recomenda-se registrar apenas os tipos de eventos e usuários necessários para fins de auditoria, a fim de garantir que o desempenho do servidor não seja fortemente afetado e que a quantidade mínima de dados seja coletada.

Por padrão, o log de auditoria está desativado. Para habilitá-lo, defina audit_log_enabled como ON.

Outros parâmetros que você pode ajustar incluem:

  • audit_log_events: Controla os eventos a serem registrados. Consulte a tabela abaixo para eventos de auditoria específicos.
  • audit_log_include_users: Usuários do MySQL a serem incluídos para registro. O valor padrão para esse parâmetro é vazio, que incluirá todos os usuários para registro. Isto tem maior prioridade sobre o audit_log_exclude_users. O comprimento máximo do parâmetro é de 512 caracteres.
  • audit_log_exclude_users: Usuários do MySQL a serem excluídos do registro. O comprimento máximo do parâmetro é de 512 caracteres.

Nota

audit_log_include_users tem maior prioridade sobre audit_log_exclude_users. Por exemplo, se audit_log_include_users = demouser e audit_log_exclude_users = demouser, o usuário será incluído nos logs de auditoria porque audit_log_include_users tem prioridade mais alta.

Evento Descrição
CONNECTION - Início da conexão (bem-sucedida ou malsucedida)
- Reautenticação do usuário com usuário / senha diferente durante a sessão
- Terminação da ligação
DML_SELECT SELECIONAR consultas
DML_NONSELECT Consultas INSERIR/EXCLUIR/ATUALIZAR
DML DML = DML_SELECT + DML_NONSELECT
DDL Consultas como "DROP DATABASE"
DCL Consultas como "CONCEDER PERMISSÃO"
ADMIN Consultas como "MOSTRAR STATUS"
GENERAL Tudo em DML_SELECT, DML_NONSELECT, DML, DDL, DCL e ADMIN
TABLE_ACCESS - Disponível para MySQL 5.7 e MySQL 8.0
- Instruções de leitura de tabela, como SELECT ou INSERT INTO ... SELECIONAR
- Instruções de exclusão de tabela, como DELETE ou TRUNCATE TABLE
- Instruções de inserção de tabela, como INSERT ou REPLACE
- Instruções de atualização de tabela, como UPDATE

Aceder aos registos de auditoria

Os registos de auditoria estão integrados nos Registos de Diagnósticos do Azure Monitor. Depois de ter ativado os registos de auditoria no servidor MySQL, pode emiti-los para os registos do Azure Monitor, os Hubs de Eventos ou o Armazenamento Azure. Para saber mais sobre como habilitar logs de diagnóstico no portal do Azure, consulte o artigo do portal de log de auditoria.

Nota

As contas de Armazenamento Premium não são suportadas se enviar os registos para o armazenamento do Azure através de diagnósticos e definições

Esquemas de logs de diagnóstico

As seções a seguir descrevem o que é gerado pelos logs de auditoria do MySQL com base no tipo de evento. Dependendo do método de saída, os campos incluídos e a ordem em que aparecem podem variar.

Connection

Propriedade Descrição
TenantId O seu ID de inquilino
SourceSystem Azure
TimeGenerated [UTC] Carimbo de data/hora quando o log foi gravado em UTC
Type Tipo de log. Sempre AzureDiagnostics
SubscriptionId GUID para a assinatura à qual o servidor pertence
ResourceGroup Nome do grupo de recursos ao qual o servidor pertence
ResourceProvider Nome do provedor de recursos. Sempre MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId URI do recurso
Resource Nome do servidor
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s Nome do servidor
event_class_s connection_log
event_subclass_s CONNECT, , DISCONNECTCHANGE USER (disponível apenas para MySQL 5.7)
connection_id_d ID de conexão exclusivo gerado pelo MySQL
host_s Em branco
ip_s Endereço IP do cliente que se conecta ao MySQL
user_s Nome do usuário que executa a consulta
db_s Nome da base de dados ligada a
\_ResourceId URI do recurso

Geral

O esquema abaixo se aplica aos tipos de eventos GENERAL, DML_SELECT, DML_NONSELECT, DML, DDL, DCL e ADMIN.

Nota

Para sql_text, o log será truncado se exceder 2048 caracteres.

Propriedade Descrição
TenantId O seu ID de inquilino
SourceSystem Azure
TimeGenerated [UTC] Carimbo de data/hora quando o log foi gravado em UTC
Type Tipo de log. Sempre AzureDiagnostics
SubscriptionId GUID para a assinatura à qual o servidor pertence
ResourceGroup Nome do grupo de recursos ao qual o servidor pertence
ResourceProvider Nome do provedor de recursos. Sempre MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId URI do recurso
Resource Nome do servidor
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s Nome do servidor
event_class_s general_log
event_subclass_s LOG, , ERRORRESULT (disponível apenas para MySQL 5.6)
event_time Hora de início da consulta no carimbo de data/hora UTC
error_code_d Código de erro se a consulta falhar. 0 significa que não há erro
thread_id_d ID do thread que executou a consulta
host_s Em branco
ip_s Endereço IP do cliente que se conecta ao MySQL
user_s Nome do usuário que executa a consulta
sql_text_s Texto completo da consulta
\_ResourceId URI do recurso

Acesso à mesa

Nota

Os logs de acesso à tabela são apenas saídas para o MySQL 5.7.
Para sql_text, o log será truncado se exceder 2048 caracteres.

Propriedade Descrição
TenantId O seu ID de inquilino
SourceSystem Azure
TimeGenerated [UTC] Carimbo de data/hora quando o log foi gravado em UTC
Type Tipo de log. Sempre AzureDiagnostics
SubscriptionId GUID para a assinatura à qual o servidor pertence
ResourceGroup Nome do grupo de recursos ao qual o servidor pertence
ResourceProvider Nome do provedor de recursos. Sempre MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId URI do recurso
Resource Nome do servidor
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s Nome do servidor
event_class_s table_access_log
event_subclass_s READ, , , INSERTUPDATEouDELETE
connection_id_d ID de conexão exclusivo gerado pelo MySQL
db_s Nome da base de dados acedida
table_s Nome da tabela acessada
sql_text_s Texto completo da consulta
\_ResourceId URI do recurso

Analisar logs nos Logs do Azure Monitor

Depois que seus logs de auditoria são canalizados para os Logs do Azure Monitor por meio dos Logs de Diagnóstico, você pode executar análises adicionais de seus eventos auditados. Abaixo estão alguns exemplos de consultas para ajudá-lo a começar. Certifique-se de atualizar o abaixo com o nome do servidor.

  • Listar eventos GERAIS em um servidor específico

    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 
    
  • Listar eventos CONNECTION em um servidor específico

    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
    
  • Resumir eventos auditados em um servidor específico

    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
    
  • Representar graficamente a distribuição do tipo de evento de auditoria em um servidor específico

    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 
    
  • Listar eventos auditados em todos os servidores MySQL com Logs de Diagnóstico habilitados para logs de auditoria

    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
    

Próximos passos