Filtrar todos os eventos de dados utilizando seletores de eventos avançados - AWS CloudTrail

Filtrar todos os eventos de dados utilizando seletores de eventos avançados

Esta seção descreve como usar seletores de eventos avançados para criar seletores refinados para registro em do de eventos de dados, o que pode ajudar a controlar os custos registrando em log apenas os eventos de dados de interesse específicos.

Por exemplo:

  • Você pode incluir ou excluir chamadas de API específicas adicionando um filtro no campo eventName.

  • Você pode incluir ou excluir registros em log de recursos específicos adicionando um filtro no campo resources.ARN. Por exemplo, se você estivesse registrando em log eventos de dados do S3, poderia excluir o registro do bucket do S3 para sua trilha.

  • Você pode optar por registrar apenas eventos somente gravação ou eventos somente leitura adicionando um filtro no campo readOnly.

A tabela a seguir descreve os campos compatíveis com filtragem de eventos de dados. Para obter uma lista dos campos compatíveis com cada tipo de evento do CloudTrail, consulte AdvancedEventSelector na Referência da API do AWS CloudTrail.

Campo Obrigatório Operadores válidos Descrição

eventCategory

Sim

Equals

Esse campo é definido como Data para registrar eventos de dados.

resources.type

Sim

Equals

Esse campo é usado para selecionar o tipo de recurso para o qual você deseja registrar eventos de dados. A tabela Eventos de dados mostra os valores possíveis.

readOnly

Não

Equals

Esse é um campo opcional usado para incluir ou excluir eventos de dados com base no valor de readOnly. Um valor de true registra eventos somente leitura. Um valor de false registra eventos somente gravação. Se você não adicionar esse campo, o CloudTrail registrará tanto eventos de gravação quanto de leitura.

eventName

Não

EndsWith

Equals

NotEndsWith

NotEquals

NotStartsWith

StartsWith

Esse é um campo adicional usado para incluir ou filtrar qualquer evento de dados registrado no CloudTrail, como PutBucket ou GetSnapshotBlock.

Se você estiver usando a AWS CLI, poderá especificar vários valores separando cada valor com uma vírgula.

Se você estiver usando o console, poderá especificar vários valores criando uma condição para cada eventName que deseja filtrar.

resources.ARN

Não

EndsWith

Equals

NotEndsWith

NotEquals

NotStartsWith

StartsWith

Esse é um campo opcional usado para excluir ou incluir eventos de dados para um recurso específico fornecendo o resources.ARN. É possível usar qualquer operador com resources.ARN, mas se você usar Equals ou NotEquals, o valor deverá corresponder exatamente ao ARN de um recurso válido do resources.type especificado. Para registrar todos os eventos de dados de todos os objetos do em um bucket do S3 específico, use a propriedade StartsWith e inclua apenas o ARN do bucket como o valor correspondente.

Se você estiver usando a AWS CLI, poderá especificar vários valores separando cada valor com uma vírgula.

Se você estiver usando o console, poderá especificar vários valores criando uma condição para cada resources.ARN que deseja filtrar.

eventSource

Não

EndsWith

Equals

NotEndsWith

NotEquals

NotStartsWith

StartsWith

Você pode usá-lo para incluir ou excluir origens de eventos específicas. A eventSource normalmente é uma forma abreviada do nome do serviço sem espaços acrescida de .amazonaws.com. Por exemplo, você poderia definir eventSource Equals como ec2.amazonaws.com para registrar em log apenas eventos de dados do Amazon EC2.

eventType

Não

EndsWith

Equals

NotEndsWith

NotEquals

NotStartsWith

StartsWith

O eventType a ser incluído ou excluído. Por exemplo, é possível definir esse campo como NotEquals AwsServiceEvent para excluir eventos do AWS service (Serviço da AWS).

sessionCredentialFromConsole

Não

Equals

NotEquals

Inclua ou exclua eventos originários de uma sessão do Console de gerenciamento da AWS. Esse campo pode ser definido como Equals ou NotEquals com um valor de true.

userIdentity.arn

Não

EndsWith

Equals

NotEndsWith

NotEquals

NotStartsWith

StartsWith

Inclua ou exclua eventos de ações realizadas por identidades do IAM específicas. Para obter mais informações, consulte Elemento userIdentity do CloudTrail.

Para registrar em log eventos de dados usando o console do CloudTrail, selecione a opção Eventos de dados e depois selecione Tipo de recurso de interesse ao criar ou atualizar uma trilha ou um datastore de eventos. A tabela Eventos de dados mostra os possíveis tipos de recursos que você pode escolher no console do CloudTrail.

Seleção do tipo de recurso do tópico do SNS no console.

Para registrar eventos de dados com a AWS CLI, configure o parâmetro --advanced-event-selector para definir o valor de eventCategory igual a Data e o valor resources.type igual ao do tipo de recurso para o qual você deseja registrar eventos de dados. A tabela Eventos de dados lista os tipos de recursos disponíveis.

