Protokollieren von Anfragen mit Server-Zugriffsprotokollierung - Amazon Simple Storage Service

Protokollieren von Anfragen mit Server-Zugriffsprotokollierung

Die Server-Zugriffsprotokollierung bietet detaillierte Aufzeichnungen über die Anforderungen, die an einen Bucket gestellt wurden. Server-Zugriffsprotokolle sind für viele Anwendungen nützlich. Beispielsweise können Zugriffsprotokoll-Informationen bei Sicherheits- und Zugriffsprüfungen nützlich sein. Außerdem erfahren Sie damit mehr über Ihren Kundenstamm und erhalten einen Überblick über Ihre Amazon-S3-Rechnung.

Anmerkung

Server-Zugriffsprotokolle protokollieren keine Informationen zu Fehlern wegen Umleitungen in falsche Regionen, die nach dem 20. März 2019 gestartet wurden. Fehler bei der Umleitung zu Regionen treten auf, wenn eine Anforderung für ein Objekt oder einen Bucket außerhalb der Region gestellt wird, in der sich der Bucket befindet.

Wie aktiviere ich die Protokollzustellung?

Um die Protokollbereitstellung zu aktivieren, führen Sie die folgenden grundlegenden Schritte aus. Details hierzu finden Sie unter Aktivieren Sie die Amazon-S3-Server-Zugriffsprotokollierung.

  1. Geben Sie den Namen des Ziel-Buckets an. In diesem Bucket soll Amazon S3 die Zugriffsprotokolle als Objekte speichern. Sowohl der Quell- als auch der Ziel-Bucket müssen sich in derselben AWS-Region befinden und demselben Konto gehören.

    Sie können Protokolle in jeden Bucket speichern lassen, der sich in der gleichen Region wie der Quell-Bucket befindet, einschließlich des Quell-Buckets selbst. Zur einfacheren Protokollverwaltung empfehlen wir jedoch, Zugriffsprotokolle in einem anderen Bucket zu speichern.

    Wenn der Quell- und Ziel-Bucket derselbe sind, werden zusätzliche Protokolle für die Protokolle erstellt, die in den Bucket geschrieben werden. Diese Vorgehensweise wird nicht empfohlen, da sie zu einer geringfügigen Erhöhung der Speicherkosten führen könnte. Weiterhin könnten die zusätzlichen Protokolle über Protokolle das Auffinden des gesuchten Protokolls erschweren. Wenn Sie Zugriffsprotokolle im Quell-Bucket speichern, empfehlen wir Ihnen, ein Präfix für alle Protokollobjektschlüssel anzugeben, damit die Objektnamen mit einer gemeinsamen Zeichenfolge beginnen und die Protokollobjekte leichter zu identifizieren sind.

    Schlüsselpräfixe sind auch nützlich, um zwischen Quell-Buckets zu unterscheiden, wenn mehrere Buckets im selben Ziel-Bucket protokolliert werden.

  2. (Optional) Weisen Sie allen Amazon-S3-Protokollobjektschlüsseln ein Präfix zu. Das Präfix macht es Ihnen einfacher, die Protokollobjekte zu finden. Wenn Sie beispielsweise den Präfixwert logs/ angeben, beginnt jedes von Amazon S3 erstellte Protokollobjekt mit dem Präfix logs/ in seinem Schlüssel.

    logs/2013-11-01-21-32-16-E568B2907131C0C0

    Das Schlüsselpräfix kann zudem hilfreich sein, wenn Sie die Protokolle löschen. Beispielsweise können Sie eine Lebenszyklus-Konfigurationsregel für Amazon S3 festlegen, nach der Objekte mit einem bestimmten Schlüsselpräfix gelöscht werden. Weitere Informationen finden Sie unter Löschen von Amazon-S3-Protokolldateien.

  3. (Optional) Legen Sie Berechtigungen in Zielerteilungen fest, damit andere auf die generierten Protokolle zugreifen können. Standardmäßig hat nur der Bucket-Eigentümer stets vollen Zugriff auf die Protokollobjekte. Wenn Ihr Ziel-Bucket (in dem Ihre Serverzugriffsprotokolle gespeichert sind) die Einstellung Bucket-Eigentümer erzwungen für S3 Object Ownership verwendet, um Zugriffskontrolllisten (ACLs) zu deaktivieren, können Sie keine Berechtigungen in Zielberechtigungen erteilen, die ACLs verwenden. Sie können jedoch Ihre Bucket-Richtlinie für den Ziel-Bucket aktualisieren, um anderen Zugriff zu gewähren. Weitere Informationen finden Sie unter Identity and Access Management in Amazon S3 und Berechtigungen für Protokollbereitstellung.

Protokollobjekt-Schlüsselformat

Amazon S3 verwendet das folgende Objektschlüsselformat für die Protokollobjekte, die in den Ziel-Bucket hochgeladen werden:

TargetPrefixYYYY-mm-DD-HH-MM-SS-UniqueString/

Im Schlüssel sind YYYY, mm, DD, HH, MM und SS die Ziffern von Jahr, Monat, Tag, Stunde, Minute bzw. Sekunden des Zeitpunkts, an dem die Protokolldatei übermittelt wurde. Datum und Uhrzeit entsprechen der Zeitzone UTC (Coordinated Universal Time).

Eine Protokolldatei, die zu einem bestimmten Zeitpunkt bereitgestellt wurde, kann Datensätze enthalten, die an einem beliebigen Zeitpunkt davor geschrieben wurden. Es lässt sich nicht feststellen, ob alle Protokoll-Datensätze für ein bestimmtes Zeitintervall bereitgestellt wurden oder nicht.

