SQL Server Audit - Amazon Relational Database Service

SQL Server Audit

En Amazon RDS, puede auditar las bases de datos de Microsoft SQL Server mediante el mecanismo de auditoría de SQL Server integrado. Puede crear auditorías y especificaciones de auditoría del mismo modo que las crea para los servidores de base de datos locales.

RDS carga los registros de auditoría completados en su bucket de S3 mediante el rol de IAM que proporciona. Si habilita la retención, RDS conservará sus registros de auditoría en su instancia de base de datos durante el periodo de tiempo configurado.

Para obtener más información, consulte la sección sobre SQL Server Audit (motor de base de datos) en la documentación de Microsoft SQL Server.

Auditoría de SQL Server con flujos de actividad de bases de datos

Puede utilizar los flujos de actividad de bases de datos para RDS para integrar los eventos de SQL Server Audit con las herramientas de supervisión de la actividad de las bases de datos de Imperva, McAfee e IBM. Para obtener más información acerca de cómo auditar con flujos de actividad de bases de datos para RDS SQL Server, consulte Auditoría en Microsoft SQL Server

Compatibilidad con SQL Server Audit

En Amazon RDS, a partir de SQL Server 2014, todas las ediciones de SQL Server admiten auditorías de nivel de servidor y la edición Enterprise también admite auditorías de nivel de base de datos. A partir de SQL Server 2016 (13.x) SP1, todas las ediciones admiten tanto auditorías de nivel de servidor como de nivel de base de datos. Para obtener más información, consulte SQL Server Audit (motor de base de datos) en la documentación de SQL Server.

RDS admite ajustar la siguiente configuración de opciones para SQL Server Audit.

Ajuste de la opción Valores válidos Descripción
IAM_ROLE_ARN Nombre de recurso de Amazon (ARN) válido en el formato arn:aws:iam::account-id:role/role-name. ARN del rol de IAM que concede acceso al bucket de S3 donde desea almacenar sus registros de auditoría. Para obtener más información, consulte Nombres de recurso de Amazon (ARN) en la Referencia general de AWS.
S3_BUCKET_ARN ARN válido en el formato arn:aws:s3:::bucket-name o arn:aws:s3:::bucket-name/key-prefix ARN para el bucket de S3 donde desea almacenar sus registros de auditoría.
ENABLE_COMPRESSION true o false Controla la compresión de registros de auditoría. De forma predeterminada, la compresión está habilitada (establecida en true).
RETENTION_TIME De 0 a 840 El tiempo de retención (en horas) durante el que se conservan los registros de auditoría de SQL Server en su instancia RDS. De forma predeterminada, la retención está deshabilitada.

RDS admite la auditoría de SQL Server en todas las regiones de AWS excepto Medio Oriente (Baréin).

Incorporación de SQL Server Audit a las opciones de instancia de base de datos

Habilitar SQL Server Audit requiere dos pasos: habilitar la opción en la instancia de base de datos y habilitar la característica dentro de SQL Server. El proceso de incorporación de la opción SQL Server Audit a una instancia de base de datos es el siguiente:

  1. Cree un grupo de opciones nuevo o copie o modifique un grupo de opciones existente.

  2. Añada y configure todas las opciones necesarias.

  3. Asocie el grupo de opciones a la instancia de base de datos.

Después de añadir la opción SQL Server Audit, no es necesario reiniciar la instancia de base de datos. En cuanto el grupo de opciones esté activo, podrá crear auditorías y almacenar registros de auditoría en su bucket de S3.

Para añadir y configurar SQL Server Audit en el grupo de opciones de una instancia de base de datos
  1. Elija una de las siguientes opciones:

    • Use un grupo de opciones existente.

    • Cree un grupo de opciones de base de datos personalizado y úselo. Para obtener más información, consulte Creación de un grupo de opciones.

  2. Agregue la opción SQLSERVER_AUDIT al grupo de opciones y establezca la configuración de opciones. Para obtener más información acerca de la adición de opciones, consulte Agregar una opción a un grupo de opciones.

    • En Rol de IAM, si ya tiene un rol de IAM con las políticas necesarias, puede elegir ese rol. Para crear un nuevo rol de IAM, elija Crear un nuevo rol. Para obtener información acerca de las políticas necesarias, consulte Creación manual de un rol de IAM para SQL Server Audit.

    • En la opción para Select S3 destination (Seleccionar el destino de S3), si ya dispone de un bucket de S3 que desee usar, elíjalo. Para crear un bucket de S3, elija Create a New S3 Bucket (Crear un nuevo bucket de S3).

    • En Enable Compression (Habilitar compresión), deje esta opción elegida para comprimir archivos de auditoría. La compresión está habilitada de forma predeterminada. Para deshabilitar la compresión, borre Enable Compression (Habilitar compresión).

    • En Audit log retention (Retención de registros de auditoría), para conservar los registros de auditoría en la instancia de base de datos, elija esta opción. Especifique un tiempo de retención en horas. El tiempo de retención máximo son 35 días.

  3. Aplique el grupo de opciones a una instancia de base de datos nueva o existente. Elija una de las siguientes opciones:

    • Si está creando una instancia de base de datos nueva, aplique el grupo de opciones al lanzar la instancia.

    • En una instancia de base de datos existente, el grupo de opciones se aplica modificando la instancia y asociando el grupo de opciones nuevo. Para obtener más información, consulte Modificación de una instancia de base de datos de Amazon RDS.

Modificación de la opción SQL Server Audit

Después de habilitar la opción SQL Server Audit, puede modificar la configuración. Para obtener más información acerca de cómo modificar la configuración de opciones, consulte Modificación de una configuración de opciones.

Eliminación de SQL Server Audit de las opciones de instancia de base de datos

Puede desactivar la característica SQL Server Audit deshabilitando las auditorías y, a continuación, eliminando la opción.

Para eliminar auditorías
  1. Deshabilite toda la configuración de auditorías dentro de SQL Server. Para obtener información acerca de dónde se ejecutan las auditorías, consulte las vistas de catálogo de seguridad de SQL Server. Para obtener más información, consulte la sección sobre Vistas de catálogo de seguridad en la documentación de Microsoft SQL Server.

  2. Elimine la opción SQL Server Audit de la instancia de base de datos. Elija una de las siguientes opciones:

    • Elimine la opción SQL Server Audit del grupo de opciones que la instancia de base de datos usa. Este cambio afecta a todas las instancias de base de datos que utilizan el mismo grupo de opciones. Para obtener más información, consulte Quitar una opción de un grupo de opciones.

    • Modifique la instancia de base de datos y, a continuación, elija un grupo de opciones sin la opción SQL Server Audit. Este cambio solo afecta a la instancia de base de datos que modifique. Puede especificar el grupo de opciones predeterminado (vacío) u otro grupo de opciones personalizado. Para obtener más información, consulte Modificación de una instancia de base de datos de Amazon RDS.

  3. Una vez que elimine la opción SQL Server Audit de la instancia de base de datos, no será necesario reiniciar la instancia. Elimine los archivos de auditoría innecesarios de su bucket de S3.

Uso de SQL Server Audit

Puede controlar auditorías de servidor y especificaciones de auditoría tanto de servidor como de base de datos del mismo modo que las controla para servidores de base de datos locales.

Creación de auditorías

Crea auditorías de servidor del mismo modo que las crea para los servidores de base de datos locales. Para obtener información acerca de cómo crear auditorías de servidor, consulte CREATE SERVER AUDIT en la documentación de Microsoft SQL Server.

Para evitar errores, cumpla las siguientes limitaciones:

  • No sobrepase el número máximo de auditorías de servidor admitidas por instancia de 50.

  • Pida a SQL Server que escriba datos en un archivo binario.

  • No use RDS_ como prefijo en el nombre de auditoría de servidor.

  • En FILEPATH, especifique D:\rdsdbdata\SQLAudit.

  • En MAXSIZE, especifique un tamaño entre 2 y 50 MB.

  • No configure MAX_ROLLOVER_FILES ni MAX_FILES.

  • No configure SQL Server para cerrar la instancia de base de datos si no escribe el registro de auditoría.

Creación de especificaciones de auditoría

