Acompanhe a atividade do banco de dados com Logs de Auditoria no 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 rastrear a atividade no nível do banco de dados, incluindo eventos de conexão, admin, DDL e DML. Estes tipos de registos são frequentemente utilizados 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 para garantir que o desempenho do servidor não seja fortemente afetado e que uma quantidade mínima de dados seja coletada.
Por padrão, os logs de auditoria são desabilitados. Para habilitá-los, defina o audit_log_enabled
parâmetro server como ON. Isso pode ser configurado usando o portal do Azure ou a 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. 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. Por exemplo, o valor curinga dedev*
inclui todos os usuários com entradas começando com palavra-chavedev
como "dev1,dev_user,dev_2". Outro exemplo de entrada curinga para incluir 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. 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 palavra-chavestage
como "stage1,stage_user,stage_2". Outro exemplo de entrada curinga para exclusão de usuário é*com
neste exemplo, todos os usuários que terminam com 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.
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 - Terminação da ligação |
CONNECTION_V2 |
- Início da conexão (código de erro de tentativa bem-sucedida ou malsucedida) - 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 |
- 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 logs de auditoria são integrados às configurações de diagnóstico do Azure Monitor. Depois de habilitar os logs de auditoria em seu servidor flexível, você pode emiti-los para logs do Azure Monitor, Hubs de Eventos do Azure ou Armazenamento do Azure. Para saber mais sobre as configurações de diagnóstico, consulte a documentação de logs de diagnóstico. Para saber mais sobre como habilitar as configurações 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.
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.
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 em 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 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 |
status_d |
Entrada de código de erro de conexão para CONNECTIONS_V2 evento. |
Geral
O esquema abaixo se aplica aos tipos de eventos GENERAL, DML_SELECT, DML_NONSELECT, DML, DDL, DCL e ADMIN.
Nota
Para sql_text_s
, 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 em maiúsculas |
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
Para sql_text_s
, 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 em 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 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 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 CONNECTION_V2 eventos em um determinado servidor,
status_d
a coluna indica o código de erro de 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 CONNECTION 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 graficamente a distribuição do 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