Registros de auditoría en Azure Database for MySQL

SE APLICA A: Azure Database for MySQL: Servidor único

Importante

El servidor único de Azure Database for MySQL está en la ruta de retirada. Se recomienda encarecidamente actualizar al servidor flexible de Azure Database for MySQL. Para más información sobre la migración al servidor flexible de Azure Database for MySQL, consulte ¿Qué ocurre con Azure Database for MySQL con servidor único?

Los usuarios tienen disponible el registro de auditoría en Azure Database for MySQL. El registro de auditoría se puede usar para realizar un seguimiento de la actividad a nivel de la base de datos y se usa normalmente para cumplimiento.

Configuración del registro de auditoría

Importante

Se recomienda registrar solo los tipos de evento y los usuarios necesarios con fines de auditoría para asegurarse de que el rendimiento del servidor no se ve afectado en gran medida y que se recopila una cantidad mínima de datos.

De forma predeterminada, el registro de auditoría está deshabilitado. Para habilitarlo, cambie audit_log_enabled a Activado.

Otros parámetros que se pueden ajustar son los siguientes:

  • audit_log_events: controla los eventos que se registrarán. Consulte la tabla a continuación para ver los eventos de auditoría específicos.
  • audit_log_include_users: Usuarios de MySQL que se incluirán para el registro. El valor predeterminado de este parámetro es estar vacío, lo que incluirá todos los usuarios en el registro. Este tiene una mayor prioridad que audit_log_exclude_users. La longitud máxima del parámetro es de 512 caracteres.
  • audit_log_exclude_users: Los usuarios de MySQL que se excluirán del registro. La longitud máxima del parámetro es de 512 caracteres.

Nota

audit_log_include_users tiene mayor prioridad sobre audit_log_exclude_users. Por ejemplo, si audit_log_include_users = demouser y audit_log_exclude_users = demouser, el usuario se incluirá en los registros de auditoría porque audit_log_include_users tiene mayor prioridad.

Evento Descripción
CONNECTION - inicio de Conectar ión (correcto o incorrecto)
- Reautenticación de usuarios con diferentes usuarios o contraseñas durante la sesión
- Terminación de la conexión
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 Todos en DML_SELECT, DML_NONSELECT, DML, DDL, DCL y ADMIN
TABLE_ACCESS - Disponible para MySQL 5.7 y MySQL 8.0
- Instrucciones de lectura de tabla, como SELECT o INSERT INTO ... SELECCIONE
- Instrucciones delete de tabla, como DELETE o TRUNCATE TABLE
- Instrucciones insert de tabla, como INSERT o REPLACE
- Instrucciones de actualización de tablas, como UPDATE

Acceso a registros de auditoría

Los registros de auditoría están integrados en los registros de diagnóstico de Azure Monitor. Una vez que haya habilitado los registros de auditoría en el servidor de MySQL, puede enviarlos a los registros de Azure Monitor, Event Hubs o Azure Storage. Para obtener más información sobre cómo habilitar los registros de diagnóstico en Azure Portal, consulte el artículo sobre registros de auditoría en el portal.

Nota

Las cuentas de Premium Storage no se admiten si envía los registros a Azure Storage a través de diagnósticos y configuración.

Esquemas de registros de diagnóstico

En las secciones siguientes se describe lo que generan los registros de auditoría de MySQL en función del tipo de evento. En función del método de salida que elija, pueden variar los campos incluidos y el orden en el que aparecen.

Conexión

Propiedad Descripción
TenantId El identificador de inquilino
SourceSystem Azure
TimeGenerated [UTC] Marca de tiempo de cuando se grabó el registro en UTC
Type Tipo del registro. Siempre AzureDiagnostics
SubscriptionId GUID de la suscripción a la que pertenece el servidor
ResourceGroup Nombre del grupo de recursos al que pertenece el servidor
ResourceProvider Nombre del proveedor de recursos Siempre MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId URI de recurso
Resource Nombre del servidor
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s Nombre del servidor
event_class_s connection_log
event_subclass_s CONNECT, DISCONNECT, CHANGE USER (solo disponible para MySQL 5.7)
connection_id_d Identificador único de conexión generado por MySQL
host_s En blanco
ip_s Dirección IP del cliente que se conecta a MySQL
user_s Nombre del usuario que ejecuta la consulta
db_s Nombre de la base de datos a la que se conecta
\_ResourceId URI de recurso

General

El esquema siguiente se aplica a los tipos de evento GENERAL, DML_SELECT, DML_NONSELECT, DML, DDL, DCL y ADMIN.

Nota

Para sql_text, el registro se truncará si supera los 2048 caracteres.

Propiedad Descripción
TenantId El identificador de inquilino
SourceSystem Azure
TimeGenerated [UTC] Marca de tiempo de cuando se grabó el registro en UTC
Type Tipo del registro. Siempre AzureDiagnostics
SubscriptionId GUID de la suscripción a la que pertenece el servidor
ResourceGroup Nombre del grupo de recursos al que pertenece el servidor
ResourceProvider Nombre del proveedor de recursos Siempre MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId URI de recurso
Resource Nombre del servidor
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s Nombre del servidor
event_class_s general_log
event_subclass_s LOG, ERROR, RESULT (solo disponible para MySQL 5.6)
event_time Hora de inicio de la consulta en marca de tiempo UTC
error_code_d Código de error si la consulta no es correcta. 0 significa que no hay error
thread_id_d Id. del subproceso que ejecutó la consulta
host_s En blanco
ip_s Dirección IP del cliente que se conecta a MySQL
user_s Nombre del usuario que ejecuta la consulta
sql_text_s Texto de la consulta completa
\_ResourceId URI de recurso

Acceso a la tabla

Nota

Los registros de acceso a tablas solo se muestran en MySQL 5.7.
Para sql_text, el registro se truncará si supera los 2048 caracteres.

Propiedad Descripción
TenantId El identificador de inquilino
SourceSystem Azure
TimeGenerated [UTC] Marca de tiempo de cuando se grabó el registro en UTC
Type Tipo del registro. Siempre AzureDiagnostics
SubscriptionId GUID de la suscripción a la que pertenece el servidor
ResourceGroup Nombre del grupo de recursos al que pertenece el servidor
ResourceProvider Nombre del proveedor de recursos Siempre MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId URI de recurso
Resource Nombre del servidor
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s Nombre del servidor
event_class_s table_access_log
event_subclass_s READ, INSERT, UPDATE o DELETE
connection_id_d Identificador único de conexión generado por MySQL
db_s Nombre de la base de datos a la que se accede
table_s Nombre de la tabla a la que se accede
sql_text_s Texto de la consulta completa
\_ResourceId URI de recurso

Análisis de registros en los registros de Azure Monitor

Una vez que los registros de auditoría se canalizan a los registros de Azure Monitor a través de registros de diagnóstico, puede realizar un análisis en mayor profundidad de sus eventos auditados. A continuación encontrará algunas consultas de ejemplo que le ayudarán a ponerse en marcha. Asegúrese de que actualizar los datos siguientes con el nombre del servidor.

  • Enumeración de los eventos GENERALES en un servidor determinado

    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 
    
  • Enumeración de los eventos de CONEXIÓN en un servidor determinado

    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
    
  • Resumen de los eventos auditados en un servidor determinado

    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
    
  • Representación de una distribución de tipo de evento de auditoría en un servidor concreto

    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 
    
  • Enumeración de los eventos auditados en todos los servidores de MySQL con registros de diagnóstico habilitados para los registros de auditoría

    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
    

Pasos siguientes