Aktivieren Sie die Amazon-S3-Server-Zugriffsprotokollierung - Amazon Simple Storage Service

Aktivieren Sie die Amazon-S3-Server-Zugriffsprotokollierung

Die Server-Zugriffsprotokollierung bietet detaillierte Aufzeichnungen über die Anfragen, die an einen Amazon-S3-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.

Standardmäßig erfasst Amazon S3 keine Server-Zugriffsprotokolle. Wenn Sie die Protokollierung aktivieren, stellt Amazon S3 Zugriffsprotokolle für einen Quell-Bucket in einem von Ihnen ausgewählten Ziel-Bucket bereit. Der Ziel-Bucket muss sich in derselben AWS-Region und im selben AWS-Konto wie der Quell-Bucket befinden. Außerdem darf für den Ziel-Bucket kein Standardaufbewahrungszeitraum konfiguriert sein.

Ein Zugriffsprotokollsatz enthält Details über die Anforderungen, die an einen Bucket gestellt werden. Dabei kann es sich um den Anforderungstyp, die in der Anfrage angegebenen Ressourcen sowie Uhrzeit und Datum der Anfrageverarbeitung handeln. Weitere Informationen zu den Grundlagen der Protokollierung finden Sie unter Protokollieren von Anfragen mit Server-Zugriffsprotokollierung.

Wichtig
  • Für die Aktivierung der Server-Zugriffsprotokollierung auf einem Amazon-S3-Bucket fallen keine zusätzlichen Kosten an. Für die Speicherung der Protokolldateien, die das System an Sie überträgt, fallen allerdings die normalen Gebühren an. (Sie können die Protokolldateien jederzeit löschen.) Wir berechnen keine Datenübertragungskosten für die Übertragung der Protokolldateien. Für den Zugriff auf die Protokolldateien fällt aber die normale Gebühr für Datenübertragungen an.

  • Die Serverzugriffsprotokollierung sollte für den Ziel-Bucket nicht aktiviert sein. 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. Dies würde jedoch zu einer unendlichen Schleife von Protokollen führen und wird nicht empfohlen. Zur einfacheren Protokollverwaltung empfehlen wir, Zugriffsprotokolle in einem anderen Bucket zu speichern. Weitere Informationen finden Sie unter Wie aktiviere ich die Protokollzustellung?.

Sie können die Protokollierung des Serverzugriffs mithilfe der Amazon-S3-Konsole, der Amazon-S3-API, des AWS Command Line Interface (AWS CLI) oder AWS-SDKs aktivieren oder deaktivieren.

Bevor Sie die Server-Zugriffsprotokollierung aktivieren, sollten Sie Folgendes berücksichtigen:

  • Sie können entweder eine Bucket-Richtlinie oder Bucket-Zugriffskontrolllisten (ACL) verwenden, um Berechtigungen für die Protokollzustellung zu erteilen. Wir empfehlen jedoch, eine Bucket-Richtlinie zu verwenden. 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 eine Bucket-Richtlinie verwenden, um dem Protokollierungsserviceprinzipal Zugriffsberechtigungen zu erteilen. Weitere Informationen finden Sie unter Berechtigungen für Protokollbereitstellung.

  • Das Hinzufügen von Bedingungen für eine Ablehnung zu einer Bucket-Richtlinie hindert Amazon S3 möglicherweise an der Bereitstellung von Zugriffsprotokollen.

  • Sie können die Standard-Bucket-Verschlüsselung für den Ziel-Bucket nur verwenden, wenn Sie AES256 (SSE-S3) verwenden. Standardverschlüsselung mit AWS KMS-Schlüsseln (SSE-KMS) wird nicht unterstützt.

  • Sie können die S3-Objektsperre nicht für den Ziel-Bucket aktivieren.

Berechtigungen für Protokollbereitstellung

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.

Um Zugriff mit der Bucket-Richtlinie im Ziel-Bucket zu gewähren, aktualisieren Sie die Bucket-Richtlinie so, dass sie den s3:PutObject-Zugriff für den Prinzipal des Protokollierungsservices zulässt. Wenn Sie die Amazon-S3-Konsole verwenden, um die Protokollierung für den Serverzugriff zu aktivieren, aktualisiert die Konsole automatisch die Bucket-Richtlinie für den Ziel-Bucket, um diese Berechtigungen für den Protokollierungsserviceprinzipal zu erteilen. Wenn Sie die Protokollierung des Serverzugriffs programmgesteuert aktivieren, können Sie die Bucket-Richtlinie für den Ziel-Bucket manuell aktualisieren, um Zugriff auf den Prinzipal des Protokollierungsservices zu gewähren.

