View a markdown version of this page

Registrar em log chamadas da API de dados do Amazon RDS com o AWS CloudTrail - Amazon Aurora

Registrar em log chamadas da API de dados do Amazon RDS com o AWS CloudTrail

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.

Trabalhar com informações da API Data no CloudTrail

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 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:

Todas as operações da API de dados são registradas em log pelo CloudTrail e documentadas na Referência de API do serviço de dados do Amazon RDS. 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.

Incluir e excluir eventos da API de dados de uma trilha do AWS CloudTrail

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

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 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.

É 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, 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, 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.

Noções básicas sobre as entradas do arquivo de log da API Data

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" }