¿Cómo utilizo CloudTrail para buscar las acciones de un recurso específico (por ejemplo, quién ha eliminado un volumen de EBS en una instancia de EC2)?

5 minutos de lectura
0

Quiero usar AWS CloudTrail para buscar información en un recurso específico.

Resolución

Importante:

  • La tasa de solicitudes de búsqueda está limitada a una solicitud por segundo por cada cuenta. Si supera este límite, se produce un error de limitación.
  • Confirme que el registro de CloudTrail esté activado antes de que se produzca un evento. De lo contrario, no podrá buscar el evento durante el intervalo de tiempo en el que ocurrió.
  • Es posible que los servicios de AWS sigan añadiendo eventos. CloudTrail registra los eventos en el Historial de eventos.
  • Si recibe errores al ejecutar los comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), asegúrese de utilizar la versión más reciente de AWS CLI.

Los siguientes ejemplos se ejecutan desde AWS CLI. La mayoría de estos comandos utilizan el procesador JSON de línea de comandos, jq. Para obtener más información sobre jq, consulte el sitio web de jq.

Para instalar jq en Amazon Linux, utilice yum:

yum install jq

Nota: Hay opciones de instalación de jq para otras plataformas. Para obtener información sobre las opciones de instalación de jq, consulte Descarga de jq en el sitio web de jq.

Enumeración de todos los nombres de eventos de un recurso específico

En el siguiente ejemplo, se utiliza un ID de volumen de Amazon Elastic Block Store (Amazon EBS) para obtener una lista de los eventos recientes de cualquier acción de la API. Sustituya el valor vol-0f59a355c2example de AttributeValue por su ID de volumen y us-east-1 por su región.

$ 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

Nota: Es posible que CloudTrail tarde más de lo esperado en rellenar las llamadas recientes.

Puede usar diferentes ID de recursos, como una instantánea de EBS, para ejecutar el mismo ejemplo. Sustituya el valor snap-0993c0d9a8example de AttributeValue por su ID de instantánea y us-east-1 por su región.

$ 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

Enumeración de los eventos de una acción de la API específica para un recurso determinado

En el siguiente ejemplo se muestra cómo obtener una lista de eventos recientes para la acción de la API ](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DeleteVolume.html)DeleteVolume[ para un volumen de EBS. Sustituya el valor vol-0f59a355c2example de AttributeValue por su ID de volumen.

$ 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")'

Ejemplo de salida:

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

Enumeración del nombre de un evento específico para todos los recursos

En el siguiente ejemplo, se utiliza el nombre del evento DeleteVolume como filtro para enumerar los volúmenes de EBS eliminados. Sustituya us-east-1 por su región.

$ 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

Enumeración de las instancias de EC2 detenidas para todos los recursos

En el siguiente ejemplo se enumeran TerminateInstances recientes de EC2. Sustituya -region us-east-1 por su región.

$ 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

Visualización de los detalles para un ID de evento específico

Después de encontrar un ID de evento, podrá ver los detalles del evento en cuestión. Sustituya el valor 0840b15f-75b5-4082-a194-86e15example de AttributeValue por su ID de evento y us-east-1 por su región.

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

Ejemplo de salida:

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

Especificación de un intervalo de fechas

Para especificar un intervalo de fechas de eventos, utilice los parámetros --start-time y --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

Nota: Elija la marca de tiempo que prefiera de la lista de Formatos de marca de tiempo válidos.

Los eventos de la lista se producen después de la hora de inicio y hasta la hora de finalización inclusive.

La hora de inicio predeterminada es la fecha más temprana en la que hay datos disponibles en los últimos 90 días. La hora de finalización predeterminada es la hora del evento que se produjo más cerca de la hora actual. Si la hora de inicio especificada es posterior a la hora de finalización especificada, aparece el error InvalidTimeRangeException.

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 6 meses