Por exemplo, se você quisesse registrar eventos de dados para todos os bancos de identidades do Cognito, você configuraria o parâmetro --advanced-event-selectors para ter a seguinte aparência:

--advanced-event-selectors '[ { "Name": "Log Cognito data events on Identity pools", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::Cognito::IdentityPool"] } ] } ]'

O exemplo anterior registra todos os eventos de dados do Cognito nos bancos de identidades. Você pode refinar ainda mais os seletores de eventos avançados para filtrar os campos eventName, readOnly e resources.ARN para registrarem ou excluírem eventos específicos de interesse ou não.

É possível configurar seletores de eventos avançados para filtrar eventos de dados com base em vários campos. Por exemplo, você pode configurar seletores de eventos avançados para registrar todos os PutObject do Amazon S3 e chamadas DeleteObject de API, mas excluir o registro em log de eventos de um bucket específico do S3, conforme mostrado no exemplo a seguir. Substitua amzn-s3-demo-bucket pelo nome do seu bucket.

--advanced-event-selectors '[ { "Name": "Log PutObject and DeleteObject events for all but one bucket", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3::Object"] }, { "Field": "eventName", "Equals": ["PutObject","DeleteObject"] }, { "Field": "resources.ARN", "NotStartsWith": ["arn:aws:s3:::amzn-s3-demo-bucket/"] } ] } ]'

Você também pode incluir várias condições para um campo. Para obter informações sobre como várias condições são avaliadas, consulte Como o CloudTrail avalia várias condições para um campo.

É possível usar seletores de eventos avançados para registrar eventos de gerenciamento e de dados. Para registrar eventos de dados de vários tipos de recursos, adicione uma instrução no seletor de campo para cada tipo de recurso para o qual você deseja registrar eventos de dados.

nota

As trilhas podem usar seletores de eventos avançados ou seletores de eventos básicos, mas não ambos. Se você aplicar seletores de eventos avançados a uma trilha, todos os seletores de eventos básicos existentes serão substituídos.

Os seletores não são compatíveis com o uso de curingas, como *. Para combinar vários valores com uma única condição, você pode usar StartsWith, EndsWith, NotStartsWith ou NotEndsWith para corresponder explicitamente ao início ou ao fim do campo do evento.

Como o CloudTrail avalia várias condições para um campo

