Beispiele für die Verwendung der AWS CLI mit CloudTrail - AWS Command Line Interface

Beispiele für die Verwendung der AWS CLI mit CloudTrail

Die folgenden Codebeispiele zeigen, wie Sie Aktionen durchführen und gängige Szenarien implementieren, indem Sie die AWS Command Line Interface mit CloudTrail nutzen.

Aktionen sind Codeauszüge aus größeren Programmen und müssen im Kontext ausgeführt werden. Während Aktionen Ihnen zeigen, wie Sie einzelne Service-Funktionen aufrufen, können Sie Aktionen im Kontext der zugehörigen Szenarien anzeigen.

Jedes Beispiel enthält einen Link zum vollständigen Quellcode, wo Sie Anleitungen zum Einrichten und Ausführen des Codes im Kontext finden.

Themen

Aktionen

Das folgende Codebeispiel zeigt, wie add-tags verwendet wird.

AWS CLI

So fügen Sie dem Trail Tags hinzu

Der folgende add-tags-Befehl fügt Tags für Trail1 hinzu:

aws cloudtrail add-tags --resource-id arn:aws:cloudtrail:us-east-1:123456789012:trail/Trail1 --tags-list Key=name,Value=Alice Key=location,Value=us
  • API-Details finden Sie unter AddTags in der AWS CLI-Befehlsreferenz.

Das folgende Codebeispiel zeigt, wie create-subscription verwendet wird.

AWS CLI

So erstellen und konfigurieren Sie AWS-Ressourcen für einen Trail

Der folgende create-subscription-Befehl erstellt einen neuen S3-Bucket und ein neues SNS-Thema für Trail1.

aws cloudtrail create-subscription \ --name Trail1 \ --s3-new-bucket amzn-s3-demo-bucket \ --sns-new-topic my-topic

Ausgabe:

Setting up new S3 bucket amzn-s3-demo-bucket... Setting up new SNS topic my-topic... Creating/updating CloudTrail configuration... CloudTrail configuration: { "trailList": [ { "IncludeGlobalServiceEvents": true, "Name": "Trail1", "TrailARN": "arn:aws:cloudtrail:us-east-1:123456789012:trail/Trail1", "LogFileValidationEnabled": false, "IsMultiRegionTrail": false, "S3BucketName": "amzn-s3-demo-bucket", "SnsTopicName": "my-topic", "HomeRegion": "us-east-1" } ], "ResponseMetadata": { "HTTPStatusCode": 200, "RequestId": "f39e51f6-c615-11e5-85bd-d35ca21ee3e2" } } Starting CloudTrail service... Logs will be delivered to my-bucket

Das folgende Codebeispiel zeigt, wie create-trail verwendet wird.

AWS CLI

So erstellen Sie einen Trail

Im folgenden Beispiel für create-trail wird ein Multi-Region-Trail mit dem Namen Trail1 erstellt und ein S3-Bucket angegeben.

aws cloudtrail create-trail \ --name Trail1 \ --s3-bucket-name amzn-s3-demo-bucket \ --is-multi-region-trail

Ausgabe:

{ "IncludeGlobalServiceEvents": true, "Name": "Trail1", "TrailARN": "arn:aws:cloudtrail:us-west-2:123456789012:trail/Trail1", "LogFileValidationEnabled": false, "IsMultiRegionTrail": true, "S3BucketName": "amzn-s3-demo-bucket" }
  • API-Details finden Sie unter CreateTrail in der AWS CLI-Befehlsreferenz.

Das folgende Codebeispiel zeigt, wie delete-trail verwendet wird.

AWS CLI

So löschen Sie einen Trail

Der folgende delete-trail-Befehl löscht einen Trail mit dem Namen Trail1:

aws cloudtrail delete-trail --name Trail1
  • API-Details finden Sie unter DeleteTrail in der AWS CLI-Befehlsreferenz.

Das folgende Codebeispiel zeigt, wie describe-trails verwendet wird.