Sie können abwechselnd Bucket-ACLs verwenden, um Zugriff auf die Zugriffsprotokollbereitstellung zu gewähren. Sie fügen der Bucket-ACL einen Erteilungseintrag hinzu, der WRITE-und READ_ACP-Berechtigungen für die S3-Protokollbereitstellungs-Gruppe gewährt. Es wird nicht empfohlen, den Zugriff auf die S3-Protokollbereitstellungsgruppe mit Ihrer Bucket-ACL zu gewähren. Weitere Informationen finden Sie unter Weitere Informationen finden Sie unter Steuern des Eigentums an Objekten und Deaktivieren von ACLs für Ihren Bucket..

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. Sie können Ihre Bucket-ACL nicht aktualisieren, um Zugriff auf die S3-Protokollbereitstellungsgruppe zu gewähren. Sie können auch keine Ziel-Erteilungen in Ihre PutBucketLogging-Konfiguration einschließen. Informationen zum Migrieren vorhandener Bucket-ACLs für die Zustellung von Zugriffsprotokollen auf eine Bucket-Richtlinie finden Sie unter Gewähren Sie Zugriff auf die S3-Protokollbereitstellungsgruppe für die Protokollierung des Serverzugriffs. Informationen zu Object Ownership finden Sie unter Weitere Informationen finden Sie unter Steuern des Eigentums an Objekten und Deaktivieren von ACLs für Ihren Bucket..

Erteilen Sie Berechtigungen für den Protokollierungsserviceprinzipal mithilfe einer Bucket-Richtlinie

In diesem Beispiel gewährt Bucket-Richtlinien s3:PutObject-Berechtigungen für den Prinzipal des Protokollierungsservices (logging.s3.amazonaws.com). Um diese Bucket-Richtlinie zu verwenden, ersetzen Sie die Beispielwerte.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3ServerAccessLogsPolicy", "Effect": "Allow", "Principal": { "Service": "logging.s3.amazonaws.com" }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/EXAMPLE-LOGGING-PREFIX*", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:::SOURCE-BUCKET-NAME" }, "StringEquals": { "aws:SourceAccount": "SOURCE-ACCOUNT-ID" } } } ] }

Erteilen Sie der Protokollbereitstellungsgruppe Berechtigungen mit der Bucket-ACL

Obwohl wir diesen Ansatz nicht empfehlen, können Sie der Protokollbereitstellungsgruppe Berechtigungen mit Bucket ACL erteilen. Wenn der Ziel-Bucket jedoch die erzwungene Einstellung für den Bucket-Eigentümer für Object Ownership verwendet, können Sie keine Bucket- oder Objekt-ACLs festlegen. Sie können auch keine Ziel-Erteilungen in Ihre PutBucketLogging-Konfiguration einschließen. Sie müssen eine Bucket-Richtlinie verwenden, um dem Protokollierungsserviceprinzipal (logging.s3.amazonaws.com) Zugriff zu gewähren. Weitere Informationen finden Sie unter Berechtigungen für Protokollbereitstellung.

In der Bucket-ACL wird die Protokollbereitstellungsgruppe durch die folgende URL dargestellt.

http://acs.amazonaws.com/groups/s3/LogDelivery

Um WRITE- und READ_ACP-(ACL-Lese-)-Berechtigungen zu erteilen, fügen Sie der Ziel-Bucket-ACL die folgenden Berechtigungen hinzu.

<Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"> <URI>http://acs.amazonaws.com/groups/s3/LogDelivery</URI> </Grantee> <Permission>WRITE</Permission> </Grant> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"> <URI>http://acs.amazonaws.com/groups/s3/LogDelivery</URI> </Grantee> <Permission>READ_ACP</Permission> </Grant>

Beispiele zum Hinzufügen von programmgesteuerten ACL-Berechtigungen finden Sie unter Konfigurieren von ACLs.

Wichtig

Wenn Sie die Amazon-S3-Serverzugriffsprotokollierung mitAWS CloudFormationy für einen Bucket aktivieren und ACLs verwenden, um Zugriff auf die S3-Protokollbereitstellungsgruppe zu gewähren, müssen Sie auch AccessControl": "LogDeliveryWrite" im Eigenschaftsfeld Ihres Buckets hinzufügen. Dies ist wichtig, da Sie diese Berechtigungen nur erteilen können, indem Sie eine ACL für den Bucket erstellen, aber keine benutzerdefinierten ACLs für Buckets in CloudFormation erstellen. Sie können nur vorgefertigte ACLs verwenden.

Vorgehensweise zum Aktivieren der Server-Zugriffsprotokollierung

Verwenden Sie die folgenden Beispiele, um die Server-Zugriffsprotokollierung mit der AWS Management Console, AWS CLI, REST API und AWS SDK for .NET zu ermöglichen.

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die Amazon S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie in der Liste Buckets den Namen des Buckets aus, für den Sie die Server-Zugriffsprotokollierung aktivieren möchten.

  3. Wählen Sie Properties (Eigenschaften).

  4. Wählen Sie im Abschnitt Server access logging (Server-Zugriffsprotokollierung) die Option Edit (Bearbeiten) aus.

  5. Wählen Sie unter Server access logging (Server-Zugriffsprotokollierung) die Option Enable (Aktivieren) aus.

  6. Wählen Sie unter Target (Ziel) den Namen des Buckets aus, der die Protokolldatensatzobjekte empfangen soll.

    Der Ziel-Bucket muss sich in derselben -Region wie der Quell-Bucket befinden. Außerdem darf für den Ziel-Bucket kein Standardaufbewahrungszeitraum konfiguriert sein.

  7. Wählen Sie Save Changes.

    Wenn Sie die Protokollierung für den Serverzugriff an einem Bucket aktivieren, aktiviert die Konsole sowohl die Protokollierung für den Quell-Bucket als auch die Aktualisierung der Bucket-Richtlinie für den Ziel-Bucket s3:PutObject-Berechtigungen für den Prinzipal des Protokollierungsservices (logging.s3.amazonaws.com) enthalten. Weitere Informationen zu dieser Bucket-Richtlinie finden Sie unter Erteilen Sie Berechtigungen für den Protokollierungsserviceprinzipal mithilfe einer Bucket-Richtlinie.

    Sie können die Protokolle im Ziel-Bucket anzeigen. Nachdem Sie die Server-Zugriffsprotokollierung aktiviert haben, kann es einige Stunden dauern, bis die Protokolle in den Ziel-Bucket geliefert werden. Weitere Informationen darüber, wie und wann Protokolle ausgeliefert werden, finden Sie unter Wie werden Protokolle bereitgestellt?.

Weitere Informationen finden Sie unter Anzeigen der Eigenschaften eines S3-Buckets.

Zum Aktivieren der Protokollierung senden Sie eine Anforderung zur PUT-Bucket-Protokollierung, um die Protokollierungskonfiguration im Quell-Bucket hinzuzufügen. die Anforderung gibt den Ziel-Bucket und optional das Präfix an, das für alle Protokollobjektschlüssel verwendet werden soll.

Das folgende Beispiel gibt LOGBUCKET als Ziel-Bucket und logs/ als Präfix an.

<BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01"> <LoggingEnabled> <TargetBucket>LOGBUCKET</TargetBucket> <TargetPrefix>logs/</TargetPrefix> </LoggingEnabled> </BucketLoggingStatus>

Die Protokollobjekte werden vom S3-Protokollübermittlungskonto geschrieben und besitzen dessen Eigentümer, und der Bucket-Eigentümer erhält vollständige Berechtigungen für die Protokollobjekte. Sie können optional Zielerteilungen verwenden, um anderen Benutzern Berechtigungen zu erteilen, damit diese auf die Protokolle zugreifen können. Weitere Informationen finden Sie unter PUT-Bucket-Protokollierung.

Anmerkung

Wenn der Ziel-Bucket die Einstellung Bucket-Eigentümer erzwungen für Object Ownership verwendet, können Sie keine Zielerteilungen verwenden, um anderen Benutzern Berechtigungen zu erteilen. Um anderen Berechtigungen zu erteilen, können Sie die Bucket-Richtlinie für den Ziel-Bucket aktualisieren. Weitere Informationen finden Sie unter Berechtigungen für Protokollbereitstellung.

