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:

  • Crea especificaciones de auditoría del servidor
  • Seguimiento y registro de 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 de esta sección.

Bucket de Cloud Storage para archivos de auditoría

Los archivos de auditoría (registros de auditoría) se suben a la ubicación de un 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 pertenezca a 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 son opcionales:

  • El período de retención de registros de 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 Edit.
  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 en 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. Vacía si la auditoría está inhabilitada. De lo contrario, una ruta de acceso del bucket que comienza con gs:// Vacío, ya que, de forma predeterminada, la auditoría está inhabilitada.
--audit-retention-interval Opcional. La cantidad de días para la retención del registro de auditoría en el disco. 1 a 7 días. Solo se permiten días. 7 días
--audit-upload-interval Opcional. Frecuencia con la que se suben los 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 para 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 para 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"
      }
   }
}

Inhabilita 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 subieron, se borran de la instancia. Además, todas las auditorías del servidor están inhabilitadas y deben volver a habilitarse si se debe 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 para el 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 Edit.
  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

Lo 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

Lo 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 de forma automática al 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. Luego de ese período, los archivos de auditoría se borran de forma permanente, incluso los archivos que no se pudieron subir.

Crea auditorías de servidores

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

Usa el comando CREATE SERVER AUDIT para definir auditorías de servidores nuevos. 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 del servidor:

Categoría del parámetro Valores permitidos
En falla de registro de auditoría Continúa o falla
Destino de auditoría File
Path /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
Reservar espacio de disco No

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.

Este es 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 auditorías de un bucket de Cloud Storage, puedes descargar los archivos del bucket en una instancia de SQL Server. Esa instancia de SQL Server podría ser de la siguiente forma:

  • 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 a la que pueda acceder 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 los intentos de carga del archivo de auditoría, para los intentos exitosos y fallidos. Verifica esta métrica para supervisar si las cargas se realizaron de forma correcta.
  • database/sqlserver/audits_size. Esta métrica indica cuánto espacio en el disco usan los archivos de auditoría almacenados en la instancia, al 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, ten en cuenta 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. Los archivos de auditoría, según su tamaño total y los intervalos de retención, pueden necesitar un espacio de disco significativo.
  • 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 carecía de 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 que te notifique 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.