Protokollierung Amazon S3 API-Anrufe unter Verwendung von AWS CloudTrail - Amazon Simple Storage Service

Sofern wir eine Übersetzung der englischsprachigen Version des Handbuchs bereitstellen, gilt im Fall von Widersprüchen die englischsprachige Version des Handbuchs. Bei der Übersetzung handelt es sich um eine maschinelle Übersetzung.

Protokollierung Amazon S3 API-Anrufe unter Verwendung von AWS CloudTrail

Amazon S3 ist integriert mit AWS CloudTrail, einen Dienst, der eine Aufzeichnung von Aktionen, die von einem Benutzer, einer Rolle oder einer AWS Service in Amazon S3. CloudTrail erfasst eine Untergruppe von API-Anrufen für Amazon S3 als Ereignisse, einschließlich Anrufe von Amazon S3 und von Code-Anrufen bis zum Amazon S3 Apis. Wenn Sie einen Pfad erstellen, können Sie eine kontinuierliche Lieferung von CloudTrail Veranstaltungen zu einem Amazon S3 Bucket, einschließlich Veranstaltungen für Amazon S3. Wenn Sie einen Pfad nicht konfigurieren, können Sie die neuesten Ereignisse im CloudTrail Konsole in Ereignishistorie. Verwendung der Informationen, die von CloudTrail, Sie können die Anfrage bestimmen, die Amazon S3, die IP-Adresse, aus der die Anfrage gestellt wurde, die Anforderung vorgenommen hat, wann sie gemacht wurde und zusätzliche Details.

Weitere Informationen über CloudTrail, einschließlich Konfiguration und Aktivierung, finden Sie im AWS CloudTrail User Guide.

Amazon S3-Informationen in CloudTrail

CloudTrail wird beim Erstellen Ihres AWS-Kontos für Sie aktiviert. Wenn eine unterstützte Ereignisaktivität auftritt in Amazon S3, diese Aktivität wird in einer CloudTrail Ereignis zusammen mit anderen AWS Serviceveranstaltungen in Ereignishistorie. Sie können die neusten Ereignisse in Ihrem AWS-Konto anzeigen, suchen und herunterladen. Weitere Informationen finden Sie unter Anzeigen von Ereignissen mit CloudTrail Ereignishistorie.

Für eine fortlaufende Aufzeichnung von Ereignissen in Ihrem AWS Konto, einschließlich Veranstaltungen für Amazon S3, erstellen Sie einen Pfad. Ein Pfad ermöglicht CloudTrail um Protokolldateien an einen Amazon S3 Bucket. Wenn Sie einen Pfad in der Konsole anlegen, gilt dieser für alle -Regionen. Der Pfad protokolliert Ereignisse aus allen Regionen im AWS Partition und sendet die Protokolldateien an den Amazon S3 Bucket, den Sie angeben. Zusätzlich können Sie andere AWS Dienstleistungen, um die von den in erfassten Ereignisdaten zu analysieren und zu handeln CloudTrail protokolliert. Weitere Informationen finden Sie im Folgenden:

Jedes Event oder jeder Protokolleintrag enthält Informationen über den Ersteller der Anfrage. Anhand der Identitätsinformationen zur Benutzeridentität können Sie Folgendes bestimmen:

  • Ob die Anforderung mit Root- oder IAM-Benutzeranmeldeinformationen ausgeführt wurde.

  • Ob die Anforderung mit temporären Sicherheitsanmeldeinformationen für eine Rolle oder einen föderierten Benutzer ausgeführt wurde.

  • Ob die Anforderung von einem anderen AWS-Service getätigt wurde.

Weitere Informationen finden Sie im CloudTrail useridentität Element.

Sie können die Protokolldateien beliebig lange im Bucket speichern. Sie können aber auch Amazon S3-Lebenszyklusregeln aufstellen, anhand derer die Protokolldateien automatisch archiviert oder gelöscht werden. Standardmäßig werden die Protokolldateien mit serverseitiger Amazon S3-Verschlüsselung (SSE) verschlüsselt.

Amazon S3 Kontostände auf Kontoebene nachverfolgt von CloudTrail Protokollierung

CloudTrail protokolliert Aktionen auf Kontoebene. Amazon S3 Datensätze werden zusammen mit anderen AWS-Servicedatensätzen in einer Protokolldatei geschrieben. CloudTrail bestimmt, wann eine neue Datei erstellt und geschrieben werden soll, basierend auf einem Zeitraum und einer Dateigröße.

Die Tabellen in diesem Abschnitt sind Amazon S3 Kontoebene-Aktionen, die für die Protokollierung unterstützt werden CloudTrail.

Amazon S3 API-Aktionen auf Kontoebene nachverfolgt von CloudTrail Die Protokollierung wird als folgende Ereignisnamen angezeigt:

Amazon S3-Aktionen auf Bucket-Ebene, die von der CloudTrail-Protokollierung nachverfolgt werden

Standardmäßig, CloudTrail protokolliert Aktionen auf Bucket-Ebene. Amazon S3 Datensätze werden zusammen mit anderen AWS-Servicedatensätzen in einer Protokolldatei geschrieben. CloudTrail bestimmt, wann eine neue Datei erstellt und geschrieben werden soll, basierend auf einem Zeitraum und einer Dateigröße.

Die Tabellen in diesem Abschnitt sind Amazon S3 Aktionen auf Bucket-Ebene, die zum Anmelden unterstützt werden CloudTrail.

Zusätzlich zu diesen API-Operationen können Sie auch die Optionsobjekt Objektebene. Diese Aktion wird von der CloudTrail-Protokollierung als Aktion auf Bucket-Ebene behandelt, weil die Aktion die CORS-Konfiguration eines Buckets überprüft.

Amazon S3-Aktionen auf Objektebene, die von der CloudTrail-Protokollierung nachverfolgt werden

Sie können auch CloudTrail Protokolle für Objektebene Amazon S3 Aktionen. Dazu geben Sie das Amazon S3-Objekt für Ihren Pfad an. Wenn eine Aktion auf Objektebene in Ihrem Konto auftritt, wertet CloudTrail Ihre Pfadeinstellungen aus. Falls das Ereignis mit dem von Ihnen angegebenen Objekt in einem Pfad übereinstimmt, wird das Ereignis protokolliert. Weitere Informationen finden Sie unter Wie aktiviere ich die Objektebene für einen S3-Bucket mit AWS Cloudtrail Data Events? im Konsolenbenutzerhandbuch für Amazon Simple Storage Service und Protokollieren von Datenereignissen für Trails im AWS CloudTrail User Guide.

Die folgende Tabelle enthält die API-Aktionen auf Objektebene, die protokolliert werden CloudTrail Ereignisse:

Zusätzlich zu diesen Operationen können Sie die folgenden Aufgaben auf Bucket-Ebene verwenden, um CloudTrail Protokolle als Objektebene Amazon S3 Aktionen unter bestimmten Bedingungen:

  • GET Bucket (Listenobjekte) Version 2 – Wählen Sie ein Präfix aus, das im Pfad angegeben ist.

  • GET Bucket Objektversionen – Wählen Sie ein Präfix aus, das im Pfad angegeben ist.

  • KOPF-Bucket – Geben Sie einen Bucket und ein leeres Präfix ein.

  • Mehrere Objekte löschen – Geben Sie einen Bucket und ein leeres Präfix ein.

    Anmerkung

    CloudTrail protokolliert keine Schlüsselnamen für die mit der Operation „Delete Multiple Objects (Mehrere Objekte löschen)“ gelöschten Schlüssel

Aktionen auf Objektebene in kontoübergreifenden Szenarien

Nachfolgend finden Sie spezielle Anwendungsfälle, die API-Aufrufe auf Objektebene in Cross-Account-Szenarien und wie CloudTrail Protokolle werden gemeldet. CloudTrail stellt dem Anforderer immer Protokolle zur Verfügung (die den API-Anruf vorgenommen haben). Bei der Einrichtung von kontoübergreifendem Zugriff sehen Sie sich die Beispiele in diesem Abschnitt an.

Anmerkung

Die Beispiele setzen voraus, dass die CloudTrail-Protokolle ordnungsgemäß konfiguriert sind.

Beispiel 1: CloudTrail liefert Zugriffsprotokolle an den Bucket-Eigentümer

CloudTrail liefert Zugriffsprotokolle nur dann an den Bucket-Eigentümer, wenn der Bucket-Eigentümer die Berechtigungen für die Objekt-API besitzt. Sehen Sie sich das folgende kontenübergreifende Szenario vor:

  • Konto A ist Eigentümer des Buckets

  • Konto B (Anforderer) versucht, auf ein Objekt in diesem Bucket zuzugreifen.

CloudTrail liefert die API-Zugriffsprotokolle auf Objektebene immer an den Auftraggeber. Darüber hinaus liefert CloudTrail diese Protokolle nur dann an den Bucket-Eigentümer, wenn der Bucket-Eigentümer die Berechtigungen für die API-Aktionen für dieses Objekt besitzt.

Anmerkung

Wenn der Bucket-Eigentümer gleich dem Objekteigentümer ist, erhält der Bucket-Eigentümer die Objekt-Zugriffsprotokolle. Andernfalls muss der Bucket-Eigentümer Berechtigungen über die Objekt-ACL für diese Objekt-API erhalten, um die API-Protokolle für den Objektzugriff zu erhalten.

Beispiel 2: CloudTrail gibt keine E-Mail-Adressen weiter, die bei der Einrichtung von Objekt-ACLs verwendet werden

Sehen Sie sich das folgende kontenübergreifende Szenario vor:

  • Konto A ist Eigentümer des Buckets

  • Konto B (der Auftraggeber) sendet eine Anforderung, um ein ACL-Recht für ein Objekt unter Verwendung einer E-Mail-Adresse einzurichten. Weitere Informationen zu ACLs finden Sie unter Zugriffskontrolllisten (ACL) – Übersicht.

die Anforderung wird zusammen mit der E-Mail-Information in den Protokollen aufgezeichnet. Der Bucket-Eigentümer—wenn sie berechtigt sind, Protokolle zu erhalten, wie z. B. 1—bekommt die CloudTrail Melden Sie das Ereignis an. Der Bucket-Eigentümer erhält jedoch keine Informationen über die ACL-Konfiguration, insbesondere die E-Mail des Empfängers und das erteilte Recht. Die einzige Information, die das Protokoll dem Bucket-Eigentümer mitteilt, ist, dass Konto B einen ACL-API-Aufruf ausgeführt hat.

CloudTrail-Nachverfolgung mit Amazon S3-SOAP-API-Aufrufen

CloudTrail Tracks Amazon S3 SOAP API-Anrufe. Amazon S3 Die SOAP-Unterstützung über HTTP ist veraltet, steht über HTTPS aber noch zur Verfügung. Weitere Informationen zur Amazon S3-SOAP-Unterstützung finden Sie unter Anhang A: Verwenden der SOAP-API.

Wichtig

Neuere Amazon S3-Funktionen werden unter SOAP nicht unterstützt. Wir empfehlen, entweder die REST API oder die AWS SDKs zu verwenden.

Amazon S3-SOAP-Aktionen, die über die CloudTrail-Protokollierung nachverfolgt werden
SOAP API-Name API-Ereignisname, der im CloudTrail-Protokoll verwendet wird

ListAllMyBuckets

ListBuckets

CreateBucket

CreateBucket

DeleteBucket

DeleteBucket

GetBucketAccessControlPolicy

GetBucketAcl

SetBucketAccessControlPolicy

PutBucketAcl

GetBucketLoggingStatus

GetBucketLogging

SetBucketLoggingStatus

PutBucketLogging

Verwendung CloudTrail Protokolle mit Amazon S3 Server-Zugriffsprotokolle und CloudWatch Logs

AWS CloudTrail Protokolle bieten eine Aufzeichnung von Aktionen, die von einem Benutzer, einer Rolle oder einer AWS Service in Amazon S3, während Amazon S3 Server-Zugriffsprotokolle liefern detaillierte Datensätze für die Anforderungen, die an einen S3-Bucket vorgenommen werden. Weitere Informationen zur Funktionsweise der unterschiedlichen Protokolle und ihren Eigenschaften, ihrer Leistung und ihrer Kosten finden Sie unter Protokollieren mit Amazon S3.

Sie können verwenden AWS CloudTrail Protokolle zusammen mit Server-Zugriffsprotokollen für Amazon S3. CloudTrail -Protokolle bieten detaillierte API-Tracking für Amazon S3 Bucket-Ebene und Objektebene. Serverzugriff-Protokolle für Amazon S3 bieten Einblicke in Operationen auf Objektebene für Ihre Daten in Amazon S3. Weitere Informationen zu Server-Zugriffsprotokollen finden Sie unter Amazon S3-Serverzugriffsprotokollierung.

Sie können auch CloudTrail protokolliert zusammen mit CloudWatch für Amazon S3. CloudTrail Integration mit CloudWatch Logs liefert die S3-Bucket-Level-API-Aktivität erfasst von CloudTrail zu einem CloudWatch Protokollstream im CloudWatch Protokollgruppe, die Sie angeben. Sie können CloudWatch-Alarme für die Überwachung bestimmter API-Aktivitäten erstellen und erhalten Benachrichtigungen per E-Mail, wenn die spezifische API-Aktivität stattfindet. Weitere Informationen zu CloudWatch-Alarmen für die Überwachung bestimmter API-Aktivitäten finden Sie im AWS CloudTrail User Guide. Weitere Informationen zur Verwendung von CloudWatch mit Amazon S3, siehe Überwachung von Metriken mit Amazon CloudWatch.

