

# Registrar em log chamadas da API de dados do Amazon RDS com o AWS CloudTrail
<a name="logging-using-cloudtrail-data-api"></a>

A API de dados do RDS (API de dados) é integrada ao AWS CloudTrail, um serviço que fornece um registro das ações realizadas por um usuário, um perfil ou um serviço da AWS na API de dados. O CloudTrail captura todas as chamadas de API para a API de dados como eventos, inclusive as chamadas do console do Amazon RDS e de chamadas do código para operações da API de dados. Se você criar uma trilha, será possível ativar a entrega contínua de eventos do CloudTrail para um bucket do Amazon S3, incluindo eventos da API Data. Ao usar os dados coletados pelo CloudTrail, é possível determinar várias informações. Essas informações incluem a solicitação feita à API Data, o endereço IP do qual a solicitação foi feita, quem fez a solicitação, quando ela foi feita, além de detalhes adicionais.

Para saber mais sobre o CloudTrail, consulte o [Manual do usuário do AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/).

## Trabalhar com informações da API Data no CloudTrail
<a name="service-name-info-in-cloudtrail-data-api"></a>

O CloudTrail é habilitado em sua conta da AWS quando ela é criada. Quando uma atividade compatível (eventos de gerenciamento) ocorre na API de dados, ela é registrada em um evento do CloudTrail além de outros eventos de serviços da AWS no **Histórico de eventos**. É possível visualizar, pesquisar e baixar eventos de gerenciamento recentes na conta da AWS. Para obter mais informações, consulte [Trabalhar com histórico de eventos do CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html) no *Guia do usuário do AWS CloudTrail*.