AWS CLI

So beschreiben Sie einen Trail

Im folgenden describe-trails-Beispiel werden die Einstellungen für Trail1 und Trail2 zurückgegeben.

aws cloudtrail describe-trails \ --trail-name-list Trail1 Trail2

Ausgabe:

{ "trailList": [ { "IncludeGlobalServiceEvents": true, "Name": "Trail1", "TrailARN": "arn:aws:cloudtrail:us-east-1:123456789012:trail/Trail1", "LogFileValidationEnabled": false, "IsMultiRegionTrail": false, "S3BucketName": "amzn-s3-demo-bucket", "CloudWatchLogsRoleArn": "arn:aws:iam::123456789012:role/CloudTrail_CloudWatchLogs_Role", "CloudWatchLogsLogGroupArn": "arn:aws:logs:us-east-1:123456789012:log-group:CloudTrail:*", "SnsTopicName": "my-topic", "HomeRegion": "us-east-1" }, { "IncludeGlobalServiceEvents": true, "Name": "Trail2", "S3KeyPrefix": "my-prefix", "TrailARN": "arn:aws:cloudtrail:us-east-1:123456789012:trail/Trail2", "LogFileValidationEnabled": false, "IsMultiRegionTrail": false, "S3BucketName": "amzn-s3-demo-bucket2", "KmsKeyId": "arn:aws:kms:us-east-1:123456789012:key/4c5ae5ac-3c13-421e-8335-c7868ef6a769", "HomeRegion": "us-east-1" } ] }
  • API-Details finden Sie unter DescribeTrails in der AWS CLI-Befehlsreferenz.

Das folgende Codebeispiel zeigt, wie get-event-selectors verwendet wird.

AWS CLI

So zeigen Sie die Einstellungen für die Ereignisauswahl für einen Trail an

Im folgenden get-event-selectors-Beispiel werden die Einstellungen für Trail1 zurückgegeben:

aws cloudtrail get-event-selectors --trail-name Trail1

Ausgabe:

{ "EventSelectors": [ { "IncludeManagementEvents": true, "DataResources": [], "ReadWriteType": "All" } ], "TrailARN": "arn:aws:cloudtrail:us-east-1:123456789012:trail/Trail1" }

Das folgende Codebeispiel zeigt, wie get-trail-status verwendet wird.

AWS CLI

So rufen Sie den Status eines Trails ab

Der folgende Befehl get-trail-status gibt die Liefer- und Protokollierungsdetails für Trail1 zurück:

aws cloudtrail get-trail-status --name Trail1

Ausgabe:

{ "LatestNotificationTime": 1454022144.869, "LatestNotificationAttemptSucceeded": "2016-01-28T23:02:24Z", "LatestDeliveryAttemptTime": "2016-01-28T23:02:24Z", "LatestDeliveryTime": 1454022144.869, "TimeLoggingStarted": "2015-11-06T18:36:38Z", "LatestDeliveryAttemptSucceeded": "2016-01-28T23:02:24Z", "IsLogging": true, "LatestCloudWatchLogsDeliveryTime": 1454022144.918, "StartLoggingTime": 1446834998.695, "StopLoggingTime": 1446834996.933, "LatestNotificationAttemptTime": "2016-01-28T23:02:24Z", "TimeLoggingStopped": "2015-11-06T18:36:36Z" }
  • API-Details finden Sie unter GetTrailStatus in der AWS CLI-Befehlsreferenz.

Das folgende Codebeispiel zeigt, wie list-public-keys verwendet wird.

AWS CLI

So listen Sie alle öffentlichen Schlüssel für einen Trail auf

Der folgende list-public-keys-Befehl gibt alle öffentlichen Schlüssel, deren private Schlüssel zum Signieren der Digest-Dateien verwendet wurden, für den angegebenen Zeitraum zurück:

aws cloudtrail list-public-keys --start-time 2016-01-01T20:30:00.000Z

Ausgabe:

{ "PublicKeyList": [ { "ValidityStartTime": 1453076702.0, "ValidityEndTime": 1455668702.0, "Value": "MIIBCgKCAQEAlSS3cl92HDycr/MTj0moOhas8habjrraXw+KzlWF0axSI2tcF+3iJ9BKQAVSKxGwxwu3m0wG3J+kUl1xboEcEPHYoIYMbgfSw7KGnuDKwkLzsQWhUJ0cIbOHASox1vv/5fNXkrHhGbDCHeVXm804c83nvHUEFYThr1PfyP/8HwrCtR3FX5OANtQCP61C1nJtSSkC8JSQUOrIP4CuwJjc+4WGDk+BGH5m9iuiAKkipEHWmUl8/P7XpfpWQuk4h8g3pXZOrNXr08lbh4d39svj7UqdhvOXoBISp9t/EXYuePGEtBdrKD9Dz+VHwyUPtBQvYr9BnkF88qBnaPNhS44rzwIDAQAB", "Fingerprint": "7f3f401420072e50a65a141430817ab3" } ] }
  • API-Details finden Sie unter ListPublicKeys in der AWS CLI-Befehlsreferenz.

Das folgende Codebeispiel zeigt, wie list-tags verwendet wird.

AWS CLI

So listen Sie die Tags für einen Trail auf

Der folgende list-tags-Befehl listet die Tags für Trail1 und Trail2 auf:

aws cloudtrail list-tags --resource-id-list arn:aws:cloudtrail:us-east-1:123456789012:trail/Trail1 arn:aws:cloudtrail:us-east-1:123456789012:trail/Trail2

Ausgabe:

{ "ResourceTagList": [ { "ResourceId": "arn:aws:cloudtrail:us-east-1:123456789012:trail/Trail1", "TagsList": [ { "Value": "Alice", "Key": "name" }, { "Value": "us", "Key": "location" } ] }, { "ResourceId": "arn:aws:cloudtrail:us-east-1:123456789012:trail/Trail2", "TagsList": [ { "Value": "Bob", "Key": "name" } ] } ] }
  • API-Details finden Sie unter ListTags in der AWS CLI-Befehlsreferenz.

Das folgende Codebeispiel zeigt, wie lookup-events verwendet wird.

AWS CLI

So schlagen Sie Ereignisse für einen Trail nach

Mit dem folgenden lookup-events-Befehl werden API-Aktivitätsereignisse anhand des Attributs EventName nachgeschlagen:

aws cloudtrail lookup-events --lookup-attributes AttributeKey=EventName,AttributeValue=ConsoleLogin

Ausgabe:

{ "Events": [ { "EventId": "654ccbc0-ba0d-486a-9076-dbf7274677a7", "Username": "my-session-name", "EventTime": "2021-11-18T09:41:02-08:00", "CloudTrailEvent": "{\"eventVersion\":\"1.02\",\"userIdentity\":{\"type\":\"AssumedRole\",\"principalId\":\"AROAJIKPFTA72SWU4L7T4:my-session-name\",\"arn\":\"arn:aws:sts::123456789012:assumed-role/my-role/my-session-name\",\"accountId\":\"123456789012\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2016-01-26T21:42:12Z\"},\"sessionIssuer\":{\"type\":\"Role\",\"principalId\":\"AROAJIKPFTA72SWU4L7T4\",\"arn\":\"arn:aws:iam::123456789012:role/my-role\",\"accountId\":\"123456789012\",\"userName\":\"my-role\"}}},\"eventTime\":\"2016-01-26T21:42:12Z\",\"eventSource\":\"signin.amazonaws.com\",\"eventName\":\"ConsoleLogin\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"72.21.198.70\",\"userAgent\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36\",\"requestParameters\":null,\"responseElements\":{\"ConsoleLogin\":\"Success\"},\"additionalEventData\":{\"MobileVersion\":\"No\",\"MFAUsed\":\"No\"},\"eventID\":\"654ccbc0-ba0d-486a-9076-dbf7274677a7\",\"eventType\":\"AwsConsoleSignIn\",\"recipientAccountId\":\"123456789012\"}", "EventName": "ConsoleLogin", "Resources": [] } ] }
  • API-Details finden Sie unter LookupEvents in der AWS CLI-Befehlsreferenz.

Das folgende Codebeispiel zeigt, wie put-event-selectors verwendet wird.

AWS CLI

Beispiel 1: Konfigurieren eines Trails zum Protokollieren erweiterter Verwaltungs- und Datenereignisse mithilfe der erweiterten Ereignisauswahl

Sie können erweiterte Ereignisauswahlen und Bedingungen hierfür hinzufügen. Dabei gilt ein Höchstwert von 500 Werten für alle Bedingungen und Auswahlen in einem Trail. Sie können erweiterte Ereignisauswahlen verwenden, um alle verfügbaren Datenereignistypen zu protokollieren. Sie können entweder erweiterte Ereignisselektoren oder einfache Ereignisselektoren verwenden, aber nicht beide. Wenn Sie erweiterte Ereignisselektoren auf einen Trail anwenden, werden alle vorhandenen grundlegenden Ereignisselektoren überschrieben.

Im folgenden put-event-selectors-Beispiel wird eine erweiterte Ereignisauswahl für einen Trail mit dem Namen myTrail erstellt, um Folgendes zu protokollieren: alle Verwaltungsereignisse, die S3-API-Aufrufe „PutObject“ und „DeleteObject“ für alle S3-Buckets bis auf einen, Daten-API-Aufrufe für eine Lambda-Funktion mit dem Namen myFunction und Publish-API-Aufrufe für ein SNS-Thema mit dem Namen myTopic.

aws cloudtrail put-event-selectors \ --trail-name myTrail \ --advanced-event-selectors '[{"Name": "Log all management events", "FieldSelectors": [{ "Field": "eventCategory", "Equals": ["Management"] }] },{"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/"] }]},{"Name": "Log data events for a specific Lambda function","FieldSelectors": [{ "Field": "eventCategory", "Equals": ["Data"] },{ "Field": "resources.type", "Equals": ["AWS::Lambda::Function"] },{ "Field": "resources.ARN", "Equals": ["arn:aws:lambda:us-east-1:123456789012:function:myFunction"] }]},{"Name": "Log all Publish API calls on a specific SNS topic","FieldSelectors": [{ "Field": "eventCategory", "Equals": ["Data"] },{ "Field": "resources.type", "Equals": ["AWS::SNS::Topic"] },{ "Field": "eventName", "Equals": ["Publish"] },{ "Field": "resources.ARN", "Equals": ["arn:aws:sns:us-east-1:123456789012:myTopic.fifo"] }]}]'

Ausgabe:

{ "TrailARN": "arn:aws:cloudtrail:us-east-1:123456789012:trail/myTrail", "AdvancedEventSelectors": [ { "Name": "Log all management events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Management" ] } ] }, { "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/" ] } ] }, { "Name": "Log data events for a specific Lambda function", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::Lambda::Function" ] }, { "Field": "resources.ARN", "Equals": [ "arn:aws:lambda:us-east-1:123456789012:function:myFunction" ] } ] }, { "Name": "Log all Publish API calls on a specific SNS topic", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::SNS::Topic" ] }, { "Field": "eventName", "Equals": [ "Publish" ] }, { "Field": "resources.ARN", "Equals": [ "arn:aws:sns:us-east-1:123456789012:myTopic.fifo" ] } ] } ] }

Weitere Informationen finden Sie unter Protokollieren von Ereignissen mithilfe erweiterter Ereignisselektoren im AWS-CloudTrail-Benutzerhandbuch.

Beispiel 2: Konfigurieren von Ereignisauswahlen für einen Trail zum Protokollieren aller Verwaltungs- und Datenereignisse

Sie können bis zu 5 Ereignisauswahlen und bis zu 250 Datenressourcen für einen Trail konfigurieren. Ereignisauswahlen werden auch als grundlegende Ereignisauswahlen bezeichnet. Mit der Ereignisauswahl können Sie Verwaltungs- und Datenereignisse für S3-Objekte, Lambda-Funktionen und DynamoDB-Tabellen protokollieren. Zum Protokollieren von Datenereignissen für andere Ressourcentypen müssen Sie erweiterte Ereignisauswahlen verwenden.

Im folgenden put-event-selectors-Beispiel wird eine Ereignisauswahl für den Trail TrailName erstellt, die alle Verwaltungsereignisse, Datenereignisse für zwei Amazon-S3-Bucket/Präfix-Kombinationen sowie Datenereignisse für eine einzelne AWS-Lambda-Funktion mit dem Namen hello-world-python-function umfasst.

aws cloudtrail put-event-selectors \ --trail-name TrailName \ --event-selectors '[{"ReadWriteType": "All","IncludeManagementEvents": true,"DataResources": [{"Type":"AWS::S3::Object", "Values": ["arn:aws:s3:::amzn-s3-demo-bucket/prefix","arn:aws:s3:::amzn-s3-demo-bucket2/prefix2"]},{"Type": "AWS::Lambda::Function","Values": ["arn:aws:lambda:us-west-2:999999999999:function:hello-world-python-function"]}]}]'

Ausgabe:

{ "EventSelectors": [ { "IncludeManagementEvents": true, "DataResources": [ { "Values": [ "arn:aws:s3:::amzn-s3-demo-bucket/prefix", "arn:aws:s3:::amzn-s3-demo-bucket2/prefix2" ], "Type": "AWS::S3::Object" }, { "Values": [ "arn:aws:lambda:us-west-2:123456789012:function:hello-world-python-function" ], "Type": "AWS::Lambda::Function" }, ], "ReadWriteType": "All" } ], "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/TrailName" }

Weitere Informationen finden Sie unter Protokollieren von Ereignissen mithilfe grundlegender Ereignisselektoren im AWS-CloudTrail-Benutzerhandbuch.

Beispiel 3: Konfigurieren von Ereignisauswahlen für einen Trail, um Verwaltungsereignisse, alle S3-Datenereignisse für S3-Objekte und alle Lambda-Datenereignisse für Funktionen in Ihrem Konto zu protokollieren

Im folgenden put-event-selectors-Beispiel wird eine Ereignisauswahl für den Trail TrailName2 erstellt, die alle Verwaltungsereignisse und alle Datenereignisse für alle Amazon-S3-Buckets und AWS-Lambda-Funktionen im AWS-Konto umfasst.

aws cloudtrail put-event-selectors \ --trail-name TrailName2 \ --event-selectors '[{"ReadWriteType": "All","IncludeManagementEvents": true,"DataResources": [{"Type":"AWS::S3::Object", "Values": ["arn:aws:s3"]},{"Type": "AWS::Lambda::Function","Values": ["arn:aws:lambda"]}]}]'

Ausgabe:

{ "EventSelectors": [ { "IncludeManagementEvents": true, "DataResources": [ { "Values": [ "arn:aws:s3" ], "Type": "AWS::S3::Object" }, { "Values": [ "arn:aws:lambda" ], "Type": "AWS::Lambda::Function" }, ], "ReadWriteType": "All" } ], "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/TrailName2" }

Weitere Informationen finden Sie unter Protokollieren von Ereignissen mithilfe grundlegender Ereignisselektoren im AWS-CloudTrail-Benutzerhandbuch.

Das folgende Codebeispiel zeigt, wie remove-tags verwendet wird.

AWS CLI

So entfernen Sie Tags für einen Host

Der folgende remove-tags-Befehl entfernt die angegebenen Tags für Trail1:

aws cloudtrail remove-tags --resource-id arn:aws:cloudtrail:us-east-1:123456789012:trail/Trail1 --tags-list Key=name Key=location
  • API-Details finden Sie unter RemoveTags in der AWS CLI-Befehlsreferenz.

Das folgende Codebeispiel zeigt, wie start-logging verwendet wird.

AWS CLI

So starten Sie die Protokollierung für einen Trail

Der folgende start-logging-Befehl aktiviert die Protokollierung für Trail1:

aws cloudtrail start-logging --name Trail1
  • API-Details finden Sie unter StartLogging in der AWS CLI-Befehlsreferenz.

Das folgende Codebeispiel zeigt, wie stop-logging verwendet wird.

AWS CLI

So beenden Sie die Protokollierung eines Trails

Der folgende stop-logging-Befehl deaktiviert die Protokollierung für Trail1:

aws cloudtrail stop-logging --name Trail1
  • API-Details finden Sie unter StopLogging in der AWS CLI-Befehlsreferenz.

Das folgende Codebeispiel zeigt, wie update-subscription verwendet wird.

AWS CLI

So aktualisieren Sie die Konfigurationseinstellungen für einen Trail

Im folgenden update-subscription-Beispiel wird der Trail aktualisiert, sodass ein neuer S3-Bucket und ein neues SNS-Thema angegeben werden.

aws cloudtrail update-subscription \ --name Trail1 \ --s3-new-bucket amzn-s3-demo-bucket \ --sns-new-topic my-topic-new

Ausgabe:

Setting up new S3 bucket amzn-s3-demo-bucket... Setting up new SNS topic my-topic-new... Creating/updating CloudTrail configuration... CloudTrail configuration: { "trailList": [ { "IncludeGlobalServiceEvents": true, "Name": "Trail1", "TrailARN": "arn:aws:cloudtrail:us-east-1:123456789012:trail/Trail1", "LogFileValidationEnabled": false, "IsMultiRegionTrail": false, "S3BucketName": "amzn-s3-demo-bucket", "SnsTopicName": "my-topic-new", "HomeRegion": "us-east-1" } ], "ResponseMetadata": { "HTTPStatusCode": 200, "RequestId": "31126f8a-c616-11e5-9cc6-2fd637936879" } }

Das folgende Codebeispiel zeigt, wie update-trail verwendet wird.

AWS CLI

So aktualisieren Sie einen Trail

Im folgenden update-trail-Beispiel wird ein Trail aktualisiert, sodass ein vorhandener Bucket für die Protokollzustellung verwendet wird.

aws cloudtrail update-trail \ --name Trail1 \ --s3-bucket-name amzn-s3-demo-bucket

Ausgabe:

{ "IncludeGlobalServiceEvents": true, "Name": "Trail1", "TrailARN": "arn:aws:cloudtrail:us-west-2:123456789012:trail/Trail1", "LogFileValidationEnabled": false, "IsMultiRegionTrail": true, "S3BucketName": "amzn-s3-demo-bucket" }
  • API-Details finden Sie unter UpdateTrail in der AWS CLI-Befehlsreferenz.

Das folgende Codebeispiel zeigt, wie validate-logs verwendet wird.

AWS CLI

So validieren Sie eine Protokolldatei

Der folgende validate-logs-Befehl validiert die Protokolle für Trail1:

aws cloudtrail validate-logs --trail-arn arn:aws:cloudtrail:us-east-1:123456789012:trail/Trail1 --start-time 20160129T19:00:00Z

Ausgabe:

Validating log files for trail arn:aws:cloudtrail:us-east-1:123456789012:trail/Trail1 between 2016-01-29T19:00:00Z and 2016-01-29T22:15:43Z Results requested for 2016-01-29T19:00:00Z to 2016-01-29T22:15:43Z Results found for 2016-01-29T19:24:57Z to 2016-01-29T21:24:57Z: 3/3 digest files valid 15/15 log files valid
  • API-Details finden Sie unter ValidateLogs in der AWS CLI-Befehlsreferenz.