Die UniqueString-Komponente des Schlüssels verhindert, dass Dateien überschrieben werden. Sie hat keine Bedeutung und wird normalerweise von Protokollverarbeitungssoftware ignoriert.

Der nachfolgende Schrägstrich / ist erforderlich, um das Ende des Präfixes zu kennzeichnen.

Wie werden Protokolle bereitgestellt?

Amazon S3 sammelt periodisch Zugriffsprotokoll-Datensätze, fasst die Datensätze in Protokolldateien zusammen und lädt anschließend die Protokolldateien als Protokollobjekte in Ihren Ziel-Bucket hoch. Wenn Sie die Protokollierung bei mehreren Quell-Buckets aktivieren, die denselben Ziel-Bucket haben, werden die Zugriffsprotokolle für alle diese Quell-Buckets in diesen Ziel-Bucket geladen. Jedes Protokollobjekt gibt jedoch Zugriffsprotokoll-Datensätze für einen bestimmten Quell-Bucket aus.

Amazon S3 verwendet ein spezielles Protokollbereitstellungskonto zum Schreiben der Server-Zugriffsprotokolle. Für diese Protokolle gelten die normalen Zugriffskontrollbeschränkungen. Wir empfehlen Ihnen, die Bucket-Richtlinie im Ziel-Bucket zu aktualisieren, um Zugriff auf den Prinzipal des Protokollierungsdienstes (logging.s3.amazonaws.com) für Zugriffsprotokollzustellung. Sie können der S3-Protokollbereitstellungsgruppe jedoch auch über Ihre Bucket-Zugriffskontrollliste (ACL) Zugriff für die Zugriffsprotokollzustellung gewähren. Es wird nicht empfohlen, den Zugriff auf die S3-Protokollbereitstellungsgruppe mit Ihrer Bucket-ACL zu gewähren.

Wenn Sie die Serverzugriffsprotokollierung aktivieren und über Ihre Bucket-Richtlinie Zugriff für die Zugriffsprotokollzustellung gewähren, aktualisieren Sie die Bucket-Richtlinie für den Ziel-Bucket, um s3:PutObject-Zugriff für den Protokollierungsserviceprinzipal zuzulassen. Wenn Sie die Amazon-S3-Konsole verwenden, um die Serverzugriffsprotokollierung für einen Bucket zu aktivieren, aktualisiert die Konsole automatisch die Bucket-Richtlinie für den Ziel-Bucket, um diese Berechtigungen dem Protokollierungsserviceprinzipal zu erteilen. Weitere Informationen zum Erteilen von Berechtigungen für die Zustellung von Serverzugriffsprotokollen finden Sie unter Berechtigungen für Protokollbereitstellung.

Vom Bucket-Eigentümer erzwungene Einstellung für S3 Object Ownership

Wenn der Ziel-Bucket die erzwungene Einstellung für den Bucket-Eigentümer für Object Ownership verwendet, sind ACLs deaktiviert und wirken sich nicht mehr auf Berechtigungen aus. Sie müssen die Bucket-Richtlinie aktualisieren, damit der Ziel-Bucket Zugriff auf den Prinzipal des Protokollierungsservices gewähren kann. Informationen zu Object Ownership finden Sie unter Gewähren Sie Zugriff auf die S3-Protokollbereitstellungsgruppe für die Protokollierung des Serverzugriffs.

Best-Effort-Protokollbereitstellung der Server

Server-Zugriffsprotokoll-Datensätze werden auf Best-Effort-Basis bereitgestellt. Die meisten Anforderungen nach einem Bucket, der für die Protokollierung richtig konfiguriert ist, führen zu einem ausgelieferten Protokollsatz. Die meisten Protokollsätze werden innerhalb weniger Stunden nach der Aufnahme geliefert, können aber häufiger geliefert werden.

Die Vollständigkeit und Aktualität der Serverprotokollierung wird nicht garantiert. Der Protokolldatensatz für eine bestimmte Anforderung wird möglicherweise viel später bereitgestellt, als die Anforderung tatsächlich verarbeitet wurde; es kann auch sein, dass er gar nicht bereitgestellt wird. Der Zweck der Serverprotokolle besteht darin, Ihnen einen Überblick über die Art des Datenverkehrs zu und von Ihrem Bucket zu vermitteln. Es passiert selten, das Protokolldatensätze verloren gehen, aber die Server-Protokollierung ist nicht als vollständige Auflistung aller Anforderungen vorgesehen.

Aus dem Best-Effort-Charakter der Serverprotokollierungsfunktion ergibt sich, dass die im AWS-Portal verfügbaren Nutzungsberichte (Billing- und Kostenmanagementberichte auf dem AWS Management Console) eine oder mehrere Zugriffsanforderungen enthalten können, die nicht in einem ausgelieferte Serverprotokoll erscheinen.

Statusänderungen in der Bucket-Protokollierung werden mit der Zeit wirksam

Änderungen am Protokollierungsstatus eines Buckets benötigen einige Zeit, bis sie sich auf die Bereitstellung von Protokolldateien auswirken. Wenn Sie beispielsweise die Protokollierung für einen Bucket aktivieren, werden möglicherweise einige Anforderungen, die in der darauffolgenden Stunde gemacht werden, protokolliert, andere hingegen nicht. Wenn Sie den Ziel-Bucket für die Protokollierung von Bucket A zu Bucket B ändern, werden in der nächsten Stunde einige Protokolle möglicherweise zu Bucket A übermittelt, während andere zu dem neuen Ziel-Bucket B übermittelt werden. In jedem Fall werden die neuen Einstellungen letztendlich ohne weiteres Eingreifen Ihrerseits wirksam.

Weitere Informationen zu Protokollierungs- und Protokolldateien finden Sie in den folgenden Abschnitten: