Auditoría de bases de datos de SQL Server

En esta página se describe la auditoría de bases de datos en Cloud SQL mediante la funcionalidad de SQL Server Audit.

Información general

En Cloud SQL, las funciones de auditoría de SQL Server incluyen lo siguiente:

  • Crear especificaciones de auditoría de servidor
  • Registrar y monitorizar eventos a nivel de servidor y de base de datos

Para obtener más información sobre las funciones de Auditoría de SQL Server, consulta Auditoría de SQL Server (motor de base de datos).

Antes de empezar

Antes de habilitar la auditoría de bases de datos, revisa los requisitos previos de esta sección.

Segmento de Cloud Storage para archivos de auditoría

Los archivos de auditoría (registros de auditoría) se suben a una ubicación de segmento de Cloud Storage. Por lo tanto, es posible que tengas que crear un bucket propiedad de tu cuenta de Google Cloud.

También puedes usar una ubicación de un contenedor que pertenezca a otra cuenta. Cuando habilitas la auditoría, si tienes los permisos necesarios, se concede automáticamente el roles/storage.objectAdmin rol para subir archivos de auditoría a la ubicación del segmento de la cuenta de servicio correspondiente. Si no tienes los permisos necesarios, debes concedérselos a la cuenta de servicio más adelante.

Usuario válido para habilitar la auditoría

Para habilitar la auditoría y crear especificaciones de auditoría, debe estar disponible el usuario sqlserver predeterminado. Cuando creaste una instancia de Cloud SQL para SQL Server, se creó automáticamente el usuario sqlserver predeterminado.

Habilitar la auditoría

Cuando habilitas la auditoría, se necesita una ubicación de Cloud Storage. Los siguientes elementos son opcionales:

  • El periodo de conservación de los registros de la instancia
  • El intervalo de subida (frecuencia de subida)

Consola

  1. En la Google Cloud consola, ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. Para abrir la página Vista general de una instancia, haz clic en su nombre.
  3. Haz clic en Editar.
  4. En la sección Personalizar tu instancia, haz clic en Marcas y parámetros.
  5. Marca la casilla situada junto a Habilitar auditoría de SQL Server.
  6. Especifica un segmento de Cloud Storage como ubicación a la que se subirán los archivos de auditoría.
  7. Haz clic en Advanced options (Opciones avanzadas).
  8. De forma opcional, especifica el número de días que quieres que se conserven los registros (entre 1 y 7 días; 7 días es el valor predeterminado).
  9. Opcionalmente, especifica la frecuencia con la que se subirán los registros (archivos de auditoría) en minutos. (entre 1 y 720 minutos; el valor predeterminado es 10 minutos).
  10. Haz clic en Guardar para aplicar los cambios.

gcloud

El siguiente comando habilita la auditoría:

gcloud sql instances patch INSTANCE_NAME --audit-bucket-path=gs://my-bucket --audit-retention-interval=24h --audit-upload-interval=10m

En la tabla siguiente se resumen los parámetros gcloud de esta operación:

Parámetro Descripción Valores permitidos Valor predeterminado
--audit-bucket-path Obligatorio. Ubicación, como un segmento de Cloud Storage, en la que se suben los archivos de auditoría. Está vacío si la auditoría está inhabilitada. De lo contrario, una ruta de un contenedor que empiece por: gs:// Está vacío porque, de forma predeterminada, la auditoría está inhabilitada.
--audit-retention-interval Opcional. Número de días que se conservan los registros de auditoría en el disco. Entre 1 y 7 días. Solo se permiten días. 7 días.
--audit-upload-interval Opcional. Con qué frecuencia se suben los registros de auditoría (archivos de auditoría). De 1 a 720 minutos. 10 minutos.

REST v1

Con la API REST, puede habilitar la auditoría de una instancia. Como se muestra en el prototipo de solicitud siguiente, puede especificar un segmento de Cloud Storage, un número de días para la conservación de los archivos de auditoría y una frecuencia para la subida de los archivos de auditoría. Solo es obligatorio indicar la ubicación del segmento. Para obtener más información, consulta SqlServerAuditConfig:

{
   "databaseVersion":"database-version",
   "name":"instance-id",
   "region":"region",
   "rootPassword":"password",
   "settings":{
      "tier":"machine-type",
      "sqlServerAuditConfig":{
         "bucket":"gs://mybucket",
         "retentionInterval":"24h",
         "uploadInterval":"10m"
      }
   }
}

REST v1beta4

Con la API REST, puede habilitar la auditoría de una instancia. Como se muestra en el prototipo de solicitud siguiente, puede especificar un segmento de Cloud Storage, un número de días para la conservación de los archivos de auditoría y una frecuencia para la subida de los archivos de auditoría. Solo es obligatorio indicar la ubicación del segmento. Para obtener más información, consulta SqlServerAuditConfig:

{
   "databaseVersion":"database-version",
   "name":"instance-id",
   "region":"region",
   "rootPassword":"password",
   "settings":{
      "tier":"machine-type",
      "sqlServerAuditConfig":{
         "bucket":"gs://mybucket",
         "retentionInterval":"24h",
         "uploadInterval":"10m"
      }
   }
}

Inhabilitar la auditoría

En esta sección se incluyen las opciones para inhabilitar la auditoría. Cuando inhabilitas la auditoría, todos los archivos de auditoría, incluidos los que aún no se han subido, se eliminan de la instancia. Además, todas las auditorías del servidor están inhabilitadas y deben volver a habilitarse si se quiere reanudar la auditoría. Es posible que los registros de auditoría que se hayan subido al segmento de Cloud Storage permanezcan en él, en función de los ajustes de conservación que hayas configurado para el segmento.

Estas son las opciones para inhabilitar la auditoría.

Consola

  1. En la Google Cloud consola, ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. Para abrir la página Vista general de una instancia, haz clic en su nombre.
  3. Haz clic en Editar.
  4. En la sección Personalizar tu instancia, haz clic en Marcas y parámetros.
  5. Desmarca la casilla situada junto a Habilitar auditoría de SQL Server.
  6. Haz clic en Guardar para aplicar los cambios.

gcloud

El siguiente comando, que omite un valor para el parámetro --audit-bucket-path, inhabilita la auditoría:

gcloud sql instances patch INSTANCE_NAME --audit-bucket-path=

REST v1

A continuación se muestra un prototipo de solicitud para inhabilitar la auditoría, en el que se omiten los campos del objeto sqlServerAuditConfig:

{
   "databaseVersion":"database-version",
   "name":"instance-id",
   "region":"region",
   "rootPassword":"password",
   "settings":{
      "tier":"machine-type",
      "sqlServerAuditConfig":{
      }
   }
}

REST v1beta4

A continuación se muestra un prototipo de solicitud para inhabilitar la auditoría, en el que se omiten los campos del objeto sqlServerAuditConfig:

{
   "databaseVersion":"database-version",
   "name":"instance-id",
   "region":"region",
   "rootPassword":"password",
   "settings":{
      "tier":"machine-type",
      "sqlServerAuditConfig":{
      }
   }
}

Subida automática de archivos de auditoría

Una vez que hayas habilitado la auditoría, los archivos de auditoría generados se subirán automáticamente al segmento de Cloud Storage que hayas especificado.

Los archivos de auditoría generados también se almacenan con la instancia hasta que caduca el periodo de conservación (intervalo) configurado. Una vez transcurrido ese periodo, los archivos de auditoría se eliminan permanentemente, incluso los que no se hayan podido subir.

Crear auditorías de servidor

Una vez que hayas habilitado la auditoría, el usuario sqlserver predeterminado tendrá permisos para crear, modificar y eliminar auditorías del servidor.

Usa el comando CREATE SERVER AUDIT para definir nuevas auditorías de servidor. También puede usar la interfaz de usuario de SQL Server Management Studio (SSMS) para crear auditorías de servidor.

Las siguientes categorías de parámetros se aplican a todas las auditorías de servidores:

Categoría de parámetro Valores permitidos
En caso de fallo del registro de auditoría Continuar o fallar
Destino de la auditoría Archivo
Ruta /var/opt/mssql/audit
Tamaño máximo de archivo Entre 2 y 50 MB
Número máximo de archivos de rollover Debe ser: sin configurar
Número máximo de archivos Debe ser: sin configurar
Reservar espacio en disco Desactivado

Auditorías de lectura

Leer auditorías de una instancia

Para recuperar los datos de un archivo de auditoría creado por una auditoría del servidor, puedes usar el siguiente procedimiento almacenado: msdb.dbo.gcloudsql_fn_get_audit_file. El procedimiento msdb.dbo.gcloudsql_fn_get_audit_file acepta los mismos parámetros que la función sys.fn_get_audit_file.

Por lo tanto, para obtener información sobre cómo usar ese procedimiento almacenado, consulta sys.fn_get_audit_file.

A continuación, se muestra un ejemplo de cómo usar el procedimiento msdb.dbo.gcloudsql_fn_get_audit_file para obtener datos de auditoría:

SELECT event_time, statement FROM msdb.dbo.gcloudsql_fn_get_audit_file('/var/opt/mssql/audit/*', NULL, NULL) WHERE statement LIKE '%INSERT%'

Leer auditorías de un segmento

Para leer auditorías de un segmento de Cloud Storage, puedes descargar los archivos del segmento en una instancia de SQL Server. Esa instancia de SQL Server puede ser:

  • Una instancia de Windows de Compute Engine
  • Una instancia de Linux de Compute Engine
  • Otro tipo de instancia que ejecuta SQL Server

Los archivos de auditoría del contenedor deben transferirse a una ubicación a la que pueda acceder esa instancia, como su disco local. A continuación, para devolver información de los archivos de auditoría, ejecuta la función sys.fn_get_audit_file con un miembro del rol de servidor fijo serveradmin. Por ejemplo, desde una instancia de Windows, si has transferido archivos de auditoría a D:\Audit, puedes usar un comando similar al siguiente:

SELECT event_time, statement FROM sys.fn_get_audit_file('D:\Audit\*.*', NULL, NULL) WHERE statement LIKE '%INSERT%'

Monitorizar métricas

Puede monitorizar las operaciones relacionadas con la auditoría como parte de las métricas de Cloud SQL, disponibles a través del explorador de métricas:

  • database/sqlserver/audits_upload_count Esta métrica indica el total de intentos de subida de archivos de auditoría, tanto los que se han completado correctamente como los que no. Consulta esta métrica para monitorizar si las subidas se han realizado correctamente.
  • database/sqlserver/audits_size Esta métrica indica la cantidad de espacio en disco que utilizan los archivos de auditoría almacenados en la instancia en el momento de la medición. Esta métrica proporciona el tamaño total de los archivos de auditoría de la instancia, expresado en bytes.

Prácticas recomendadas

  • Para evitar transferir archivos grandes entre regiones, ten en cuenta lo siguiente:
    • Crear segmentos de Cloud Storage multirregionales
    • Configurar el segmento de Cloud Storage de destino en la misma región que la instancia
  • Antes de usar la función de auditoría de SQL Server, te recomendamos que habilites los aumentos automáticos de almacenamiento. Los archivos de auditoría pueden necesitar una cantidad de espacio en disco considerable, en función de su tamaño total y de los intervalos de conservación.
  • Después de habilitar la auditoría, comprueba que tu instancia puede subir archivos de auditoría a tu segmento de Cloud Storage. Si el solicitante que configuró la auditoría no tenía los permisos necesarios para subir archivos al segmento de Cloud Storage, los permisos no se concederán automáticamente.
  • Configura una política de alertas basada en métricas para recibir notificaciones sobre los intentos de subida fallidos y el uso excesivo del disco.
  • Para evitar que se conserven demasiados archivos de auditoría durante demasiado tiempo, configura una política de conservación de datos en tu segmento de Cloud Storage.