View a markdown version of this page

Verwenden von Amazon-S3-Serverzugriffsprotokollen zur Identifizierung von Anforderungen - Amazon Simple Storage Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden von Amazon-S3-Serverzugriffsprotokollen zur Identifizierung von Anforderungen

Sie können mittels Amazon-S3-Serverzugriffsprotokollen Amazon-S3-Anforderungen identifizieren.

Anmerkung
  • Um Amazon S3 S3-Anfragen zu identifizieren, empfehlen wir, AWS CloudTrail Datenereignisse anstelle von Amazon S3 S3-Serverzugriffsprotokollen zu verwenden. CloudTrail Datenereignisse sind einfacher einzurichten und enthalten mehr Informationen. Weitere Informationen finden Sie unter Identifizieren von Amazon S3 S3-Anfragen mithilfe von CloudTrail.

  • Je nachdem, wie viele Zugriffsanfragen Sie erhalten, erfordert die Analyse Ihrer Protokolle möglicherweise mehr Ressourcen oder Zeit als die Verwendung von CloudTrail Datenereignissen.

Abfragen von Zugriffsprotokollen für Anforderungen über Amazon Athena

Sie können Amazon-S3-Anforderungen mit Amazon-S3-Zugriffsprotokollen mithilfe von Amazon Athena identifizieren.

Amazon S3 speichert Server-Zugriffsprotokolle als Objekte in einem S3-Bucket. Es ist oft einfacher, ein Tool zu verwenden, mit dem die Protokolle in Amazon S3 analysiert werden können. Athena unterstützt die Analyse von S3-Objekten und kann zur Abfrage von Amazon-S3-Zugriffsprotokollen verwendet werden.

Beispiel

Das folgende Beispiel zeigt, wie Sie Amazon-S3-Server-Zugriffsprotokolle in Amazon Athena abfragen können. Ersetzen Sie die user input placeholders in den folgenden Beispielen durch eigene Daten.

Anmerkung

Zur Angabe eines Amazon-S3-Speicherorts in einer Athena-Abfrage müssen Sie einen S3-URI für den Ziel-Bucket bereitstellen, in dem Ihre Protokolle bereitgestellt werden. Dieser URI muss den Bucket-Namen und das Präfix im folgenden Format enthalten: s3://amzn-s3-demo-bucket1-logs/prefix/

  1. Öffnen Sie die Athena-Konsole unter https://console.aws.amazon.com/athena/.

  2. Führen Sie im Abfrage-Editor einen Befehl wie den folgenden aus. Ersetzen Sie s3_access_logs_db durch den Namen, den Sie Ihrer Datenbank geben möchten.

    CREATE DATABASE s3_access_logs_db
    Anmerkung

    Es hat sich bewährt, die Datenbank in derselben Datenbank AWS-Region wie Ihren S3-Bucket zu erstellen.

  3. Führen Sie im Abfrage-Editor einen Befehl wie den folgenden aus, um in der in Schritt 2 erstellten Datenbank ein Tabellenschema zu erstellen. Ersetzen Sie s3_access_logs_db.mybucket_logs durch den Namen, den Sie Ihrer Tabelle geben möchten. Die Datentypwerte STRING und BIGINT sind die Zugriffsprotokolleigenschaften. Sie können diese Eigenschaften in Athena abfragen. Geben Sie für LOCATION wie oben erwähnt den Pfad von S3-Bucket und Präfix ein.

    Date-based partitioning
    CREATE EXTERNAL TABLE s3_access_logs_db.mybucket_logs( `bucketowner` STRING, `bucket_name` STRING, `requestdatetime` STRING, `remoteip` STRING, `requester` STRING, `requestid` STRING, `operation` STRING, `key` STRING, `request_uri` STRING, `httpstatus` STRING, `errorcode` STRING, `bytessent` BIGINT, `objectsize` BIGINT, `totaltime` STRING, `turnaroundtime` STRING, `referrer` STRING, `useragent` STRING, `versionid` STRING, `hostid` STRING, `sigv` STRING, `ciphersuite` STRING, `authtype` STRING, `endpoint` STRING, `tlsversion` STRING, `accesspointarn` STRING, `aclrequired` STRING, `sourceregion` STRING) PARTITIONED BY ( `timestamp` string) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' WITH SERDEPROPERTIES ( 'input.regex'='([^ ]*) ([^ ]*) \\[(.*?)\\] ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\"[^\"]*\"|-) (-|[0-9]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\"[^\"]*\"|-) ([^ ]*)(?: ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*))?.*$') STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://bucket-name/prefix-name/account-id/region/source-bucket-name/' TBLPROPERTIES ( 'projection.enabled'='true', 'projection.timestamp.format'='yyyy/MM/dd', 'projection.timestamp.interval'='1', 'projection.timestamp.interval.unit'='DAYS', 'projection.timestamp.range'='2024/01/01,NOW', 'projection.timestamp.type'='date', 'storage.location.template'='s3://bucket-name/prefix-name/account-id/region/source-bucket-name/${timestamp}')
    Non-date-based partitioning
    CREATE EXTERNAL TABLE `s3_access_logs_db.mybucket_logs`( `bucketowner` STRING, `bucket_name` STRING, `requestdatetime` STRING, `remoteip` STRING, `requester` STRING, `requestid` STRING, `operation` STRING, `key` STRING, `request_uri` STRING, `httpstatus` STRING, `errorcode` STRING, `bytessent` BIGINT, `objectsize` BIGINT, `totaltime` STRING, `turnaroundtime` STRING, `referrer` STRING, `useragent` STRING, `versionid` STRING, `hostid` STRING, `sigv` STRING, `ciphersuite` STRING, `authtype` STRING, `endpoint` STRING, `tlsversion` STRING, `accesspointarn` STRING, `aclrequired` STRING, `sourceregion` STRING) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' WITH SERDEPROPERTIES ( 'input.regex'='([^ ]*) ([^ ]*) \\[(.*?)\\] ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\"[^\"]*\"|-) (-|[0-9]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\"[^\"]*\"|-) ([^ ]*)(?: ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*))?.*$') STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://amzn-s3-demo-bucket1-logs/prefix/'
  4. Wählen Sie im Navigationsbereich unter Database (Datenbank) die Datenbank aus.

  5. Wählen Sie unter Tables (Tabellen)neben dem Namen der Tabelle Preview table (Tabellenvorschau) aus.

    Im Fensterbereich Results (Ergebnisse) sollten Daten aus den Server-Zugriffsprotokollen angezeigt werden, also bucketowner, bucket, requestdatetime usw. Dies bedeutet, dass die Athena-Tabelle erfolgreich erstellt wurde. Sie können jetzt die Amazon-S3-Server-Zugriffsprotokolle abfragen.

Beispiel– Anzeigen, wer ein Objekt um welche Uhrzeit (Zeitstempel, IP-Adresse und IAM-Benutzer) gelöscht hat
SELECT requestdatetime, remoteip, requester, key FROM s3_access_logs_db.mybucket_logs WHERE key = 'images/picture.jpg' AND operation like '%DELETE%';
Beispiel– Anzeigen aller Vorgänge, die von einem IAM-Benutzer ausgeführt wurden
SELECT * FROM s3_access_logs_db.mybucket_logs WHERE requester='arn:aws:iam::123456789123:user/user_name';
Beispiel– Anzeigen aller Vorgänge, die in einem bestimmten Zeitraum für ein Objekt ausgeführt wurden
SELECT * FROM s3_access_logs_db.mybucket_logs WHERE Key='prefix/images/picture.jpg' AND parse_datetime(requestdatetime,'dd/MMM/yyyy:HH:mm:ss Z') BETWEEN parse_datetime('2017-02-18:07:00:00','yyyy-MM-dd:HH:mm:ss') AND parse_datetime('2017-02-18:08:00:00','yyyy-MM-dd:HH:mm:ss');
Beispiel– Anzeigen der Menge der in einem festgelegten Zeitraum an eine bestimmten IP-Adresse übertragenen Daten
SELECT coalesce(SUM(bytessent), 0) AS bytessenttotal FROM s3_access_logs_db.mybucket_logs WHERE remoteip='192.0.2.1' AND parse_datetime(requestdatetime,'dd/MMM/yyyy:HH:mm:ss Z') BETWEEN parse_datetime('2022-06-01','yyyy-MM-dd') AND parse_datetime('2022-07-01','yyyy-MM-dd');
Beispiel– Findet Anforderungs-IDs für HTTP 5xx-Fehler in einem bestimmten Zeitraum
SELECT requestdatetime, key, httpstatus, errorcode, requestid, hostid FROM s3_access_logs_db.mybucket_logs WHERE httpstatus like '5%' AND timestamp BETWEEN '2024/01/29' AND '2024/01/30'

Identifizieren von Signature Version 2-Anfragen

Sie können Serverzugriffsprotokolle verwenden, um Signature Version 2-Anfragen zu identifizieren. Einzelheiten zur Abfrage von Protokollen mit Amazon Athena finden Sie im Abschnitt Athena-Abfragen unter. Bereitstellung von Protokollen an einen Amazon S3 S3-Allzweck-Bucket

Identifizieren von Objektzugriffsanforderungen

Sie können Serverzugriffsprotokolle verwenden, um Objektzugriffsmuster zu identifizieren. Einzelheiten zur Abfrage von Protokollen mit Amazon Athena finden Sie im Abschnitt Athena-Abfragen unter. Bereitstellung von Protokollen an einen Amazon S3 S3-Allzweck-Bucket