Auditoría de la base de datos de SQL Server

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

Descripción general

En Cloud SQL, las capacidades de SQL Server Audit incluyen las siguientes:

  • Crear especificaciones de auditoría del servidor
  • Seguir y registrar eventos a nivel de servidor y de base de datos

Para obtener información adicional sobre las capacidades de la SQL Server Audit, consulta SQL Server Audit (motor de base de datos).

Antes de comenzar

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

Bucket de Cloud Storage para archivos de auditoría

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

Como alternativa, puedes usar una ubicación de bucket que sea propiedad de otra cuenta. Cuando habilitas la auditoría, si tienes los permisos necesarios, el rol roles/storage.objectAdmin se otorga de forma automática para subir los archivos de auditoría a la ubicación del bucket de la cuenta de servicio determinada. Si no tienes los permisos necesarios, debes otorgarlos para 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, el usuario sqlserver predeterminado debe estar disponible. Cuando creaste una instancia de Cloud SQL para SQL Server, se creó el usuario de sqlserver predeterminado.

Habilita la auditoría

Cuando habilitas la auditoría, se requiere una ubicación de Cloud Storage. Las siguientes opciones son opcionales:

  • El período de retención de registros en la instancia
  • El intervalo de carga (frecuencia de carga)

Console

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

    Ir a Instancias de Cloud SQL

  2. Para abrir la página de Descripción general de una instancia, haz clic en el nombre de la instancia.
  3. Haz clic en Editar.
  4. En la sección Personaliza tu instancia, haz clic en Marcas y parámetros.
  5. Marca la casilla de verificación junto a Habilitar la SQL Server Audit.
  6. Especifica un bucket de Cloud Storage como la ubicación a la que se suben los archivos de auditoría.
  7. Haz clic en Opciones avanzadas.
  8. De manera opcional, especifica una cantidad de días para la retención de registros (de 1 a 7 días; 7 días es la configuración predeterminada).
  9. De forma opcional, especifica con qué frecuencia debes subir registros (archivos de auditoría), en minutos (de 1 a 720 minutos; el valor predeterminado es de 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 siguiente tabla, se resumen los parámetros gcloud de esta operación:

Parámetro Descripción Valores permitidos Valor predeterminado
--audit-bucket-path Obligatorio. La ubicación, como un bucket de Cloud Storage, a la que se suben los archivos de auditoría. Estará vacío si la auditoría está inhabilitada. De lo contrario, una ruta de acceso del bucket que comienza con gs:// Está vacío porque, de forma predeterminada, la auditoría está inhabilitada.
--audit-retention-interval Opcional. Es la cantidad de días para la retención de registros de auditoría en el disco. 1 a 7 días. Solo se permiten días. 7 días
--audit-upload-interval Opcional. Con qué frecuencia se deben subir registros de auditoría (archivos de auditoría). De 1 a 720 minutos. 10 minutos.

REST v1

Con la API de REST, puedes habilitar la auditoría de una instancia. Como se muestra en el siguiente prototipo de solicitud, puedes especificar un bucket de Cloud Storage, una cantidad de días para la retención de archivos de auditoría y una frecuencia para la carga de archivos de auditoría. Solo se requiere la ubicación del bucket. 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 de REST, puedes habilitar la auditoría de una instancia. Como se muestra en el siguiente prototipo de solicitud, puedes especificar un bucket de Cloud Storage, una cantidad de días para la retención de archivos de auditoría y una frecuencia para subir archivos de auditoría. Solo se requiere la ubicación del bucket. 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"
      }
   }
}

Inhabilita la auditoría

En esta sección, se incluyen las opciones para inhabilitar la auditoría. Cuando inhabilitas la auditoría, se borran de la instancia todos los archivos de auditoría, incluidos los que aún no se subieron. Además, todas las auditorías del servidor están inhabilitadas y deben volver a habilitarse si se desea reanudar la auditoría. Los registros de auditoría que se subieron al bucket de Cloud Storage pueden permanecer, según la configuración de retención del bucket.

Las siguientes son las opciones para inhabilitar la auditoría.

Console

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

    Ir a Instancias de Cloud SQL

  2. Para abrir la página de Descripción general de una instancia, haz clic en el nombre de la instancia.
  3. Haz clic en Editar.
  4. En la sección Personaliza tu instancia, haz clic en Marcas y parámetros.
  5. Desmarca la casilla de verificación junto a Habilitar la SQL Server Audit.
  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

El siguiente, que omite los campos del objeto sqlServerAuditConfig, es un prototipo de solicitud para inhabilitar la auditoría:

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

REST v1beta4

El siguiente, que omite los campos del objeto sqlServerAuditConfig, es un prototipo de solicitud para inhabilitar la auditoría:

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

Carga automática de archivos de auditoría

Después de habilitar la auditoría, los archivos de auditoría generados se suben automáticamente a tu bucket de Cloud Storage especificado.

Los archivos de auditoría generados también se almacenan con la instancia hasta que venza el período de retención (intervalo) configurado. Después de ese período, los archivos de auditoría se borran de forma permanente, incluso los que no se pudieron subir.

Crea auditorías de servidores

Después de habilitar la auditoría, el usuario sqlserver predeterminado tiene permisos para crear, modificar y descartar las auditorías del servidor.

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

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

Categoría del parámetro Valores permitidos
En falla de registro de auditoría Continúa o falla
Destino de la auditoría File
Ruta /var/opt/mssql/audit
Tamaño máximo de archivo 2-50 MB
Cantidad máxima de archivos de transferencia Debe ser: no configurado
Cantidad máxima de archivos Debe ser: no configurado
Espacio en el disco de reserva Desactivado

Lee auditorías

Lee 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 el uso de ese procedimiento almacenado, consulta sys.fn_get_audit_file.

A continuación, se muestra un ejemplo del uso del procedimiento msdb.dbo.gcloudsql_fn_get_audit_file para recuperar 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%'

Lee auditorías de un bucket

Para leer las auditorías de un bucket de Cloud Storage, puedes descargar los archivos del bucket a una instancia de SQL Server. Esa instancia de SQL Server podría ser la siguiente:

  • 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 bucket deben transferirse a una ubicación accesible para esa instancia, como su disco local. Luego, para mostrar información de los archivos de auditoría, ejecuta la función sys.fn_get_audit_file con un miembro del rol fijo de servidor serveradmin. Por ejemplo, desde una instancia de Windows, si transferiste 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%'

Métricas de supervisión

Puedes supervisar 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 carga de archivos de auditoría, tanto los que se realizaron correctamente como los que fallaron. Revisa esta métrica para supervisar si las cargas se realizaron correctamente.
  • database/sqlserver/audits_size. Esta métrica indica cuánto espacio en disco usan los archivos de auditoría almacenados en la instancia en el momento de una medición. Esta métrica proporciona el tamaño total de los archivos de auditoría en la instancia, en bytes.

Prácticas recomendadas

  • Para evitar transferir archivos grandes entre regiones, considera lo siguiente:
    • Crea buckets multirregionales de Cloud Storage o
    • Configura el bucket de destino de Cloud Storage en la misma región que la instancia
  • Antes de usar la funcionalidad de Auditoría de SQL Server, considera habilitar los aumentos automáticos de almacenamiento. Según su tamaño total y los intervalos de retención, los archivos de auditoría pueden necesitar un espacio significativo en el disco.
  • Después de habilitar la auditoría, verifica que tu instancia pueda subir archivos de auditoría a tu bucket de Cloud Storage. Si el solicitante que configuró la auditoría no tenía los permisos necesarios para subir archivos al bucket de Cloud Storage, los permisos no se otorgan de forma automática.
  • Configura una política de alertas basada en métricas para recibir notificaciones sobre intentos de carga fallidos y uso excesivo del disco.
  • Para evitar retener demasiados archivos de auditoría durante demasiado tiempo, configura una política de retención de datos para tu bucket de Cloud Storage.