Beispiel: Amazon S3-Protokolldateieinträge

Ein Pfad ist eine Konfiguration, die Bereitstellung von Ereignissen als Protokolldateien an eine Amazon S3 Bucket, den Sie angeben. CloudTrail Protokolldateien enthalten einen oder mehrere Protokolleinträge. Ein Ereignis stellt eine einzelne Anforderung aus einer beliebigen Quelle dar. Es enthält unter anderem Informationen über die angeforderte Aktion, das Datum und die Uhrzeit der Aktion sowie über die Anforderungsparameter. CloudTrail-Protokolldateien sind kein geordnetes Stacktrace der öffentlichen API-Aufrufe und erscheinen daher nicht in einer bestimmten Reihenfolge.

Das folgende Beispiel zeigt ein CloudTrail Protokolleintrag, die GET Service, PUT Bucket acl, und GET Bucket Verversionierung Aktionen.

{ "Records": [ { "eventVersion": "1.03", "userIdentity": { "type": "IAMUser", "principalId": "111122223333", "arn": "arn:aws:iam::111122223333:user/myUserName", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "myUserName" }, "eventTime": "2019-02-01T03:18:19Z", "eventSource": "s3.amazonaws.com", "eventName": "ListBuckets", "awsRegion": "us-west-2", "sourceIPAddress": "127.0.0.1", "userAgent": "[]", "requestParameters": { "host": [ "s3.us-west-2.amazonaws.com" ] }, "responseElements": null, "additionalEventData": { "SignatureVersion": "SigV2", "AuthenticationMethod": "QueryString" }, "requestID": "47B8E8D397DCE7A6", "eventID": "cdc4b7ed-e171-4cef-975a-ad829d4123e8", "eventType": "AwsApiCall", "recipientAccountId": "111122223333" }, { "eventVersion": "1.03", "userIdentity": { "type": "IAMUser", "principalId": "111122223333", "arn": "arn:aws:iam::111122223333:user/myUserName", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "myUserName" }, "eventTime": "2019-02-01T03:22:33Z", "eventSource": "s3.amazonaws.com", "eventName": "PutBucketAcl", "awsRegion": "us-west-2", "sourceIPAddress": "", "userAgent": "[]", "requestParameters": { "bucketName": "", "AccessControlPolicy": { "AccessControlList": { "Grant": { "Grantee": { "xsi:type": "CanonicalUser", "xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance", "ID": "d25639fbe9c19cd30a4c0f43fbf00e2d3f96400a9aa8dabfbbebe1906Example" }, "Permission": "FULL_CONTROL" } }, "xmlns": "http://s3.amazonaws.com/doc/2006-03-01/", "Owner": { "ID": "d25639fbe9c19cd30a4c0f43fbf00e2d3f96400a9aa8dabfbbebe1906Example" } } "host": [ "s3.us-west-2.amazonaws.com" ], "acl": [ "" ] }, "responseElements": null, "additionalEventData": { "SignatureVersion": "SigV4", "CipherSuite": "ECDHE-RSA-AES128-SHA", "AuthenticationMethod": "AuthHeader" }, "requestID": "BD8798EACDD16751", "eventID": "607b9532-1423-41c7-b048-ec2641693c47", "eventType": "AwsApiCall", "recipientAccountId": "111122223333" }, { "eventVersion": "1.03", "userIdentity": { "type": "IAMUser", "principalId": "111122223333", "arn": "arn:aws:iam::111122223333:user/myUserName", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "myUserName" }, "eventTime": "2019-02-01T03:26:37Z", "eventSource": "s3.amazonaws.com", "eventName": "GetBucketVersioning", "awsRegion": "us-west-2", "sourceIPAddress": "", "userAgent": "[]", "requestParameters": { "host": [ "s3.us-west-2.amazonaws.com" ], "bucketName": "DOC-EXAMPLE-BUCKET1", "versioning": [ "" ] }, "responseElements": null, "additionalEventData": { "SignatureVersion": "SigV4", "CipherSuite": "ECDHE-RSA-AES128-SHA", "AuthenticationMethod": "AuthHeader", }, "requestID": "07D681279BD94AED", "eventID": "f2b287f3-0df1-4961-a2f4-c4bdfed47657", "eventType": "AwsApiCall", "recipientAccountId": "111122223333" } ] }