Wie verwende ich CloudTrail, um nach Aktionen auf einer bestimmten Ressource zu suchen, z. B. wer ein EBS-Volume auf einer EC2-Instance gelöscht hat?

Lesedauer: 4 Minute
0

Ich möchte AWS CloudTrail verwenden, um eine bestimmte Ressource nach Informationen zu durchsuchen.

Behebung

Wichtig:

  • Die Anzahl Suchanfragen ist auf eine Anfrage pro Sekunde pro Konto begrenzt. Wenn Sie dieses Limit überschreiten, tritt ein Drosselungsfehler auf.
  • Vergewissern Sie sich, dass die CloudTrail-Protokollierung aktiviert ist, bevor ein Ereignis eintritt. Andernfalls können Sie das Ereignis in dem Zeitraum, in dem es aufgetreten ist, nicht nachschlagen.
  • AWS-Services fügen möglicherweise weiterhin Ereignisse hinzu. CloudTrail zeichnet die Ereignisse im Ereignisverlauf auf.
  • Wenn Sie beim Ausführen von Befehlen der AWS Command Line Interface (AWS CLI) Fehlermeldungen erhalten, stellen Sie sicher, dass Sie die neueste AWS CLI-Version verwenden.

Die folgenden Beispiele werden über die AWS CLI ausgeführt. Die meisten dieser Befehle verwenden den Befehlszeilen-JSON-Prozessor jq. Weitere Informationen zu jq finden Sie auf der jq-Website.

Um jq auf Amazon Linux zu installieren, verwenden Sie yum:

yum install jq

Hinweis: Es gibt jq-Installationsoptionen für andere Plattformen. Informationen zu den jq-Installationsoptionen finden Sie unter jq von der jq-Website herunterladen.

Alle Ereignisnamen für eine bestimmte Ressource auflisten

Das folgende Beispiel verwendet eine Amazon Elastic Block Store (Amazon EBS)-Volume-ID, um eine Liste der letzten Ereignisse für jede API-Aktion abzurufen. Ersetzen Sie den Attributwert von vol-0f59a355c2example durch Ihre Volume-ID und us-east-1 durch Ihre Region.

$ 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

Hinweis: CloudTrail benötigt möglicherweise länger als erwartet, bis die letzten Aufrufe befüllt werden.

Sie können verschiedene Ressourcen-IDs verwenden, z. B. einen EBS-Snapshot, um dasselbe Beispiel auszuführen. Ersetzen Sie den AttributWert von snap-0993c0d9a8example durch Ihre Snapshot-ID und us-east-1 durch Ihre Region.

$ 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

Ereignisse für eine bestimmte API-Aktion für eine bestimmte Ressource auflisten

Das folgende Beispiel zeigt, wie eine Liste der letzten Ereignisse für die Volume löschen-API-Aktion für ein EBS-Volumen abgerufen wird. Ersetzen Sie den Attributwert vol-0f59a355c2example durch Ihre Volumen-ID.

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

Beispiel für eine Ausgabe:

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

Einen bestimmten Ereignisnamen für alle Ressourcen auflisten

Im folgenden Beispiel wird der Volume löschen-Ereignisname als Filter verwendet, um gelöschte EBS-Volumes aufzulisten. Ersetzen Sie us-east-1 durch Ihre Region.

$ 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

Beendete EC2-Instances für alle Ressourcen auflisten

Das folgende Beispiel listet aktuelle EC2-InstancesBeenden auf. Ersetzen Sie \–region us-east-1 durch Ihre Region.

$ 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

Details für eine bestimmte Ereignis-ID anzeigen

Nachdem Sie eine Ereignis-ID gefunden haben, können Sie sich die Details zu diesem Ereignis ansehen. Ersetzen Sie den Attributwert 0840b15f-75b5-4082-a194-86e15example durch Ihre Ereignis-ID und us-east-1 durch Ihre Region.

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

Beispiel für eine Ausgabe:

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

Einen Datumsbereich festelegen

Sie können die Parameter --start-time und --end-time verwenden, um einen Zeitraum von Ereignissen anzugeben:

$ 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

Hinweis: Wählen Sie Ihren bevorzugten Zeitstempel aus der Liste unter Gültige Zeitstempelformate aus.

Die aufgelisteten Ereignisse treten nach der Startzeit und bis einschließlich der Endzeit auf.

Die Standardstartzeit ist das früheste Datum, für das Daten innerhalb der letzten 90 Tage verfügbar sind. Die Standardendzeit ist die Zeit des Ereignisses, das am nächsten zur aktuellen Zeit liegt. Wenn die angegebene Startzeit nach der angegebenen Endzeit liegt, wird ein InvalidTimeRangeException-Fehler zurückgegeben.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 6 Monaten