Para ter um registro contínuo de eventos na sua conta da AWS, incluindo os eventos da API Data, crie uma trilha. Uma *trilha* permite que o CloudTrail entregue arquivos de log a um bucket do Amazon S3. Por padrão, quando uma trilha é criada no console, a mesma é aplicada a todas as regiões da AWS. A trilha registra em log eventos de todas as regiões da AWS na partição da AWS e entrega os arquivos de log para o bucket do Amazon S3 especificado por você. Além disso, você pode configurar outros produtos da AWS para analisar mais profundamente e agir sobre os dados de eventos coletados nos logs do CloudTrail. Para obter mais informações, consulte os seguintes tópicos no *Manual do usuário do AWS CloudTrail*:
+ [Visão geral da criação de uma trilha](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [Serviços e integrações compatíveis com o CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations)
+ [Configuração notificações do Amazon SNS para o CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html)
+ [Receber arquivos de log do CloudTrail de várias regiões](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html) e [Receber arquivos de log do CloudTrail de várias contas](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

Todas as operações da API de dados são registradas em log pelo CloudTrail e documentadas na [https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/Welcome.html](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/Welcome.html). Por exemplo, as chamadas para as operações `BatchExecuteStatement`, `BeginTransaction`, `CommitTransaction` e `ExecuteStatement` geram entradas nos arquivos de log do CloudTrail. 

Cada entrada de log ou evento contém informações sobre quem gerou a solicitação. As informações de identidade ajudam a determinar o seguinte: 
+ Se a solicitação foi feita com credenciais de usuário da raiz ou do .
+ Se a solicitação foi feita com credenciais de segurança temporárias de um perfil ou de um usuário federado.
+ Se a solicitação foi feita por outro serviço da AWS.

Para saber mais, consulte [Elemento userIdentity do CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html).

## Incluir e excluir eventos da API de dados de uma trilha do AWS CloudTrail
<a name="logging-using-cloudtrail-data-api.including-excluding-cloudtrail-events"></a>

A maioria dos usuários da API de dados depende dos eventos em uma trilha do AWS CloudTrail para fornecer um registro das operações da API de dados. Os dados do evento não revelam o nome do banco de dados, o nome do esquema ou as instruções SQL nas solicitações à API de dados. No entanto, saber qual usuário fez um tipo de chamada em um cluster de banco de dados específico em determinado momento pode ajudar a detectar padrões de acesso anômalos.

### Incluir eventos da API de dados em uma trilha do AWS CloudTrail
<a name="logging-using-cloudtrail-data-api.including-cloudtrail-events"></a>

Para o Aurora PostgreSQL Sem Servidor v2 e bancos de dados provisionados, as seguintes operações da API de dados são registradas em log como eventos de dados no AWS CloudTrail como *eventos de dados*. [Eventos de dados](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#logging-data-events) são operações de API de plano de dados de alto volume que o CloudTrail não registra por padrão. Há cobranças adicionais para eventos de dados. Para obter mais informações sobre preços do CloudTrail, consulte [Preços do AWS CloudTrail](https://aws.amazon.com/cloudtrail/pricing/).
+ [BatchExecuteStatement](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_BatchExecuteStatement.html)
+ [BeginTransaction](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_BeginTransaction.html)
+ [CommitTransaction](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_CommitTransaction.html)
+ [ExecuteStatement](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_ExecuteStatement.html)
+ [RollbackTransaction](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_RollbackTransaction.html)

É possível usar o console do CloudTrail, AWS CLI, ou as operações da API do CloudTrail para registrar essas operações da API de dados. No console do CloudTrail, selecione **API de dados do RDS: cluster de banco de dados** para o tipo de evento Dados. Para ter mais informações, consulte [Logging data events with theConsole de gerenciamento da AWS](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#creating-data-event-selectors-with-the-AWS-CLI), no *Manual do usuário do AWS CloudTrail*.

Usando a AWS CLI, execute o comando `aws cloudtrail put-event-selectors` para registrar essas operações da API de dados para a trilha. Para registrar todos os eventos da API de dados em clusters de banco de dados, especifique `AWS::RDS::DBCluster` para o tipo de recurso. O exemplo a seguir registra todos os eventos da API de dados em clusters de banco de dados. Para ter mais informações, consulte [Logging data events with theAWS Command Line Interface](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail-by-using-the-aws-cli.html), no *Manual do usuário do 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"
         ]
      }
   ]
}'
```

É possível configurar seletores de eventos avançados para filtrar adicionalmente os campos `readOnly`, `eventName,` e `resources.ARN`. Para ter mais informações sobre esses campos, consulte [AdvancedFieldSelector](https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_AdvancedFieldSelector.html).

### Excluir eventos da API de dados de uma trilha do AWS CloudTrail (somente o Aurora Serverless v1)
<a name="logging-using-cloudtrail-data-api.excluding-cloudtrail-events"></a>

Para o Aurora Serverless v1, os eventos da API de dados são eventos de gerenciamento. Por padrão, todos os eventos da API de dados são incluídos em uma trilha do AWS CloudTrail. No entanto, como a API de dados pode gerar um grande número de eventos, é possível excluir esses eventos da trilha do CloudTrail. A configuração **Excluir eventos da API de dados do Amazon RDS** exclui todos os eventos da API de dados da trilha. Não é possível excluir eventos específicos da API de dados.

Para excluir eventos da API de da dados de uma trilha, faça o seguinte:
+ No console do CloudTrail, escolha a opção **Exclude Amazon RDS Data API events** (Excluir eventos da API de dados do Amazon RDS) quando você [criar uma trilha](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-a-trail-using-the-console-first-time.html) ou [atualizar uma trilha](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-update-a-trail-console.html).
+ Na API do CloudTrail, use a operação [PutEventSelectors](https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_PutEventSelectors.html). Se estiver usando seletores de eventos avançados, você poderá excluir eventos da API de dados definindo o campo `eventSource` diferente de `rdsdata.amazonaws.com`. Se estiver usando seletores de eventos básicos, você poderá excluir eventos da API de dados definindo o valor do atributo `ExcludeManagementEventSources` como `rdsdata.amazonaws.com`. Consulte mais informações em [Logging data events with the AWS Command Line Interface](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-management-events-with-cloudtrail.html#creating-mgmt-event-selectors-with-the-AWS-CLI), no *Guia do usuário do AWS CloudTrail*.

**Atenção**  
Excluir eventos da API de dados de um log do CloudTrail pode ocultar ações da API de dados. Tenha cuidado ao conceder aos principais a permissão `cloudtrail:PutEventSelectors` que é necessária para executar essa operação.

É possível desativar essa exclusão a qualquer momento alterando a configuração do console ou os seletores de eventos de uma trilha. Então, a trilha começará a gravar os eventos da API de dados . No entanto, não pode recuperar eventos da API de dados que ocorreram enquanto a exclusão estava em vigor.

Ao excluir eventos da API de dados usando o console ou a API, a operação `PutEventSelectors` da API do CloudTrail também é registrada nos logs do CloudTrail. Se os eventos da API de dados não aparecerem nos logs do CloudTrail, procure um evento `PutEventSelectors` com o atributo `ExcludeManagementEventSources` definido como `rdsdata.amazonaws.com`.

Para obter mais informações, consulte [Logging management events for trails](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-management-events-with-cloudtrail.html) (Registro de eventos de dados para trilhas) no *Manual do usuário do AWS CloudTrail*.

## Noções básicas sobre as entradas do arquivo de log da API Data
<a name="understanding-service-name-entries-data-api"></a>

Uma *trilha* é uma configuração que permite a entrega de eventos como registros de log a um bucket do Amazon S3 especificado. Os arquivos de log do CloudTrail contêm uma ou mais entradas de log. Um *evento* representa uma única solicitação de qualquer origem e inclui informações sobre a ação solicitada, a data e a hora da ação, os parâmetros de solicitação e assim por diante. Os arquivos de log do CloudTrail não são um rastreamento de pilha ordenada de chamadas de API pública, portanto, não são exibidos em uma ordem específica.

**Aurora PostgreSQL Sem Servidor v2 e provisionado**

O exemplo a seguir mostra uma entrada de log do CloudTrail que demonstra a operação `ExecuteStatement` do Aurora PostgreSQL Sem Servidor v2 e dos bancos de dados provisionados. Para esses bancos de dados, todos os eventos da API de dados são eventos de dados em que a origem do evento é **rdsdataapi.amazonaws.com** e o tipo de evento é **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**

O exemplo a seguir mostra como o exemplo anterior da entrada de log do CloudTrail aparece para o Aurora Serverless v1. Para o Aurora Serverless v1, todos os eventos são eventos de gerenciamento em que a origem do evento é **rdsdata.amazonaws.com** e o tipo de evento é **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"
}
```