Registro de auditoría de bases de datos - Amazon Redshift

Registro de auditoría de bases de datos

Amazon Redshift registra información acerca de las conexiones y las actividades del usuario en la base de datos. Estos registros ayudan a monitorear la base de datos con fines de seguridad y solución de problemas; un proceso denominado auditoría de base de datos. Los registros se pueden almacenar en:

  • Buckets de Simple Storage Service (Amazon S3): ofrecen acceso con características de seguridad de datos a los usuarios que se encargan de las actividades de supervisión de la base de datos.

  • Amazon CloudWatch: puede consultar los datos de registro de auditoría mediante las características integradas en CloudWatch, como las características de visualización y las acciones de configuración.

nota

SYS_CONNECTION_LOG recopila datos de registro de conexión para Amazon Redshift sin servidor. Tenga en cuenta que, cuando recopile datos de registro de auditoría para Amazon Redshift sin servidor, estos no se pueden enviar a archivos de registro, solo a CloudWatch.

Registros de Amazon Redshift

Amazon Redshift registra información en los siguientes archivos de registro:

  • Registro de conexión: registra los intentos de autenticación, las conexiones y las desconexiones.

  • Registro de usuario: registra la información sobre los cambios en las definiciones del usuario de la base de datos.

  • Registro de la actividad de usuario: registra cada consulta antes de su ejecución en la base de datos.

Los registros de usuario y de conexión son útiles principalmente por fines de seguridad. Puede utilizar el registro de conexión para monitorear la información sobre los usuarios que se conectan a la base de datos y la información de conexión relacionada. Esta información puede ser su dirección IP, cuándo hicieron la solicitud, qué tipo de autenticación utilizaron, etc. Puede utilizar el registro de usuario para monitorear los cambios en las definiciones de los usuarios de la base de datos.

El registro de actividad de usuario es útil principalmente para la solución de problemas. Realiza un seguimiento de la información acerca de las consultas que realizan los usuarios y el sistema en la base de datos.

El registro de conexión y el registro de usuario corresponden a la información que se almacena en las tablas de sistema de la base de datos. Puede utilizar las tablas de sistema para obtener la misma información, pero los archivos de registro proporcionan un mecanismo más sencillo de recuperación y revisión. Los archivos de registro dependen de los permisos de Amazon S3, en lugar de los permisos de la base de datos para realizar consultas en las tablas. Además, al revisar la información de los archivos de registro en lugar de consultar las tablas de sistema, se reduce cualquier impacto de interacción con la base de datos.

nota

Los archivos de registro no son tan actuales como las tablas de registro del sistema que son STL_USERLOG y STL_CONNECTION_LOG. Los registros que son más antiguos que el registro más reciente (sin incluir este) se copian en archivos log.

nota

En el caso de Amazon Redshift sin servidor, SYS_CONNECTION_LOG recopila los datos del registro de conexiones. Cuando recopile datos de registro de auditoría para Amazon Redshift sin servidor, estos no se pueden enviar a archivos de registro, solo a CloudWatch.

Registro de conexión

Registra los intentos de autenticación y las conexiones y desconexiones. En la siguiente tabla se describe la información del registro de conexión. Para obtener más información sobre estos campos, consulte STL_CONNECTION_LOG en la Guía para desarrolladores de bases de datos Amazon Redshift. Para obtener más información sobre los datos de registro de conexiones recopilados para Amazon Redshift sin servidor, consulte SYS_CONNECTION_LOG.

Nombre de la columna Descripción
evento Evento de conexión o de autenticación.
recordtime Hora cuando se produjo el evento.
remotehost Nombre o dirección IP del host remoto.
remoteport Número del puerto para el host remoto.
pid ID del proceso asociado a la instrucción.
dbname Nombre de la base de datos.
username Nombre de usuario.
authmethod Método de autenticación.
duration Duración de la conexión en microsegundos.
sslversion Versión de la capa de conexión segura (SSL).
sslcipher Cifrado SSL.
mtu Unidad de transmisión máxima (MTU).
sslcompression Tipo de compresión de la SSL.
sslexpansion Tipo de expansión de la SSL.
iamauthguid ID de autenticación de AWS Identity and Access Management (IAM) para la solicitud de AWS CloudTrail. Este es el identificador de la llamada a la API GetClusterCredentials para crear las credenciales que se utilizan para una conexión determinada.
application_name Nombre original o actualizado de la aplicación para una sesión.
os_version La versión del sistema operativo que se encuentra en el equipo cliente que se conecta a su clúster de Amazon Redshift.
driver_version La versión del controlador ODBC o JDBC que se conecta a su clúster de Amazon Redshift desde las herramientas de cliente SQL de terceros.
plugin_name El nombre del complemento utilizado para conectarse a su clúster de Amazon Redshift.
protocol_version La versión del protocolo interno que utiliza el controlador de Amazon Redshift cuando se establece su conexión con el servidor.
sessionid El identificador único global de la sesión actual.
compression Algoritmo de compresión que se utiliza para la conexión.

Registro de usuario

Registra detalles de los siguientes cambios realizados en un usuario de una base de datos:

  • Creación de usuario

  • Eliminación de usuario

  • Modificación de usuario (cambio de nombre)

  • Modificación de usuario (modificación de propiedades)

Nombre de la columna Descripción
userid ID de usuario afectado por el cambio.
username Nombre del usuario afectado por el cambio.
oldusername En el caso de una acción de cambio de nombre, el nombre de usuario original. Para el resto de las acciones, este campo está vacío.
acción Acción que ocurrió. Valores válidos:
  • Modificación

  • Creación

  • Drop (Eliminar)

  • Cambio de nombre

usecreatedb Si es true (1), indica que el usuario ha creado permisos de base de datos.
usesuper Si es true (1), indica que el usuario es un superusuario.
usecatupd Si es true (1), indica que el usuario puede actualizar los catálogos de sistema.
valuntil Fecha de vencimiento de la contraseña.
pid Identificador del proceso.
xid ID de transacción.
recordtime Hora en UTC en que comenzó la consulta.

Consulte la vista del sistema SYS_USERLOG para encontrar información adicional sobre los cambios en los usuarios. Esta vista incluye datos de registro de Amazon Redshift sin servidor.

Registro de actividad de usuario

Registra cada consulta antes de su ejecución en la base de datos.

Nombre de la columna Descripción
recordtime Hora cuando se produjo el evento.
db Nombre de la base de datos.
usuario Nombre de usuario.
pid ID del proceso asociado a la instrucción.
userid ID de usuario.
xid ID de transacción.
consulta Prefijo de LOG: seguido del texto de la consulta, incluidas las líneas nuevas.

Habilitación de registros

El registro de auditoría no está habilitado de forma predeterminada en Amazon Redshift. Cuando activa el registro en el clúster, Amazon Redshift exporta registros a Amazon CloudWatch o crea y actualiza registros en Simple Storage Service (Amazon S3) que capturan los datos desde el momento en que se habilita el registro de auditoría hasta el momento actual. Cada actualización de registros es una continuación de los registros anteriores.

El registro de auditoría a CloudWatch o Simple Storage Service (Amazon S3) es un proceso opcional. El registro en las tablas de sistema no es opcional y ocurre automáticamente. Para obtener más información acerca de los registros en las tablas de sistema, consulte Referencia de las tablas de sistema en la Guía para desarrolladores de bases de datos de Amazon Redshift.

Los registros de conexión, usuario y actividad del usuario se habilitan juntos a través de la AWS Management Console, la referencia de la API de Amazon Redshift o la AWS Command Line Interface (AWS CLI). Para el registro de actividad de usuario, también debe habilitar el parámetro enable_user_activity_logging de la base de datos. Si habilita solo la función de registro de auditoría y no el parámetro asociado, los registros de auditoría de la base de datos registrarán únicamente la información de los registros de conexión y de usuario, no la del registro de actividad del usuario. El parámetro de enable_user_activity_logging no está habilitado (false) de forma predeterminada. Puede configurarlo como true para habilitar el registro de actividad del usuario. Para obtener más información, consulte Grupos de parámetros de Amazon Redshift.

Envío de registros de auditoría a Amazon CloudWatch

Al habilitar el registro en CloudWatch, Amazon Redshift exporta datos de registro de conexión de clúster, usuario y actividad de usuario a un grupo de registros de Amazon CloudWatch Logs. Los datos de registro no cambian, en términos de esquema. CloudWatch está diseñado para aplicaciones de supervisión y puede utilizarlo para realizar análisis en tiempo real o configurarlo para que realice acciones. También puede utilizar Amazon CloudWatch Logs para almacenar los registros en un almacenamiento de larga duración.

El uso de CloudWatch para consultar los registros es una alternativa recomendada para almacenar archivos de registro en Amazon S3. No requiere mucha configuración y se puede ajustar a los requisitos de supervisión, especialmente si ya lo utiliza para supervisar otros servicios y aplicaciones.

Grupos de registro y eventos de registro de Amazon CloudWatch

‎Una vez seleccionados los registros de Amazon Redshift que se exportarán, puede monitorear ‎los eventos de registro en Amazon CloudWatch Logs. A continuación, se crea automáticamente un nuevo grupo de registros para Amazon Redshift Serverless con el siguiente prefijo, en el que log_type representa el tipo de registro.

/aws/redshift/cluster/<cluster_name>/<log_type>

Por ejemplo, si elige exportar el registro de conexiones, los datos de registro se almacenan en el siguiente grupo de registros.

/aws/redshift/cluster/cluster1/connectionlog

Los eventos de registro se exportan a un grupo de registro mediante el flujo de registro. Utilice la consola de Amazon CloudWatch Logs, la AWS CLI o la API de Amazon CloudWatch Logs para buscar información en los eventos de registro para su punto de conexión sin servidor. Para obtener información sobre la búsqueda y el filtrado de datos de registro, consulte Creación de métricas a partir de eventos de registro mediante filtros.

En CloudWatch, puede buscar los datos de registro con una sintaxis de consulta que proporciona grado de detalle y flexibilidad. Para obtener más información, consulte Sintaxis de consulta de información de registros de CloudWatch.

Migración al registro de auditoría de Amazon CloudWatch

En cualquier caso en que envíe registros a Amazon S3 y cambie la configuración, por ejemplo, para enviar registros a CloudWatch, los registros que permanecen en Amazon S3 no se verán afectados. Puede consultar los datos de registro en los buckets de Amazon S3 en los que residen.

Administración de archivos de registro en Amazon S3

El número y el tamaño de los archivos de registro de Amazon Redshift en Amazon S3 dependen en gran medida de la actividad de su clúster. Si tiene un clúster activo que genera un gran número de registros, es posible que Amazon Redshift genere los archivos de registro con mayor frecuencia. Es posible que tenga una serie de archivos de registro para el mismo tipo de actividad, como tener varios registros de conexión en la misma hora.

Cuando Amazon Redshift utiliza Simple Storage Service (Amazon S3) para almacenar registros, usted incurre en cargos por el almacenamiento que utilice en Simple Storage Service (Amazon S3). Antes de configurar el registro en Simple Storage Service (Amazon S3), debe tener pensado durante cuánto tiempo necesita almacenar los archivos de registro. Como parte de esto, determine cuándo se pueden eliminar o archivar los archivos de registro según las necesidades de auditoría. El plan que cree depende en gran medida del tipo de datos que almacene, como datos sujetos a requisitos normativos o de conformidad. Para obtener más información acerca de los precios de Amazon S3, vaya a Precios de Amazon Simple Storage Service (S3).

Limitaciones al habilitar el registro en Amazon S3

El registro de la auditoría tiene las siguientes restricciones:

  • Solo puede utilizar el cifrado (AES-256) de las claves administradas por Amazon S3 (SSE-S3).

  • Los buckets de Amazon S3 deben tener desactivada la característica de bloqueo de objetos de S3.

Permisos del bucket para el registro de auditoría de Amazon Redshift

Cuando activa el registro en Simple Storage Service (Amazon S3), Amazon Redshift recopila la información de los registros y la carga en los archivos de registro almacenados en Simple Storage Service (Amazon S3). Puede utilizar un bucket existente o uno nuevo. Amazon Redshift requiere los siguientes permisos de IAM para el bucket:

  • s3:GetBucketAcl El servicio requiere permisos de lectura para el bucket de Amazon S3 de manera que se pueda identificar al propietario del bucket.

  • s3:PutObject El servicio requiere permisos de colocación de objetos para cargar los registros. Además, el usuario o el rol de IAM que habilitan el registro deben tener el permiso s3:PutObject para el bucket de Amazon S3. Cada vez que se cargan registros, el servicio determina si el propietario del bucket actual coincide con el propietario del bucket en el momento que se habilitó el registro. Si estos propietarios no coinciden, recibirá un error.

Si, cuando habilita el registro de auditoría, selecciona la opción para crear un bucket nuevo, se le aplicarán los permisos correctos. Sin embargo, si crea su propio bucket en Amazon S3 o utiliza un bucket existente, asegúrese de agregar una política de bucket que incluya el nombre del bucket. Los registros se envían mediante las credenciales principales del servicio. Para la mayoría de las Regiones de AWS, agrega el nombre principal del servicio Redshift, redshift.amazonaws.com.

La política de bucket utiliza el siguiente formato. ServiceName y BucketName son marcadores de posición de sus propios valores. Especifique también las acciones y los recursos asociados en la política de bucket.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Put bucket policy needed for audit logging", "Effect": "Allow", "Principal": { "Service": "ServiceName" }, "Action": [ "s3:PutObject", "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::BucketName", "arn:aws:s3:::BucketName/*" ] } ] }

En el siguiente ejemplo, se muestra una política de bucket para la región Este de EE. UU. (Norte de Virginia) y un bucket denominado AuditLogs.

{ "Version": "2008-10-17", "Statement": [ { "Sid": "Put bucket policy needed for audit logging", "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": [ "s3:PutObject", "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::AuditLogs", "arn:aws:s3:::AuditLogs/*" ] } ] }

Las regiones que no están habilitadas de forma predeterminada, también conocidas como regiones "registradas", requieren un nombre principal del servicio específico de la región. Para ello, el nombre principal del servicio incluye la región, con el formato redshift.region.amazonaws.com. Por ejemplo, redshift.ap-east-1.amazonaws.com para la región Asia-Pacífico (Hong Kong). Para obtener una lista de las regiones que no están habilitadas de forma predeterminada, consulte Administración de las Regiones de AWS en la Referencia general de AWS.

nota

El nombre de la entidad principal del servicio específico de la región corresponde a la región en la que se encuentra el clúster.

Prácticas recomendadas para los archivos de registro

Cuando Redshift carga archivos de registro en Amazon S3, los archivos grandes se pueden cargar en partes. Si una carga multiparte no se realiza correctamente, es posible que algunas partes de un archivo permanezcan en el bucket de Amazon S3. Esto puede generar costos de almacenamiento adicionales, por lo que es importante comprender qué ocurre cuando se produce un error con una carga multiparte. Para obtener una explicación detallada sobre la carga multiparte para los registros de auditoría, consulte Carga y copia de objetos con la carga multiparte y Anulación de la carga multiparte.

Para obtener más información sobre la creación de buckets de S3 y la incorporación de políticas de bucket, consulte Creación de un bucket y Edición de permisos de bucket en la Guía del usuario de Amazon Simple Storage Service.

Estructura del bucket para el registro de auditoría de Amazon Redshift

De forma predeterminada, Amazon Redshift organiza los archivos de registro en el bucket de Amazon S3 utilizando la siguiente estructura de bucket y objetos:

AWSLogs/AccountID/ServiceName/Region/Year/Month/Day/AccountID_ServiceName_Region_ClusterName_LogType_Timestamp.gz

Un ejemplo es: AWSLogs/123456789012/redshift/us-east-1/2013/10/29/123456789012_redshift_us-east-1_mycluster_userlog_2013-10-29T18:01.gz.

Si proporciona un prefijo de clave de Amazon S3, colóquelo al comienzo de la clave.

Por ejemplo, si especifica un prefijo de myprefix: myprefix/AWSLogs/123456789012/redshift/us-east-1/2013/10/29/123456789012_redshift_us-east-1_mycluster_userlog_2013-10-29T18:01.gz

El prefijo de clave de Amazon S3 no puede tener más de 512 caracteres. No puede contener espacios ( ), comillas dobles (“), comillas simples (‘) ni una barra inversa (\). También existe una cantidad de caracteres especiales y de control que no están permitidos. Los códigos hexadecimales para estos caracteres son de la siguiente manera:

  • de x00 a x20

  • x22

  • x27

  • x5c

  • x7f o mayores

Solución de problemas en el registro de auditoría de Amazon Redshift en Simple Storage Service (Amazon S3)

El registro de auditoría de Amazon Redshift puede interrumpirse por las siguientes razones:

  • Amazon Redshift no tiene permiso para cargar registros en el bucket de Amazon S3. Compruebe que el bucket esté configurado con la política de IAM correcta. Para obtener más información, consulte Permisos del bucket para el registro de auditoría de Amazon Redshift.

  • Cambió el propietario del bucket. Cuando Amazon Redshift carga los registros, comprueba que el propietario del bucket sea el mismo que cuando se habilitó el registro. Si el propietario del bucket ha cambiado, Amazon Redshift no puede cargar los registros hasta que configure otro bucket para utilizarlo en el registro de auditoría.

  • No se ha encontrado el bucket. Si el bucket se elimina en Amazon S3, Amazon Redshift no puede cargar los registros. Debe volver a crear el bucket o configurar Amazon Redshift para cargar los registros en un bucket diferente.

Registro de llamadas a la API de Amazon Redshift con AWS CloudTrail

Amazon Redshift se integra a AWS CloudTrail, un servicio que proporciona un registro de las acciones realizadas por un usuario, un rol o un servicio de AWS en Amazon Redshift. CloudTrail captura todas las llamadas a la API para Amazon Redshift como eventos. Para obtener más información acerca de la integración de Amazon Redshift con AWS CloudTrail, consulte Registro con CloudTrail.

Puede utilizar CloudTrail de forma independiente o junto con el registro de auditoría de base de datos de Amazon Redshift.

Para más información sobre CloudTrail, consulte la Guía del usuario de AWS CloudTrail.