Seguimiento de la actividad de base de datos con Registros de auditoría en el servidor flexible de Azure Database for MySQL
El Servidor flexible de Azure Database for MySQL proporciona a los usuarios la capacidad de configurar registros de auditoría. Los registros de auditoría se pueden usar para realizar un seguimiento de la actividad de nivel de base de datos, incluidos los eventos de conexión, administración, DDL y DML. Estos tipos de registros se usan normalmente para fines de cumplimiento.
Configuración del registro de auditoría
Importante
Se recomienda registrar solo los tipos de eventos y los usuarios necesarios para fines de auditoría para asegurarse de que el rendimiento del servidor no se ve muy afectado y se recopila una cantidad mínima de datos.
Los registros de auditoría están deshabilitados de forma predeterminada. Para habilitarlos, establezca el parámetro del servidor audit_log_enabled
en Activado. Para ello, se puede usar Azure Portal o la CLI de Azure.
Entre otros parámetros que se pueden ajustar para controlar el comportamiento del registro de auditoría se incluyen 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 queaudit_log_exclude_users
. La longitud máxima del parámetro es de 512 caracteres. Por ejemplo, el valor comodín dedev*
incluye a todos los usuarios con entradas a partir de la palabra clavedev
como "dev1,dev_user,dev_2". Otro ejemplo de entrada comodín para incluir al usuario es*dev
en este ejemplo, todos los usuarios que terminan con el valor "dev" como "stage_dev,prod_dev,user_dev" se incluyen en las entradas del registro de auditoría. Además, el uso de un signo de interrogación(?)
como carácter comodín se permite en patrones.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. También se aceptan entradas comodín para el usuario para excluir usuarios en los registros de auditoría. Por ejemplo, el valor comodín destage*
excluye a todos los usuarios con entradas a partir de la palabra clavestage
como "stage1,stage_user,stage_2". Otro ejemplo de entrada comodín para incluir al usuario es*com
en este ejemplo, todos los usuarios que terminan con el valorcom
se excluirán en las entradas del registro de auditoría. Además, el uso de un signo de interrogación(?)
como carácter comodín se permite en patrones.
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 |
- iniciación de conexión - Terminación de la conexión |
CONNECTION_V2 |
- Iniciación de la conexión (código de error de intento correcta o incorrecta) - 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 |
- Instrucciones de lectura de tablas como SELECT o INSERT INTO... SELECT - Instrucciones de eliminación de tablas, como DELETE o TRUNCATE TABLE - Instrucciones de inserción en tablas, 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 con la configuración de diagnóstico de Azure Monitor. Una vez que haya habilitado los registros de auditoría en el servidor flexible, puede enviarlos a los registros de Azure Monitor, Azure Event Hubs o Azure Storage. Para obtener más información acerca de la configuración de diagnóstico, vea la documentación de los registros de diagnóstico. Para obtener más información sobre cómo habilitar la configuración de diagnóstico en Azure Portal, vea 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.
En las secciones siguientes se describe la salida de los registros de auditoría de MySQL en función del tipo de evento. Dependiendo del método de salida, los campos incluidos y el orden en el que aparecen pueden variar.
Connection
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 en mayúsculas |
Category |
MySqlAuditLogs |
OperationName |
LogEvent |
LogicalServerName_s |
Nombre del servidor |
event_class_s |
connection_log |
event_subclass_s |
CONNECT , DISCONNECT , CHANGE USER |
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 |
status_d |
Entrada del código de error de conexión para el evento CONNECTIONS_V2. |
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_s
, 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 en mayúsculas |
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
Para sql_text_s
, 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 en mayúsculas |
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 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
Enumere eventos de CONNECTION_V2 en un servidor determinado, la columna
status_d
denota el código de error de la conexión de cliente que se enfrenta a la aplicación cliente mientras se conecta.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
Enumeración de los eventos de CONEXIÓN en un servidor determinado
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
Resumen de los eventos auditados en un servidor determinado
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
Representación de una distribución de tipo de evento de auditoría en un servidor concreto
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
Enumeración de eventos auditados en todas las instancias de servidor flexible de Azure Database for MySQL con registros de diagnóstico habilitados para los registros de auditoría
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