Amazon S3 bietet auch die GET-Bucket-Protokollierung-API, um die Protokollierungskonfiguration für einen Bucket abzurufen. Um die Protokollierungskonfiguration zu löschen, senden Sie die Anforderung zur PUT-Bucket-Protokollierung mit einem leeren BucketLoggingStatus.

<BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01"> </BucketLoggingStatus>

Sie können zum Aktivieren der Protokollierung in einem Bucket entweder die Amazon S3 API oder die AWS-SDK Wrapper-Bibliotheken verwenden.

.NET

Im folgenden C#-Beispiel wird die Protokollierung für einen Bucket aktiviert. Sie müssen zwei Buckets erstellen: einen Quell-Bucket und einen Ziel-Bucket. Das Beispiel aktualisiert zuerst die Bucket-ACL im Ziel-Bucket und gewährt der Protokollbereitstellungs-Gruppe die erforderlichen Berechtigungen zum Schreiben von Protokollen in den Ziel-Bucket und aktiviert dann die Protokollierung im Quell-Bucket.

Dieses Beispiel funktioniert nicht für Ziel-Buckets, die die erzwungene Einstellung für den Bucket-Eigentümer für Object Ownership verwenden.

Wenn der Ziel-Bucket die erzwungene Einstellung für den Bucket-Eigentümer für Object Ownership verwendet, können Sie keine Bucket- oder Objekt-ACLs festlegen. Sie können auch keine Ziel-Erteilungen in Ihre PutBucketLogging-Konfiguration einschließen. Sie müssen eine Bucket-Richtlinie verwenden, um dem Protokollierungsserviceprinzipal (logging.s3.amazonaws.com) Zugriff zu gewähren. Weitere Informationen finden Sie unter Berechtigungen für Protokollbereitstellung.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class ServerAccesLoggingTest { private const string bucketName = "*** bucket name for which to enable logging ***"; private const string targetBucketName = "*** bucket name where you want access logs stored ***"; private const string logObjectKeyPrefix = "Logs"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { client = new AmazonS3Client(bucketRegion); EnableLoggingAsync().Wait(); } private static async Task EnableLoggingAsync() { try { // Step 1 - Grant Log Delivery group permission to write log to the target bucket. await GrantPermissionsToWriteLogsAsync(); // Step 2 - Enable logging on the source bucket. await EnableDisableLoggingAsync(); } catch (AmazonS3Exception e) { Console.WriteLine("Error encountered on server. Message:'{0}' when writing an object", e.Message); } catch (Exception e) { Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message); } } private static async Task GrantPermissionsToWriteLogsAsync() { var bucketACL = new S3AccessControlList(); var aclResponse = client.GetACL(new GetACLRequest { BucketName = targetBucketName }); bucketACL = aclResponse.AccessControlList; bucketACL.AddGrant(new S3Grantee { URI = "http://acs.amazonaws.com/groups/s3/LogDelivery" }, S3Permission.WRITE); bucketACL.AddGrant(new S3Grantee { URI = "http://acs.amazonaws.com/groups/s3/LogDelivery" }, S3Permission.READ_ACP); var setACLRequest = new PutACLRequest { AccessControlList = bucketACL, BucketName = targetBucketName }; await client.PutACLAsync(setACLRequest); } private static async Task EnableDisableLoggingAsync() { var loggingConfig = new S3BucketLoggingConfig { TargetBucketName = targetBucketName, TargetPrefix = logObjectKeyPrefix }; // Send request. var putBucketLoggingRequest = new PutBucketLoggingRequest { BucketName = bucketName, LoggingConfig = loggingConfig }; await client.PutBucketLoggingAsync(putBucketLoggingRequest); } } }

Wir empfehlen, in jeder AWS-Region mit S3-Buckets einen speziellen Protokoll-Bucket zu erstellen. Veranlassen Sie dann die Bereitstellung des Amazon-S3-Zugriffsprotokolls in diesem S3-Bucket. Weitere Informationen und Beispiele finden Sie unter put-bucket-logging in der AWS CLI-Referenz.

Wenn der Ziel-Bucket die erzwungene Einstellung für den Bucket-Eigentümer für Object Ownership verwendet, können Sie keine Bucket- oder Objekt-ACLs festlegen. Sie können auch keine Ziel-Erteilungen in Ihre PutBucketLogging-Konfiguration einschließen. Sie müssen eine Bucket-Richtlinie verwenden, um dem Protokollierungsserviceprinzipal (logging.s3.amazonaws.com) Zugriff zu gewähren. Weitere Informationen finden Sie unter Berechtigungen für Protokollbereitstellung.

Beispiel – Aktivieren von Zugriffsprotokollen für fünf Buckets in zwei Regionen

In diesem Beispiel werden die folgenden fünf Buckets verwendet:

  • 1-DOC-EXAMPLE-BUCKET1-us-east-1

  • 2-DOC-EXAMPLE-BUCKET1-us-east-1

  • 3-DOC-EXAMPLE-BUCKET1-us-east-1

  • 1-DOC-EXAMPLE-BUCKET1-us-west-2

  • 2-DOC-EXAMPLE-BUCKET1-us-west-2

  1. Erstellen Sie zwei Protokoll-Buckets in den folgenden Regionen:

    • DOC-EXAMPLE-BUCKET1-logs-us-east-1

    • DOC-EXAMPLE-BUCKET1-logs-us-west-2

  2. Aktivieren Sie dann die Amazon-S3-Zugriffsprotokolle wie folgt:

    • 1-DOC-EXAMPLE-BUCKET1-us-east-1 protokolliert im S3-Bucket DOC-EXAMPLE-BUCKET1-logs-us-east-1 mit dem Präfix 1-DOC-EXAMPLE-BUCKET1-us-east-1

    • 2-DOC-EXAMPLE-BUCKET1-us-east-1 protokolliert im S3-Bucket DOC-EXAMPLE-BUCKET1-logs-us-east-1 mit dem Präfix 2-DOC-EXAMPLE-BUCKET1-us-east-1

    • 3-DOC-EXAMPLE-BUCKET1-us-east-1 protokolliert im S3-Bucket DOC-EXAMPLE-BUCKET1-logs-us-east-1 mit dem Präfix 3-DOC-EXAMPLE-BUCKET1-us-east-1

    • 1-DOC-EXAMPLE-BUCKET1-us-west-2 protokolliert im S3-Bucket DOC-EXAMPLE-BUCKET1-logs-us-west-2 mit dem Präfix 1-DOC-EXAMPLE-BUCKET1-us-west-2

    • 2-DOC-EXAMPLE-BUCKET1-us-west-2 protokolliert im S3-Bucket DOC-EXAMPLE-BUCKET1-logs-us-west-2 mit dem Präfix 2-DOC-EXAMPLE-BUCKET1-us-west-2

  3. Erteilen Sie Berechtigungen für die Bereitstellung von Serverzugriffsprotokoll mithilfe einer Bucket-ACL oder einer Bucket-Richtlinie:

    • Aktualisieren Sie die Bucket-Richtlinie (Empfohlen) – Um dem Prinzipal des Protokollierungsservices Berechtigungen zu erteilen, verwenden Sie put-bucket-policy:

      aws s3api put-bucket-policy --bucket DOC-EXAMPLE-BUCKET1-logs --policy file://policy.json

      Policy.json ist ein JSON-Dokument im aktuellen Ordner, das die Bucketrichtlinie enthält. Um diese Bucket-Richtlinie zu verwenden, ersetzen Sie die Beispielwerte.

      { "Version": "2012-10-17", "Statement": [ { "Sid": "S3ServerAccessLogsPolicy", "Effect": "Allow", "Principal": { "Service": "logging.s3.amazonaws.com" }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET1-logs/*", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:::SOURCE-BUCKET-NAME" }, "StringEquals": { "aws:SourceAccount": "SOURCE-ACCOUNT-ID" } } } ] }
    • Aktualisieren der Bucket-ACL – Zum Erteilen von Berechtigungen für die S3-Protokollbereitstellungsgruppe verwenden Sie put-bucket-acl.

      aws s3api put-bucket-acl --bucket DOC-EXAMPLE-BUCKET1-logs --grant-write URI=http://acs.amazonaws.com/groups/s3/LogDelivery --grant-read-acp URI=http://acs.amazonaws.com/groups/s3/LogDelivery
  4. Weisen Sie dann die Protokollierungsrichtlinie zu.

    aws s3api put-bucket-logging --bucket DOC-EXAMPLE-BUCKET1 --bucket-logging-status file://logging.json

    Logging.json ist ein JSON-Dokument im aktuellen Ordner, das die Protokollierungskonfiguration enthält. Wenn ein Bucket dieEinstellung Bucket-Eigentümer erzwungen für Object Ownership verwendet, darf Ihre Protokollierungskonfiguration keine Zielzuschüsse enthalten. Weitere Informationen finden Sie unter Berechtigungen für Protokollbereitstellung.

    Beispiel – Logging.json ohne Zielzuschüsse

    Die folgende Logging.json-Beispieldatei enthält keine Zielzuweisungen und kann auf einen Bucket angewendet werden, der die Einstellung Bucket-Eigentümer erzwungen für Object Ownership verwendet.

    { "LoggingEnabled": { "TargetBucket": "DOC-EXAMPLE-BUCKET1-logs", "TargetPrefix": "DOC-EXAMPLE-BUCKET1/" } }
    Beispiel – Logging.json mit Zielzuschüssen

    Die folgende Logging.json-Beispieldatei enthält Zielzuweisungen.

    Wenn der Ziel-Bucket die Einstellung „Bucket-Eigentümer erzwungen“ für die Objekteigentümerschaft verwendet, können Sie keine Zielzuweisungen in Ihre PutBucketLogging-Konfiguration aufnehmen. Weitere Informationen finden Sie unter Berechtigungen für Protokollbereitstellung.

    { "LoggingEnabled": { "TargetBucket": "DOC-EXAMPLE-BUCKET1-logs", "TargetPrefix": "DOC-EXAMPLE-BUCKET1/", "TargetGrants": [ { "Grantee": { "Type": "AmazonCustomerByEmail", "EmailAddress": "user@example.com" }, "Permission": "FULL_CONTROL" } ] } }
  5. Verwenden Sie ein Bash-Skript, um allen Buckets im Konto die Zugriffsprotokollierung hinzuzufügen.

    Anmerkung

    Dieses Skript funktioniert nur, wenn sich alle Buckets in derselben Region befinden. Sind die Buckets auf mehrere Regionen verteilt, müssen Sie das Skript anpassen.

    Beispiel - Gewähren Sie Zugriff mit Bucket-Richtlinien und fügen Sie die Protokollierung für die Buckets in Ihrem Konto hinzu
    loggingBucket='DOC-EXAMPLE-BUCKET1-logs' region='us-west-2' # Create Logging bucket aws s3 mb s3://$loggingBucket --region $region aws s3api put-bucket-policy --bucket $loggingBucket --policy file://policy.json # List buckets in this account buckets="$(aws s3 ls | awk '{print $3}')" # Put bucket logging on each bucket for bucket in $buckets do printf '{ "LoggingEnabled": { "TargetBucket": "%s", "TargetPrefix": "%s/" } }' "$loggingBucket" "$bucket" > logging.json aws s3api put-bucket-logging --bucket $bucket --bucket-logging-status file://logging.json echo "$bucket done" done rm logging.json echo "Complete"
    Beispiel - Gewähren Sie Zugriff mit Bucket-ACLs und fügen Sie die Protokollierung für die Buckets in Ihrem Konto hinzu
    loggingBucket='DOC-EXAMPLE-BUCKET1-logs' region='us-west-2' # Create Logging bucket aws s3 mb s3://$loggingBucket --region $region aws s3api put-bucket-acl --bucket $loggingBucket --grant-write URI=http://acs.amazonaws.com/groups/s3/LogDelivery --grant-read-acp URI=http://acs.amazonaws.com/groups/s3/LogDelivery # List buckets in this account buckets="$(aws s3 ls | awk '{print $3}')" # Put bucket logging on each bucket for bucket in $buckets do printf '{ "LoggingEnabled": { "TargetBucket": "%s", "TargetPrefix": "%s/" } }' "$loggingBucket" "$bucket" > logging.json aws s3api put-bucket-logging --bucket $bucket --bucket-logging-status file://logging.json echo "$bucket done" done rm logging.json echo "Complete"