Para seletores de eventos avançados, o CloudTrail avalia várias condições para um campo da seguinte forma:

  • Os operadores DESELECT são AND'd (combinados). Se alguma das condições do operador DESELECT for atendida, o evento não será entregue. Os operadores DESELECT válidos para seletores de eventos avançados são os seguintes:

    • NotEndsWith

    • NotEquals

    • NotStartsWith

  • Os operadores SELECT são OR'd (exclusivos). Os operadores SELECT válidos para seletores de eventos avançados são os seguintes:

    • EndsWith

    • Equals

    • StartsWith

  • As combinações dos operadores SELECT e DESELECT seguem as regras acima e os dois grupos são combinados (AND'd).

Exemplo mostrando várias condições para o campo resources.ARN

O exemplo de instrução do seletor de eventos a seguir coleta eventos de dados do tipo de recurso AWS::S3::Object e aplica várias condições no campo resources.ARN.

{ "Name": "S3Select", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::S3::Object" ] }, { "Field": "resources.ARN", "Equals": [ "arn:aws:s3:::amzn-s3-demo-bucket/object1" ], "StartsWith": [ "arn:aws:s3:::amzn-s3-demo-bucket/" ], "EndsWith": [ "object3" ], "NotStartsWith": [ "arn:aws:s3:::amzn-s3-demo-bucket/deselect" ], "NotEndsWith": [ "object5" ], "NotEquals": [ "arn:aws:s3:::amzn-s3-demo-bucket/object6" ] } ] }

No exemplo anterior, os eventos de dados do Amazon S3 para o recurso AWS::S3::Object serão entregues se:

  1. Nenhuma das seguintes condições do operador DESELECT for atendida:

    • o campo resources.ARN NotStartsWith com o valor arn:aws:s3:::amzn-s3-demo-bucket/deselect

    • o campo resources.ARN NotEndsWith com o valor object5

    • o campo resources.ARN NotEquals com o valor arn:aws:s3:::amzn-s3-demo-bucket/object6

  2. Pelo menos uma das seguintes condições do operador SELECT for atendida:

    • o campo resources.ARN Equals com o valor arn:aws:s3:::amzn-s3-demo-bucket/object1

    • o campo resources.ARN StartsWith com o valor arn:aws:s3:::amzn-s3-demo-bucket/

    • o campo resources.ARN EndsWith com o valor object3

Com base na lógica de avaliação:

  1. Os eventos de dados do amzn-s3-demo-bucket/object1 serão entregues porque correspondem ao valor do operador Equals e não correspondem a nenhum dos valores dos operadores NotStartsWith, NotEndsWith e NotEquals.

  2. O evento de dados do amzn-s3-demo-bucket/object2 será entregue porque corresponde ao valor do operador StartsWith e não corresponde a nenhum dos valores dos operadores NotStartsWith, NotEndsWith e NotEquals.

  3. Os eventos de dados do amzn-s3-demo-bucket1/object3 serão entregues porque correspondem ao operador EndsWith e não correspondem a nenhum dos valores dos operadores NotStartsWith, NotEndsWith e NotEquals.

  4. Os eventos de dados do arn:aws:s3:::amzn-s3-demo-bucket/deselectObject4 não serão entregues porque correspondem à condição NotStartsWith, embora correspondam à condição do operador StartsWith.

  5. Os eventos de dados do arn:aws:s3:::amzn-s3-demo-bucket/object5 não serão entregues porque correspondem à condição NotEndsWith, embora correspondam à condição do operador StartsWith.

  6. Os eventos de dados do arn:aws:s3:::amzn-s3-demo-bucket/object6 não serão entregues porque correspondem à condição do operador NotEquals, embora correspondam à condição do operador StartsWith.

Exemplos da AWS CLI de filtragem de eventos de dados

Esta seção fornece exemplos da AWS CLI que mostram como filtrar eventos de dados com base em diferentes campos. Para obter exemplos adicionais da AWS CLI, consulte Registrar em log eventos de dados para trilhas usando seletores de eventos avançados e Registrar em log eventos de dados para armazenamentos de dados de eventos com a AWS CLI.

Para obter informações sobre como registrar em log eventos de dados usando o console, consulte Registro de eventos de dados com a Console de gerenciamento da AWS.

Exemplo 1: filtragem com base no campo eventName

No primeiro exemplo, os --advanced-event-selectors para uma trilha estão configurados para registrar em log apenas o GetObject, o PutObject e as chamadas de API DeleteObject para objetos do Amazon S3 em buckets de uso geral.

aws cloudtrail put-event-selectors \ --trail-name trailName \ --advanced-event-selectors '[ { "Name": "Log GetObject, PutObject and DeleteObject S3 data events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3::Object"] }, { "Field": "eventName", "Equals": ["GetObject","PutObject","DeleteObject"] } ] } ]'

O próximo exemplo cria um novo armazenamento de dados de eventos que registra eventos de dados para as APIs do EBS Direct, mas exclui as chamadas de API ListChangedBlocks. Você pode usar o comando update-event-data-store para atualizar um armazenamento de dados de eventos existente.

aws cloudtrail create-event-data-store \ --name "eventDataStoreName" --advanced-event-selectors '[ { "Name": "Log all EBS Direct API data events except ListChangedBlocks", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::EC2::Snapshot"] }, { "Field": "eventName", "NotEquals": ["ListChangedBlocks"] } ] } ]'

Exemplo 2: filtragem com base nos campos resources.ARN e userIdentity.arn

O exemplo a seguir mostra como incluir todos os eventos de dados de todos os objetos do Amazon S3 em um determinado bucket do S3 de uso geral e excluir eventos gerados pela userIdentity bucket-scanner-role. O valor para eventos do S3 para o campo resources.type é AWS::S3::Object. Como os valores de ARN para objetos do S3 e buckets do S3 são ligeiramente diferentes, você deve adicionar o operador StartsWith para o resources.ARN.

aws cloudtrail put-event-selectors \ --trail-name trailName \ --advanced-event-selectors \ '[ { "Name": "S3EventSelector", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3::Object"] }, { "Field": "resources.ARN", "StartsWith": ["arn:partition:s3:::amzn-s3-demo-bucket/"] }, { "Field": "userIdentity.arn", "NotStartsWith": ["arn:aws:sts::123456789012:assumed-role/bucket-scanner-role"]} ] } ]'

Exemplo 3: filtragem com base nos campos resources.type e eventName para excluir objetos individuais excluídos por um evento DeleteObjects do Amazon S3

O exemplo a seguir mostra como incluir todos os eventos de dados de todos os objetos do Amazon S3 em um determinado bucket do S3 de uso geral e excluir objetos individuais excluídos pela operação DeleteObject. O valor para eventos do S3 para o campo resources.type é AWS::S3::Object. O valor para o nome do evento é DeleteObject.

aws cloudtrail put-event-selectors \ --trail-name trailName \ --advanced-event-selectors \ { "Name": "Exclude Events for DeleteObject operation", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::S3::Object" ] }, { "Field": "eventName", "NotEquals": [ "DeleteObject" ] } ] }, { "Name": "Exclude DeleteObject Events for individual objects deleted by DeleteObjects Operation", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::S3::Object" ] }, { "Field": "eventName", "Equals": [ "DeleteObject" ] }, { "Field": "eventType", "NotEquals": [ "AwsServiceEvent" ] } ] } ] (edited)