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 oaudit_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 não) - 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 , DISCONNECT , CHANGE USER (disponível apenas para o 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 , ERROR , RESULT (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 , INSERT , UPDATE , ou DELETE |
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