Registro de llamadas a la API de datos de RDS con AWS CloudTrail - Amazon Aurora

Registro de llamadas a la API de datos de RDS con AWS CloudTrail

La API de datos de RDS (API de datos) está integrada con AWS CloudTrail, un servicio que proporciona un registro de las acciones del usuario, el rol o un servicio de AWS en la API de datos. CloudTrail captura todas las llamadas a la API para la API de datos como eventos, incluidas las llamadas procedentes de la consola de Amazon RDS y de las llamadas de código a operaciones de la API de datos. Si crea un registro de seguimiento, puede habilitar la entrega continua de eventos de CloudTrail a un bucket de Amazon S3, incluidos los eventos de la API de datos. Los datos recopilados por CloudTrail le permitirán determinar mucha información. Esta información incluye la solicitud que se hizo a la API de datos, la dirección IP desde la que se realizó la solicitud, quién hizo la solicitud, cuándo se realizó y otros detalles.

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

Trabajar con información de API de datos en CloudTrail

CloudTrail se habilita en su cuenta de AWS cuando la crea. Cuando se produce una actividad compatible (eventos de administración) en la API de datos, dicha actividad se registra en un evento de CloudTrail junto con otros eventos de servicios de AWS en Historial de eventos. Puede ver, buscar y descargar los últimos eventos de administración de la cuenta de AWS. Para obtener más información, consulte Trabajar con el historial de eventos de CloudTrail en la Guía del usuario de AWS CloudTrail.

Para mantener un registro continuo de los eventos de su cuenta de AWS, incluidos los eventos de la API de datos, cree un registro de seguimiento. Un registro de seguimiento permite a CloudTrail enviar archivos de registro a un bucket de Amazon S3. De manera predeterminada, cuando se crea un registro de seguimiento en la consola, el registro de seguimiento se aplica a todas las regiones de AWS. El seguimiento registra los eventos de todas las regiones de AWS en la partición de AWS y envía los archivos de registro al bucket de Amazon S3 especificado. También es posible configurar otros servicios de AWS para analizar en profundidad y actuar en función de los datos de eventos recopilados en los registros de CloudTrail. Para obtener más información, consulte los siguientes temas en la Guía del usuario de AWS CloudTrail:

CloudTrail registra todas las operaciones de la API de datos, las cuales quedan documentadas en la referencia de la API de servicio de datos de Amazon RDS. Por ejemplo, las llamadas a las operaciones BatchExecuteStatement, BeginTransaction, CommitTransaction y ExecuteStatement generan entradas en los archivos de registro de CloudTrail.

Cada entrada de registro o evento contiene información acerca de quién generó la solicitud. La información de identidad del usuario lo ayuda a determinar lo siguiente:

  • Si la solicitud se realizó con las credenciales raíz o del usuario.

  • Si la solicitud se realizó con credenciales de seguridad temporales de un rol o fue un usuario federado.

  • Si la solicitud la realizó otro servicio de AWS.

Para más información, consulte Elemento userIdentity de CloudTrail.

Inclusión y exclusión de eventos de la API de datos de un seguimiento de AWS CloudTrail

La mayoría de los usuarios de la API de datos confían en los eventos de un seguimiento de AWS CloudTrail para proporcionar un registro de las operaciones de la API de datos. Los datos de eventos no revelan el nombre de la base de datos, el nombre del esquema ni las instrucciones SQL en las solicitudes a la API de datos. Sin embargo, saber qué usuario realizó un tipo de llamada a un clúster de base de datos específico en un momento dado puede ayudar a detectar patrones de acceso anómalos.

Inclusión de eventos de la API de datos en un seguimiento de AWS CloudTrail

En el caso de Aurora PostgreSQL sin servidor v2 y las bases de datos aprovisionadas, las siguientes operaciones de la API de datos se registran en AWS CloudTrail como eventos de datos. Los eventos de datos son operaciones de API del plano de datos de gran volumen que CloudTrail no registra de forma predeterminada. Se aplican cargos adicionales a los eventos de datos. Para obtener información sobre los precios de CloudTrail, consulte Precios de AWS CloudTrail.

Puede utilizar la consola de CloudTrail, AWS CLI o las operaciones de la API de CloudTrail para registrar estas operaciones de la API de datos. En la consola de CloudTrail, elija API de datos de RDS - clúster de base de datos para el tipo de evento de datos. Para obtener más información, consulte Registro de eventos de datos con la AWS Management Console en la Guía del usuario de AWS CloudTrail.

Con la AWS CLI, ejecute el comando aws cloudtrail put-event-selectors para registrar estas operaciones de la API de datos para su seguimiento. Para registrar todos los eventos de la API de datos en los clústeres de bases de datos, especifique AWS::RDS::DBCluster como tipo de recurso. El siguiente ejemplo registra todos los eventos de la API de datos en los clústeres de bases de datos. Para obtener más información, consulte Registro de eventos de datos con la AWS Command Line Interface en la Guía del usuario de AWS CloudTrail.

aws cloudtrail put-event-selectors --trail-name trail_name --advanced-event-selectors \ '{ "Name": "RDS Data API Selector", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::RDS::DBCluster" ] } ] }'

Puede configurar selectores de eventos avanzados para filtrar adicionalmente por los campos readOnly, eventName, y resources.ARN. Para obtener más información sobre estos campos, consulte AdvancedFieldSelector.

Excluir eventos de la API de datos de un seguimiento de AWS CloudTrail (solo Aurora Serverless v1)

