Como uso o CloudTrail para pesquisar ações em um recurso específico, como quem excluiu um volume do EBS em uma instância do EC2?

4 minuto de leitura
0

Quero usar o AWS CloudTrail para pesquisar informações em um recurso específico.

Resolução

Importante:

  • A taxa de solicitações de pesquisa é limitada a uma solicitação por segundo para cada conta. Se você exceder esse limite, ocorrerá um erro de controle de utilização.
  • Confirme se o registro em log do CloudTrail está ativado antes que um evento ocorra. Caso contrário, você não poderá pesquisar o evento durante o intervalo de tempo em que ele ocorreu.
  • Os serviços da AWS podem continuar adicionando eventos. O CloudTrail registra os eventos no Histórico de eventos.
  • Se você receber erros ao executar comandos da CLI da AWS, certifique-se de estar usando a versão mais recente da AWS CLI.

Os exemplos a seguir são executados a partir da AWS CLI. A maioria desses comandos usa o processador JSON de linha de comando, jq. Para obter mais informações sobre o jq, consulte o site do jq.

Para instalar o jq no Amazon Linux, use yum:

yum install jq

Observação: existem opções de instalação do jq para outras plataformas. Para obter informações sobre as opções de instalação do jq, consulte Baixar o jq no site do jq.

Relacione todos os nomes de eventos para um recurso específico

O exemplo a seguir usa um ID de volume do Amazon Elastic Block Store (Amazon EBS) para obter uma lista de eventos recentes para qualquer ação de API. Substitua o AttributeValue de vol-0f59a355c2example pelo ID do volume e us-east-1 pela sua região.

$ aws cloudtrail lookup-events --lookup-attributes AttributeKey=ResourceName,AttributeValue=vol-0f59a355c2example --query 'Events[].{username:Username,time:EventTime,event:EventName,eventid:EventId,accesskey:AccessKeyId,resource:(Resources[0].ResourceName)}' --output table --region us-east-1

Observação: o CloudTrail pode levar mais tempo do que o esperado para preencher as chamadas recentes.

Você pode usar IDs de recursos diferentes, como um snapshot do EBS, para executar o mesmo exemplo. Substitua o AttributeValue de snap-0993c0d9a8example pelo ID do snapshot e us-east-1 pela sua região.

$ aws cloudtrail lookup-events --lookup-attributes AttributeKey=ResourceName,AttributeValue=snap-0993c0d9a8example --query 'Events[].{username:Username,time:EventTime,event:EventName,eventid:EventId,accesskey:AccessKeyId,resource:(Resources[0].ResourceName)}' --output table --region us-east-1

Relacione eventos para uma ação de API específica para um determinado recurso

O exemplo a seguir mostra como obter uma lista de eventos recentes para a ação da API DeleteVolume para um volume do EBS. Substitua o AttributeValue de vol-0f59a355c2example pelo ID do volume.

$ aws cloudtrail lookup-events --lookup-attributes AttributeKey=ResourceName,AttributeValue=vol-0f59a355c2example --query 'Events[].{username:Username,time:EventTime,event:EventName,eventid:EventId,accesskey:AccessKeyId,resource:(Resources[0].ResourceName)}' --output json --region us-east-1 | jq -r '.[] | select(.event == "DeleteVolume")'

Exemplo de saída:

{  "username": "jdoe",
  "eventid": "e3ec4051-9999-4e87-9999-9cc72example",
  "resource": "vol-0f59a355c2example",
  "accesskey": "ASIAXUZVKEUACEXAMPLE",
  "time": 1550191014,
  "event": "DeleteVolume"
}

Relacione um nome de evento específico para todos os recursos

O exemplo a seguir usa o nome do evento DeleteVolume como filtro para listar volumes do EBS excluídos. Substitua us-east-1 pela sua região.

$ aws cloudtrail lookup-events --lookup-attributes AttributeKey=EventName,AttributeValue=DeleteVolume --query 'Events[].{username:Username,time:EventTime,event:EventName,eventid:EventId,accesskey:AccessKeyId,resource:(Resources[0].ResourceName)}' --output table --region us-east-1

Relacione instâncias EC2 encerradas para todos os recursos

O exemplo a seguir lista as TerminateInstances recentes do EC2. Substitua -region us-east-1 pela sua região.

$ aws cloudtrail lookup-events --lookup-attributes AttributeKey=EventName,AttributeValue=TerminateInstances --query 'Events[].{username:Username,time:EventTime,event:EventName,eventid:EventId,accesskey:AccessKeyId,resource:(Resources[0].ResourceName)}' --output table --region us-east-1

Visualize detalhes de um ID de evento específico

Depois de encontrar um ID de evento, você pode visualizar os detalhes desse evento. Substitua o AttributeValue de 0840b15f-75b5-4082-a194-86e15example pelo ID do evento e us-east-1 pela sua região.

$ aws cloudtrail lookup-events --query "Events[0].CloudTrailEvent" --output text --lookup-attribute AttributeKey=EventId,AttributeValue=0840b15f-75b5-4082-a194-86e15example --region us-east-1 | jq -r '.'

Exemplo de saída:

{  "eventVersion": "1.05",
  "userIdentity": {
    "type": "AssumedRole",
    "principalId": "AROAJ3THTCWDOKEXAMPLE:jdoe",
    "arn": "arn:aws:sts::52570EXAMPLE:assumed-role/Admin/jdoe",
    "accountId": "52570example",
    "accessKeyId": "ASIAXUZVKEUAKEXAMPLE",
    "sessionContext": {
      "attributes": {
        "mfaAuthenticated": "false",
        "creationDate": "2019-02-14T23:55:15Z"
      },
      "sessionIssuer": {
        "type": "Role",
        "principalId": "AROAJ3THTCWDOKEXAMPLE",
        "arn": "arn:aws:iam::52570EXAMPLE:role/Admin",
        "accountId": "52570EXAMPLE",
        "userName": "Admin"
      }
    }
  },
  "eventTime": "2019-02-15T00:48:05Z",
  "eventSource": "ec2.amazonaws.com",
  "eventName": "DeleteVolume",
  "awsRegion": "us-east-1",
  "sourceIPAddress": "999.999.999.999",
  "userAgent": "aws-cli/1.16.999 Python/2.7.15 Darwin/17.7.0 botocore/1.12.91",
  "requestParameters": {
    "volumeId": "vol-0c50d65c6eexample"
  },
  "responseElements": {
    "_return": true
  },
  "requestID": "a8a43ccd-736d-4b09-ba75-24b9cexample",
  "eventID": "0840b15f-75b5-4082-a194-86e15example",
  "eventType": "AwsApiCall",
  "recipientAccountId": "52570EXAMPLE"
}

Especifique um intervalo de datas

Para especificar um intervalo de data de eventos, use os parâmetros --start-time e --end-time:

$ aws cloudtrail lookup-events --lookup-attributes AttributeKey=EventName,AttributeValue=DeleteVolume --query 'Events[].{username:Username,time:EventTime,event:EventName,eventid:EventId,accesskey:AccessKeyId,resource:(Resources[0].ResourceName)}' --output table --region us-east-1 --start-time 2019-01-01T13:00Z --end-time 2019-03-01T14:00Z

Observação: escolha seu carimbo de data e hora preferido na lista em Formatos de carimbo de data e hora válidos.

Os eventos listados ocorrem depois da hora de início e vão até, incluindo, a hora de término.

A hora de início padrão é a primeira data em que os dados estão disponíveis nos últimos 90 dias. A hora de término padrão é a hora do evento que ocorreu mais próxima da hora atual. Se a hora de início especificada for posterior à hora de término especificada, um erro InvalidTimeRangeException será retornado.

AWS OFICIAL
AWS OFICIALAtualizada há 8 meses