Monitores as atividades do banco de dados com os Logs de Auditoria do Banco de Dados do Azure para MySQL — Servidor Flexível.
O servidor flexível do Banco de Dados do Azure para MySQL fornece aos usuários a capacidade de configurar logs de auditoria. Os logs de auditoria podem ser usados para acompanhar a atividade no nível do banco de dados, incluindo eventos de conexão, administração, DDL e DML. Esses tipos de logs são comumente usados para fins de conformidade.
Configurar logs de auditoria
Importante
Recomenda-se registrar apenas os tipos de eventos e os usuários necessários para fins de auditoria, garantindo que o desempenho do servidor não seja muito afetado e que seja coletada uma quantidade mínima de dados.
Por padrão, os logs de auditoria estão desabilitados. Para habilitá-los, defina o parâmetro de servidor audit_log_enabled
como ATIVADO. Isso pode ser configurado por meio do portal do Azure ou da CLI do Azure.
Outros parâmetros que você pode ajustar para controlar o comportamento do log de auditoria incluem:
audit_log_events
: controla os eventos a serem registrados em log. Confira a tabela abaixo para ver eventos de auditoria específicos.audit_log_include_users
: usuários do MySQL a serem incluídos para registro em log. O valor padrão para esse parâmetro é vazio, o que incluirá todos os usuários para registro em log. Isso tem prioridade mais alta em relação aaudit_log_exclude_users
. O parâmetro pode ter até 512 caracteres. Por exemplo, o valor curinga dedev*
inclui todos os usuários com entradas começando com a palavra-chavedev
, como “dev1,dev_user,dev_2”. Outro exemplo de entrada curinga para incluir um usuário é*dev
. Neste exemplo, todos os usuários que terminam com o valor “dev”, como “stage_dev,prod_dev,user_dev” são incluídos nas entradas do log de auditoria. Além disso, o uso de um ponto de interrogação(?)
como caractere curinga é permitido em padrões.audit_log_exclude_users
: usuários do MySQL a serem excluídos do registro em log. O comprimento máximo do parâmetro é de 512 caracteres. Entradas curinga para usuário também são aceitas para excluir usuários em logs de auditoria. Por exemplo, o valor curinga destage*
exclui todos os usuários com entradas começando com a palavra-chavestage
, como “stage1,stage_user,stage_2”. Outro exemplo de entrada curinga para excluir um usuário é*com
. Neste exemplo, todos os usuários que terminarem com o valorcom
serão excluídos das entradas do log de auditoria. Além disso, o uso de um ponto de interrogação(?)
como caractere curinga é permitido em padrões.
Observação
audit_log_include_users
tem prioridade mais alta em relação a 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 – Encerramento da conexão |
CONNECTION_V2 |
– Início da conexão (código de erro de tentativa bem-sucedida ou malsucedida) – Encerramento da conexão |
DML_SELECT |
Consultas SELECT |
DML_NONSELECT |
Consultas INSERT/DELETE/UPDATE |
DML |
DML = DML_SELECT + DML_NONSELECT |
DDL |
Consultas como "DROP DATABASE" |
DCL |
Consultas como "GRANT PERMISSION" |
ADMIN |
Consultas como "SHOW STATUS" |
GENERAL |
Tudo em DML_SELECT, DML_NONSELECT, DML, DDL, DCL, e ADMIN |
TABLE_ACCESS |
– Instruções de leitura de tabela, como SELECT ou INSERT INTO ... SELECT – 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 |
Acesse os logs de auditoria
Os logs de auditoria são integrados com as configurações de diagnóstico do Azure Monitor. Depois de habilitar os logs de auditoria no servidor flexível, você poderá emiti-los para os logs do Azure Monitor, Hubs de Eventos do Azure ou Armazenamento do Microsoft Azure. Para saber mais sobre as configurações de diagnóstico, confira o artigo documentação dos logs de diagnóstico. Para saber mais sobre como habilitar as configurações de diagnóstico no portal do Azure, confira o artigo sobre o portal de log de auditoria.
Observação
Não há suporte para contas de Armazenamento Premium se você envia os logs para o armazenamento do Azure por meio de diagnóstico e configurações.
As seções a seguir descrevem a saída dos 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.
Conexão
Propriedade | Descrição |
---|---|
TenantId |
Sua ID de locatário |
SourceSystem |
Azure |
TimeGenerated [UTC] |
Carimbo de data/hora quando o log foi gravado, em UTC |
Type |
Tipo do log. Sempre AzureDiagnostics |
SubscriptionId |
GUID para a assinatura a que 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 de recurso |
Resource |
Nome do servidor em letras maiúsculas |
Category |
MySqlAuditLogs |
OperationName |
LogEvent |
LogicalServerName_s |
Nome do servidor |
event_class_s |
connection_log |
event_subclass_s |
CONNECT , DISCONNECT , CHANGE USER |
connection_id_d |
ID de conexão exclusiva gerada pelo MySQL |
host_s |
Em branco |
ip_s |
Endereço IP do cliente que está se conectando ao MySQL |
user_s |
Nome do usuário que está executando a consulta |
db_s |
Nome do banco de dados conectado a |
\_ResourceId |
URI de recurso |
status_d |
Entrada do código de erro de conexão para o evento CONNECTIONS_V2. |
Geral
O esquema abaixo se aplica aos tipos de evento GENERAL, DML_SELECT, DML_NONSELECT, DML, DDL, DCL e ADMIN.
Observação
Para sql_text_s
, o log será truncado se exceder 2048 caracteres.
Propriedade | Descrição |
---|---|
TenantId |
Sua ID de locatário |
SourceSystem |
Azure |
TimeGenerated [UTC] |
Carimbo de data/hora quando o log foi gravado, em UTC |
Type |
Tipo do log. Sempre AzureDiagnostics |
SubscriptionId |
GUID para a assinatura a que 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 de recurso |
Resource |
Nome do servidor em letras maiúsculas |
Category |
MySqlAuditLogs |
OperationName |
LogEvent |
LogicalServerName_s |
Nome do servidor |
event_class_s |
general_log |
event_subclass_s |
LOG , ERROR , RESULT (disponível somente 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 nenhum erro |
thread_id_d |
ID do thread que executou a consulta |
host_s |
Em branco |
ip_s |
Endereço IP do cliente que está se conectando ao MySQL |
user_s |
Nome do usuário que está executando a consulta |
sql_text_s |
Texto completo da consulta |
\_ResourceId |
URI de recurso |
Acesso à tabela
Observação
Para sql_text_s
, o log será truncado se exceder 2048 caracteres.
Propriedade | Descrição |
---|---|
TenantId |
Sua ID de locatário |
SourceSystem |
Azure |
TimeGenerated [UTC] |
Carimbo de data/hora quando o log foi gravado, em UTC |
Type |
Tipo do log. Sempre AzureDiagnostics |
SubscriptionId |
GUID para a assinatura a que 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 de recurso |
Resource |
Nome do servidor em letras maiúsculas |
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 exclusiva gerada pelo MySQL |
db_s |
Nome do banco de dados acessado |
table_s |
Nome da tabela acessada |
sql_text_s |
Texto completo da consulta |
\_ResourceId |
URI de recurso |
Analisar logs nos Logs do Azure Monitor
Depois que os logs de auditoria são canalizados para os Logs do Azure Monitor por meio dos Logs de Diagnóstico, você pode fazer análises adicionais dos eventos auditados. Abaixo estão algumas consultas de exemplo para ajudar você a começar. Atualize as informações abaixo com o nome do servidor.
Listar eventos GERAIS em um servidor específico
AzureDiagnostics | where Resource == '<your server name>' //Server name must be in Upper case | 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
Listar eventos CONNECTION_V2 em um servidor específico, a coluna
status_d
denota o código de erro da conexão do cliente enfrentado pelo aplicativo cliente durante a conexão.AzureDiagnostics | where Resource == '<your server name>' //Server name must be in Upper case | where Category == 'MySqlAuditLogs' and event_subclass_s == "CONNECT" | project TimeGenerated, Resource, event_class_s, event_subclass_s, user_s, ip_s, status_d | order by TimeGenerated asc nulls last
Listar eventos de CONEXÃO em um servidor específico
AzureDiagnostics | where Resource == '<your server name>' //Server name must be in Upper case | 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
Resumir eventos auditados em um servidor específico
AzureDiagnostics | where Resource == '<your server name>' //Server name must be in Upper case | 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
Representar em gráfico a distribuição de tipo de evento de auditoria em um servidor específico
AzureDiagnostics | where Resource == '<your server name>' //Server name must be in Upper case | 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
Listar eventos auditados em todas as instâncias do servidor flexível do Banco de Dados do Azure para MySQL com Logs de Diagnóstico habilitados para logs de auditoria
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