Para Aurora Serverless v1, los eventos de la API de datos son eventos de administración. De forma predeterminada, todos los eventos de la API de datos se incluyen en un registro AWS CloudTrail. Sin embargo, dado que la API de datos puede generar un gran número de eventos, es posible que quiera excluir estos eventos de un seguimiento de CloudTrail. La configuración Excluir eventos de la API de datos de Amazon RDS excluye todos los eventos de la API de datos del seguimiento. No puede excluir eventos específicos de la API de datos.

Para excluir eventos de la API de datos de un seguimiento, haga lo siguiente:

  • En la consola de CloudTrail, elija la opción de la configuración Exclude Amazon RDS Data API events (Excluir eventos de la API de datos de Amazon RDS) cuando cree un seguimiento o actualice un seguimiento.

  • En la API de CloudTrail, utilice la operación PutEventSelectors. Si utiliza selectores de eventos avanzados, puede excluir los eventos de la API de datos configurando el campo eventSource de forma distinta a rdsdata.amazonaws.com. Si utiliza selectores de eventos básicos, puede excluir los eventos de la API de datos configurando el valor del atributo ExcludeManagementEventSources en rdsdata.amazonaws.com. Para obtener más información, consulte Registro de eventos con la AWS Command Line Interface, en la Guía del usuario de AWS CloudTrail.

aviso

La exclusión de eventos de la API de datos de un registro de CloudTrail puede ocultar las acciones de la API de datos. Actúe con precaución al conceder a las entidades principales el permiso cloudtrail:PutEventSelectors necesario para realizar esta operación.

Puede deshabilitar esta exclusión en cualquier momento cambiando la configuración de la consola o los selectores de eventos de un seguimiento. A continuación, el seguimiento comenzará a registrar eventos de la API de datos. Sin embargo, no puede recuperar los eventos de la API de datos que se produjeran mientras la exclusión estaba en vigor.

Al excluir eventos de la API de datos con la consola o la API, la operación PutEventSelectors resultante de la API CloudTrail también se registra en los registros de CloudTrail. Si los eventos de la API de datos no aparecen en los registros de CloudTrail, busque un evento PutEventSelectors con el atributo ExcludeManagementEventSources establecido en rdsdata.amazonaws.com.

Para obtener más información, consulte Registro de eventos de administración para seguimiento en la Guía del usuario de AWS CloudTrail.

Descripción de las entradas del archivo de registro de la API de datos

Un seguimiento es una configuración que permite la entrega de eventos como archivos de registro en un bucket de Amazon S3 que especifique. Los archivos de registro de CloudTrail contienen una o varias entradas de registro. Un evento representa una solicitud específica realizada desde un origen y contiene información sobre la acción solicitada, la fecha y la hora de la acción, los parámetros de la solicitud, etc. Los archivos de registro de CloudTrail no rastrean el orden en la pila de las llamadas públicas a la API, por lo que estas no aparecen en ningún orden específico.

Aurora PostgreSQL sin servidor v2 y aprovisionada

En el siguiente ejemplo se muestra una entrada de registro de CloudTrail que ilustra el funcionamiento de ExecuteStatement para bases de datos de Aurora PostgreSQL sin servidor v2 y aprovisionadas. En estas bases de datos, todos los eventos de la API de datos son eventos de datos en los que el origen del evento es rdsdataapi.amazonaws.com y el tipo de evento es Rds Data Service.

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::123456789012:user/johndoe", "accountId": "123456789012", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "userName": "johndoe" }, "eventTime": "2019-12-18T00:49:34Z", "eventSource": "rdsdataapi.amazonaws.com", "eventName": "ExecuteStatement", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "aws-cli/1.16.102 Python/3.7.2 Windows/10 botocore/1.12.92", "requestParameters": { "continueAfterTimeout": false, "database": "**********", "includeResultMetadata": false, "parameters": [], "resourceArn": "arn:aws:rds:us-east-1:123456789012:cluster:my-database-1", "schema": "**********", "secretArn": "arn:aws:secretsmanager:us-east-1:123456789012:secret:dataapisecret-ABC123", "sql": "**********" }, "responseElements": null, "requestID": "6ba9a36e-b3aa-4ca8-9a2e-15a9eada988e", "eventID": "a2c7a357-ee8e-4755-a0d0-aed11ed4253a", "eventType": "Rds Data Service", "recipientAccountId": "123456789012" }

Aurora Serverless v1

El siguiente ejemplo muestra cómo aparece la entrada de registro de CloudTrail del ejemplo anterior para Aurora Serverless v1. Para Aurora Serverless v1, todos los eventos son eventos de administración en los que el origen del evento es rdsdata.amazonaws.com y el tipo de evento es AwsApiCall.

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::123456789012:user/johndoe", "accountId": "123456789012", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "userName": "johndoe" }, "eventTime": "2019-12-18T00:49:34Z", "eventSource": "rdsdata.amazonaws.com", "eventName": "ExecuteStatement", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "aws-cli/1.16.102 Python/3.7.2 Windows/10 botocore/1.12.92", "requestParameters": { "continueAfterTimeout": false, "database": "**********", "includeResultMetadata": false, "parameters": [], "resourceArn": "arn:aws:rds:us-east-1:123456789012:cluster:my-database-1", "schema": "**********", "secretArn": "arn:aws:secretsmanager:us-east-1:123456789012:secret:dataapisecret-ABC123", "sql": "**********" }, "responseElements": null, "requestID": "6ba9a36e-b3aa-4ca8-9a2e-15a9eada988e", "eventID": "a2c7a357-ee8e-4755-a0d0-aed11ed4253a", "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }