Registrar em log chamadas da API de dados 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 Guia do usuário do AWS CloudTrail.
Trabalhar com informações da API Data no CloudTrail
O CloudTrail é habilitado em sua conta 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 você cria uma trilha no console, ela é 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, é possível configurar outros serviços da AWS para analisar ainda mais e agir com base nos dados de eventos coletados nos logs do CloudTrail. Para obter mais informações, consulte os seguintes tópicos no Guia 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:
-
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 obter mais informações, consulte Elemento de identidade do usuário 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 theAWS Management Console, 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.
Excluir eventos da API de dados de uma trilha do AWS CloudTrail (somente o Aurora Serverless v1)
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 ou atualizar uma trilha.
-
Na API do CloudTrail, use a operação PutEventSelectors. Se estiver usando seletores de eventos avançados, você poderá excluir eventos da API de dados definindo o campo
eventSource
diferente derdsdata.amazonaws.com
. Se estiver usando seletores de eventos básicos, você poderá excluir eventos da API de dados definindo o valor do atributoExcludeManagementEventSources
comordsdata.amazonaws.com
. Consulte mais informações em Logging data events with the AWS Command Line Interface, 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 (Registro de eventos de dados para trilhas) no Guia do usuário do AWS CloudTrail.
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 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" }