Puede crear especificaciones de auditoría tanto de servidor como de base de datos del mismo modo que las crea para servidores de base de datos locales. Para obtener información acerca de cómo crear especificaciones de auditoría, consulte CREATE SERVER AUDIT SPECIFICATION y CREATE DATABASE AUDIT SPECIFICATION en la documentación de Microsoft SQL Server.

Para evitar errores, no use RDS_ como prefijo en el nombre de la especificación de auditoría de base de datos o de servidor.

Visualización de registros de auditoría

Sus registros de auditoría se almacenan en D:\rdsdbdata\SQLAudit.

Una vez que SQL Server termina de escribir en un archivo de registro de auditoría (cuando el archivo alcanza su límite de tamaño), Amazon RDS lo carga en su bucket de S3. Si se habilita la retención, Amazon RDS mueve el archivo a la carpeta de retención: D:\rdsdbdata\SQLAudit\transmitted.

Para obtener información acerca de cómo configurar la retención, consulte Incorporación de SQL Server Audit a las opciones de instancia de base de datos.

Los registros de auditoría se conservan en la instancia de base de datos hasta que se carga el archivo de registro de auditoría. Puede ver los registros de auditoría ejecutando el siguiente comando.

SELECT * FROM msdb.dbo.rds_fn_get_audit_file ('D:\rdsdbdata\SQLAudit\*.sqlaudit' , default , default )

Puede usar el mismo comando para ver los registros de auditoría en su carpeta de retención cambiando el filtro a D:\rdsdbdata\SQLAudit\transmitted\*.sqlaudit.

SELECT * FROM msdb.dbo.rds_fn_get_audit_file ('D:\rdsdbdata\SQLAudit\transmitted\*.sqlaudit' , default , default )

Uso de SQL Server Audit con instancias Multi-AZ

En el caso de las instancias Multi-AZ, el proceso de envío de archivos de registro de auditoría a Amazon S3 es similar al de las instancias Single-AZ. No obstante, hay algunas diferencias importantes:

  • Los objetos de especificación de auditoría de base de datos se replican en todos los nodos.

  • Las auditorías de servidor y las especificaciones de auditoría de servidor no se replican en nodos secundarios. En su lugar, debe crearlas o modificarlas manualmente.

Para capturar auditorías de servidor o una especificación de auditoría de servidor desde ambos nodos:

  1. Cree una auditoría de servidor o una especificación de auditoría de servidor en el nodo principal.

  2. Realice una conmutación por error al nodo secundario y cree una auditoría de servidor o una especificación de auditoría de servidor con los mismos nombre y GUID en el nodo secundario. Use el parámetro AUDIT_GUID para especificar el GUID.

Configuración de un bucket de S3

Los archivos de registro de auditoría se cargan automáticamente desde la instancia de base de datos en su bucket de S3. Se aplican las siguientes restricciones al bucket de S3 que usa como destino para los archivos de auditoría:

  • Debe estar en la misma AWS región que la instancia de base de datos.

  • No debe estar abierto al público.

  • No se puede usar S3 Object Lock.

  • El propietario del bucket también debe ser el propietario del rol de IAM.

La clave de destino que se usa para almacenar los datos sigue este esquema de nomenclatura: bucket-name/key-prefix/instance-name/audit-name/node_file-name.ext

nota

Establece los valores del nombre del bucket y del prefijo de clave con la configuración de opciones S3_BUCKET_ARN.

El esquema se compone de los siguientes elementos:

  • bucket-name – nombre del bucket de S3.

  • key-prefix – prefijo de clave personalizado que desea usar para los registros de auditoría.

  • instance-name – nombre de su instancia Amazon RDS.

  • audit-name – nombre de la auditoría.

  • node: identificador del nodo que es el origen de los registros de auditoría (node1 o node2). Hay un nodo para una instancia Single-AZ y dos nodos de replicación para una instancia Multi-AZ. Estos no son nodos principales ni secundarios, ya que los roles de principal y secundario cambian con el tiempo. En su lugar, el identificador de nodo es una simple etiqueta.

    • node1 – primer nodo de replicación (Single-AZ tiene solo un nodo).

    • node2 – segundo nodo de replicación (Multi-AZ tiene dos nodos).

  • file-name – nombre del archivo de destino. El nombre del archivo se toma tal y como es de SQL Server.

  • ext: extensión del archivo (zip o sqlaudit):

    • zip – si la compresión está habilitada (valor predeterminado).

    • sqlaudit – si la compresión está deshabilitada.

Creación manual de un rol de IAM para SQL Server Audit

Normalmente, al crear una nueva opción, la AWS Management Console crea el rol de IAM y la política de confianza de IAM en su nombre. No obstante, puede crear manualmente un nuevo rol de IAM para usarlo con instancias de SQL Server Audit de modo que pueda personalizarlo con los requisitos adicionales que pueda tener. Para ello, debe crear un rol de IAM y delegar permisos de modo que el servicio Amazon RDS pueda usar su bucket de Amazon S3. Cuando cree este rol de IAM, debe asociar políticas de confianza y de permisos. La política de confianza permite a Amazon RDS asumir este rol. La política de permisos define las acciones que puede realizar este rol. Para obtener más información, consulte Creación de un rol para delegar permisos a un servicio de AWS en la Guía del usuario de AWS Identity and Access Management.

Puede usar los ejemplos de esta sección para crear las relaciones de confianza y las políticas de permisos que necesite.

El siguiente ejemplo muestra una relación de confianza para SQL Server Audit. Usa el principal de servicio rds.amazonaws.com para permitir que RDS escriba en el bucket de S3 Un principal de servicio es un identificador que se utiliza para conceder permisos a un servicio. Cada vez que conceda acceso a rds.amazonaws.com de esta forma, permitirá a RDS realizar una acción en su nombre. Para obtener más información acerca de las entidades principales de servicio, consulte la sección sobre elementos de las políticas de JSON de AWS: entidad principal.

ejemplo relación de confianza para SQL Server Audit
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Se recomienda usar las claves de contexto de condición global aws:SourceArn y aws:SourceAccount en las relaciones de confianza basadas en recursos para limitar los permisos del servicio a un recurso específico. Esta es la forma más eficaz de protegerse contra el problema del suplente confuso.

Puede utilizar claves de contexto de condición globales y hacer que el valor de aws:SourceArn contenga el ID de cuenta. En estos casos, el valor de aws:SourceAccount y la cuenta del valor de aws:SourceArn deben utilizar el mismo ID de cuenta cuando se utilizan en la misma instrucción.

  • Use aws:SourceArn si quiere acceso entre servicios para un único recurso.

  • Use aws:SourceAccount si quiere permitir que cualquier recurso de esa cuenta se asocie al uso entre servicios.

En la relación de confianza, asegúrese de usar la clave de contexto de la condición global aws:SourceArn con el nombre de recurso de Amazon (ARN) completo de los recursos que acceden al rol. En el caso de SQL Server Audit, asegúrese de incluir tanto el grupo de opciones de base de datos y las instancias de base de datos, como se muestra en el siguiente ejemplo.

ejemplo relación de confianza con clave de contexto de condición global para SQL Server Audit
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn": [ "arn:aws:rds:Region:my_account_ID:db:db_instance_identifier", "arn:aws:rds:Region:my_account_ID:og:option_group_name" ] } } } ] }

En el siguiente ejemplo de política de permisos para SQL Server Audit, especificamos un ARN para el bucket de Simple Storage Service (Amazon S3). Puede usar ARN para identificar una cuenta, un usuario o un rol específicos a los que desea conceder acceso. Para obtener más información acerca de cómo usar los ARN, consulte Nombres de recurso de Amazon (ARN).

ejemplo política de permisos para SQL Server Audit
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketACL", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::bucket_name" }, { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::bucket_name/key_prefix/*" } ] }
nota

La s3:ListAllMyBuckets acción es necesaria para verificar que la misma AWS cuenta posee tanto el bucket S3 como la instancia de base de datos de SQL Server. La acción enumera los nombres de los buckets de la cuenta.

Los espacios de nombres del bucket de S3 son globales. Si elimina accidentalmente el bucket, otro usuario puede crear un bucket con el mismo nombre en una cuenta distinta. A continuación, los datos de auditoría de SQL Server se escriben en el nuevo bucket.