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 |
|---|---|---|---|
|
|
Sim |
|
Esse campo é definido como |
|
|
Sim |
|
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. |
|
|
Não |
|
Esse é um campo opcional usado para incluir ou excluir eventos de dados com base no valor de |
|
|
Não |
|
Esse é um campo adicional usado para incluir ou filtrar qualquer evento de dados registrado no CloudTrail, como 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 |
|
|
Não |
|
Esse é um campo opcional usado para excluir ou incluir eventos de dados para um recurso específico fornecendo o 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 |
|
|
Não |
|
Você pode usá-lo para incluir ou excluir origens de eventos específicas. A |
|
|
Não |
|
O eventType a ser incluído ou excluído. Por exemplo, é possível definir esse campo como |
|
|
Não |
|
Inclua ou exclua eventos originários de uma sessão do Console de gerenciamento da AWS. Esse campo pode ser definido como |
|
|
Não |
|
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.
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.
Tópicos
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:
-
Nenhuma das seguintes condições do operador DESELECT for atendida:
-
o campo
resources.ARNNotStartsWithcom o valorarn:aws:s3:::amzn-s3-demo-bucket/deselect -
o campo
resources.ARNNotEndsWithcom o valorobject5 -
o campo
resources.ARNNotEqualscom o valorarn:aws:s3:::amzn-s3-demo-bucket/object6
-
-
Pelo menos uma das seguintes condições do operador SELECT for atendida:
-
o campo
resources.ARNEqualscom o valorarn:aws:s3:::amzn-s3-demo-bucket/object1 -
o campo
resources.ARNStartsWithcom o valorarn:aws:s3:::amzn-s3-demo-bucket/ -
o campo
resources.ARNEndsWithcom o valorobject3
-
Com base na lógica de avaliação:
-
Os eventos de dados do
amzn-s3-demo-bucket/object1serão entregues porque correspondem ao valor do operadorEqualse não correspondem a nenhum dos valores dos operadoresNotStartsWith,NotEndsWitheNotEquals. -
O evento de dados do
amzn-s3-demo-bucket/object2será entregue porque corresponde ao valor do operadorStartsWithe não corresponde a nenhum dos valores dos operadoresNotStartsWith,NotEndsWitheNotEquals. -
Os eventos de dados do
amzn-s3-demo-bucket1/object3serão entregues porque correspondem ao operadorEndsWithe não correspondem a nenhum dos valores dos operadoresNotStartsWith,NotEndsWitheNotEquals. -
Os eventos de dados do
arn:aws:s3:::amzn-s3-demo-bucket/deselectObject4não serão entregues porque correspondem à condiçãoNotStartsWith, embora correspondam à condição do operadorStartsWith. -
Os eventos de dados do
arn:aws:s3:::amzn-s3-demo-bucket/object5não serão entregues porque correspondem à condiçãoNotEndsWith, embora correspondam à condição do operadorStartsWith. -
Os eventos de dados do
arn:aws:s3:::amzn-s3-demo-bucket/object6não serão entregues porque correspondem à condição do operadorNotEquals, embora correspondam à condição do operadorStartsWith.
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.
Exemplos:
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-nametrailName\ --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-nametrailName\ --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-nametrailName\ --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)