

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.

# Identifizieren von Amazon S3-Anfragen mit CloudTrail
<a name="cloudtrail-request-identification"></a>

In Amazon S3 können Sie Anfragen mithilfe eines AWS CloudTrail Ereignisprotokolls identifizieren. AWS CloudTrail ist die bevorzugte Methode zur Identifizierung von Amazon S3-Anfragen. Wenn Sie jedoch Amazon S3-Serverzugriffsprotokolle verwenden, finden Sie weitere Informationen unter[Verwenden von Amazon-S3-Serverzugriffsprotokollen zur Identifizierung von Anforderungen](using-s3-access-logs-to-identify-requests.md).

**Topics**
+ [Identifizierung von Anfragen an Amazon S3 in einem CloudTrail Protokoll](#identify-S3-requests-using-in-CTlog)
+ [Identifizieren von Amazon S3 Signature Version 2-Anfragen mithilfe von CloudTrail](#cloudtrail-identification-sigv2-requests)
+ [Identifizieren des Zugriffs auf S3-Objekte mithilfe von CloudTrail](#cloudtrail-identification-object-access)

## Identifizierung von Anfragen an Amazon S3 in einem CloudTrail Protokoll
<a name="identify-S3-requests-using-in-CTlog"></a>

Nachdem Sie die Übertragung von Ereignissen CloudTrail an einen Bucket eingerichtet haben, sollten Sie auf der Amazon S3-Konsole sehen, wie Objekte in Ihren Ziel-Bucket geleitet werden. Diese sind folgendermaßen formatiert: 

`s3://{{amzn-s3-demo-bucket1}}/AWSLogs/{{111122223333}}/CloudTrail/{{Region}}/{{yyyy}}/{{mm}}/{{dd}}` 

Von protokollierte Ereignisse CloudTrail werden als komprimierte gzipped JSON-Objekte in Ihrem S3-Bucket gespeichert. Um Anfragen effizient zu finden, sollten Sie einen Dienst wie Amazon Athena verwenden, um die CloudTrail Protokolle zu indizieren und abzufragen. 

Weitere Informationen zu CloudTrail und Athena finden Sie im * Amazon Athena-Benutzerhandbuch unter [ Erstellen der Tabelle für AWS CloudTrail Protokolle in Athena mithilfe der Partitionsprojektion](https://docs.aws.amazon.com/athena/latest/ug/cloudtrail-logs.html#create-cloudtrail-table-partition-projection). *

## Identifizieren von Amazon S3 Signature Version 2-Anfragen mithilfe von CloudTrail
<a name="cloudtrail-identification-sigv2-requests"></a>

Sie können ein CloudTrail Ereignisprotokoll verwenden, um zu ermitteln, welche API-Signaturversion zum Signieren einer Anfrage in Amazon S3 verwendet wurde. Diese Funktion ist wichtig, weil die Unterstützung für Signature Version 2 deaktiviert wird (veraltet). Danach akzeptiert Amazon S3 keine Anforderungen mit Signature Version 2 mehr, alle Anforderungen müssen also mit *Signature Version 4* signiert werden. 

Wir * empfehlen Ihnen * dringend, diese Option CloudTrail zu verwenden, um festzustellen, ob einer Ihrer Workflows Signature Version 2-Signaturen verwendet. Korrigieren Sie diese Workflows, indem Sie die betreffenden Bibliotheken und den Code so aktualisieren, dass mittels Signature Version 4 signiert wird. Dadurch können Beeinträchtigungen der geschäftlichen Prozesse werden. 

Weitere Informationen finden Sie unter [ Ankündigung: AWS CloudTrail Für Amazon S3 werden neue Felder für eine verbesserte Sicherheitsüberprüfung ](https://forums.aws.amazon.com/ann.jspa?annID=6551) hinzugefügt AWS re:Post.

**Anmerkung**  
CloudTrail Ereignisse für Amazon S3 enthalten die Signaturversion in den Anforderungsdetails unter dem Schlüsselnamen '`additionalEventData`. Um die Signaturversion bei Anfragen für Objekte in Amazon S3 wie`GET`,, `PUT` und `DELETE` Anfragen zu finden, müssen Sie CloudTrail Datenereignisse aktivieren. (Diese Option ist standardmäßig deaktiviert.)

AWS CloudTrail ist die bevorzugte Methode zur Identifizierung von Signature Version 2-Anfragen. Wenn Sie Zugriffsprotokolle von Amazon S3 Server verwenden, lesen Sie [Identifizieren von Signaturanfragen der Version 2](using-s3-access-logs-to-identify-requests.md#using-s3-access-logs-to-identify-sigv2-requests).

**Topics**
+ [Athena-Abfragebeispiele zum Identifizieren von Anforderungen zur Amazon S3 Signature Version 2](#ct-examples-identify-sigv2-requests)
+ [Partitionieren von Signature Version 2-Daten](#partitioning-sigv2-data)

### Athena-Abfragebeispiele zum Identifizieren von Anforderungen zur Amazon S3 Signature Version 2
<a name="ct-examples-identify-sigv2-requests"></a>

**Example — Wählen Sie alle Signature Version 2-Ereignisse aus und drucken Sie nur `EventTime`, `S3_Action`,, `Region Request_Parameters`, `` SourceIP und `UserAgent`**  
Ersetzen Sie in der folgenden Athena-Abfrage {{`s3_cloudtrail_events_db.cloudtrail_table`}} durch Ihre Athena-Details und erhöhen oder entfernen Sie das Limit nach Bedarf.   

```
SELECT EventTime, EventName as S3_Action, requestParameters as Request_Parameters, awsregion as AWS_Region, sourceipaddress as Source_IP, useragent as User_Agent
FROM {{s3_cloudtrail_events_db.cloudtrail_table}}
WHERE eventsource='s3.amazonaws.com'
AND json_extract_scalar(additionalEventData, '$.SignatureVersion')='SigV2'
LIMIT 10;
```

**Example – Alle Anforderer auswählen, die Signature Version 2-Datenverkehr senden**  
   

```
SELECT useridentity.arn, Count(requestid) as RequestCount
FROM {{s3_cloudtrail_events_db.cloudtrail_table}}
WHERE eventsource='s3.amazonaws.com'
    and json_extract_scalar(additionalEventData, '$.SignatureVersion')='SigV2'
Group by useridentity.arn
```

### Partitionieren von Signature Version 2-Daten
<a name="partitioning-sigv2-data"></a>

Wenn Sie über eine große Datenmenge verfügen, die abgefragt werden muss, können Sie Kosten und Laufzeit für Athena reduzieren, indem Sie eine partitionierte Tabelle erstellen. 

Erstellen Sie zu diesem Zweck folgendermaßen eine neue Tabelle mit Partitionen.

```
   CREATE EXTERNAL TABLE {{s3_cloudtrail_events_db.cloudtrail_table}}_partitioned(
        eventversion STRING,
        userIdentity STRUCT<
            type:STRING,
            principalid:STRING,
            arn:STRING,
            accountid:STRING,
            invokedby:STRING,
            accesskeyid:STRING,
            userName:STRING,
         sessioncontext:STRUCT<
                    attributes:STRUCT< 
                    mfaauthenticated:STRING,
                    creationdate:STRING>,
                    sessionIssuer:STRUCT<
                    type:STRING,
                    principalId:STRING,
                    arn:STRING,
                    accountId:STRING,
                    userName:STRING>
                >
             >,
        eventTime STRING,
        eventSource STRING,
        eventName STRING,
        awsRegion STRING,
        sourceIpAddress STRING,
        userAgent STRING,
        errorCode STRING,
        errorMessage STRING,
        requestParameters STRING,
        responseElements STRING,
        additionalEventData STRING,
        requestId STRING,
        eventId STRING,
        resources ARRAY<STRUCT<ARN:STRING,accountId: STRING,type:STRING>>, 
        eventType STRING,
        apiVersion STRING,
        readOnly STRING,
        recipientAccountId STRING,
        serviceEventDetails STRING,
        sharedEventID STRING,
        vpcEndpointId STRING
    )   
    PARTITIONED BY (region string, year string, month string, day string)
    ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.orc.OrcSerde' 
    STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.SymlinkTextInputFormat'
    OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
    LOCATION 's3://{{amzn-s3-demo-bucket1}}/AWSLogs/{{111122223333}}/';
```

Erstellen Sie dann die einzelnen Partitionen. Sie können keine Resultate aus noch nicht erstellten Daten ermitteln. 

```
ALTER TABLE {{s3_cloudtrail_events_db.cloudtrail_table}}_partitioned ADD
    PARTITION (region= 'us-east-1', year= '2019', month= '02', day= '19') LOCATION 's3://{{amzn-s3-demo-bucket1}}/AWSLogs/{{111122223333}}/CloudTrail/us-east-1/2019/02/19/'
    PARTITION (region= 'us-west-1', year= '2019', month= '02', day= '19') LOCATION 's3://{{amzn-s3-demo-bucket1}}/AWSLogs/{{111122223333}}/CloudTrail/us-west-1/2019/02/19/'
    PARTITION (region= 'us-west-2', year= '2019', month= '02', day= '19') LOCATION 's3://{{amzn-s3-demo-bucket1}}/AWSLogs/{{111122223333}}/CloudTrail/us-west-2/2019/02/19/'
    PARTITION (region= 'ap-southeast-1', year= '2019', month= '02', day= '19') LOCATION 's3://{{amzn-s3-demo-bucket1}}/AWSLogs/{{111122223333}}/CloudTrail/ap-southeast-1/2019/02/19/'
    PARTITION (region= 'ap-southeast-2', year= '2019', month= '02', day= '19') LOCATION 's3://{{amzn-s3-demo-bucket1}}/AWSLogs/{{111122223333}}/CloudTrail/ap-southeast-2/2019/02/19/'
    PARTITION (region= 'ap-northeast-1', year= '2019', month= '02', day= '19') LOCATION 's3://{{amzn-s3-demo-bucket1}}/AWSLogs/{{111122223333}}/CloudTrail/ap-northeast-1/2019/02/19/'
    PARTITION (region= 'eu-west-1', year= '2019', month= '02', day= '19') LOCATION 's3://{{amzn-s3-demo-bucket1}}/AWSLogs/{{111122223333}}/CloudTrail/eu-west-1/2019/02/19/'
    PARTITION (region= 'sa-east-1', year= '2019', month= '02', day= '19') LOCATION 's3://{{amzn-s3-demo-bucket1}}/AWSLogs/{{111122223333}}/CloudTrail/sa-east-1/2019/02/19/';
```

Anschließend können Sie die Anforderung basierend auf diesen Partitionen erstellen und müssen nicht mehr den gesamten Bucket laden. 

```
SELECT useridentity.arn,
Count(requestid) AS RequestCount
FROM {{s3_cloudtrail_events_db.cloudtrail_table}}_partitioned
WHERE eventsource='s3.amazonaws.com'
AND json_extract_scalar(additionalEventData, '$.SignatureVersion')='SigV2'
AND region='{{us-east-1}}'
AND year='2019'
AND month='02'
AND day='19'
Group by useridentity.arn
```

## Identifizieren des Zugriffs auf S3-Objekte mithilfe von CloudTrail
<a name="cloudtrail-identification-object-access"></a>

Sie können Ihre AWS CloudTrail Ereignisprotokolle verwenden, um Amazon S3-Objektzugriffsanfragen für Datenereignisse wie`GetObject`, und `DeleteObject``PutObject`, zu identifizieren und zusätzliche Informationen zu diesen Anfragen zu ermitteln.

**Anmerkung**  
Wenn Sie Datenaktivitäten mit protokollieren AWS CloudTrail, enthält der Ereignisdatensatz für ein Amazon `DeleteObjects` S3-Datenereignis sowohl das `DeleteObjects` Ereignis als auch ein `DeleteObject` Ereignis für jedes Objekt, das im Rahmen dieses Vorgangs gelöscht wurde. Sie können die zusätzliche Sichtbarkeit gelöschter Objekte aus dem Ereignisdatensatz ausschließen. Weitere Informationen finden Sie unter [AWS CLI Protokollieren von Datenereignissen für Trails](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/filtering-data-events.html#filtering-data-events-deleteobjects) im *AWS CloudTrail -Benutzerhandbuch.*

Das folgende Beispiel zeigt, wie alle `PUT` Objektanfragen für Amazon S3 aus einem AWS CloudTrail Ereignisprotokoll abgerufen werden. 

**Topics**
+ [Athena-Abfragebeispiele zur Identifizierung von Amazon-S3-Objektzugriffsanfragen](#ct-examples-identify-object-access-requests)

### Athena-Abfragebeispiele zur Identifizierung von Amazon-S3-Objektzugriffsanfragen
<a name="ct-examples-identify-object-access-requests"></a>

Ersetzen Sie in den folgenden Athena-Beispielabfragen {{`s3_cloudtrail_events_db.cloudtrail_table`}} durch Ihre Athena-Details und ändern Sie den Datumsbereich nach Bedarf. 

**Example — Wählen Sie alle Ereignisse aus, für die `` PUT-Objektzugriffsanfragen vorliegen `EventTime`, und drucken Sie nur `EventSource`, `sourceIP`, `UserAgent` `BucketName``,` object und userArn ``**  

```
SELECT
  eventTime, 
  eventName, 
  eventSource, 
  sourceIpAddress, 
  userAgent, 
  json_extract_scalar(requestParameters, '$.bucketName') as bucketName, 
  json_extract_scalar(requestParameters, '$.key') as object,
  userIdentity.arn as userArn
FROM
  {{s3_cloudtrail_events_db.cloudtrail_table}}
WHERE
  eventName = 'PutObject'
  AND eventTime BETWEEN '{{2019-07-05T00:00:00Z}}' and '{{2019-07-06T00:00:00Z}}'
```

**Example — Wählen Sie alle Ereignisse aus, für die `` GET-Objektzugriffsanforderungen vorliegen, und drucken Sie nur `EventTime`, `sourceIp EventSource,, object und` `UserAgent` userArn `BucketName` `` ``**  

```
SELECT
  eventTime, 
  eventName, 
  eventSource, 
  sourceIpAddress, 
  userAgent, 
  json_extract_scalar(requestParameters, '$.bucketName') as bucketName, 
  json_extract_scalar(requestParameters, '$.key') as object,
  userIdentity.arn as userArn
FROM
  {{s3_cloudtrail_events_db.cloudtrail_table}}
WHERE
  eventName = 'GetObject'
  AND eventTime BETWEEN '{{2019-07-05T00:00:00Z}}' and '{{2019-07-06T00:00:00Z}}'
```

**Example — Wählt alle anonymen Anforderungsereignisse für einen Bucket in einem bestimmten Zeitraum aus und druckt nur `EventTime`,, `sourceIp, EventName EventSource, userArn und` accountId `UserAgent` `BucketName` `` ``**  

```
SELECT
  eventTime, 
  eventName, 
  eventSource, 
  sourceIpAddress, 
  userAgent, 
  json_extract_scalar(requestParameters, '$.bucketName') as bucketName, 
  userIdentity.arn as userArn,
  userIdentity.accountId
FROM
  {{s3_cloudtrail_events_db.cloudtrail_table}}
WHERE
  userIdentity.accountId = 'anonymous'
  AND eventTime BETWEEN '{{2019-07-05T00:00:00Z}}' and '{{2019-07-06T00:00:00Z}}'
```

**Example – Identifizieren Sie alle Anforderungen, für die eine ACL zur Autorisierung erforderlich war**  
 Das folgende Amazon-Athena-Abfragebeispiel zeigt, wie alle Anforderungen für Ihre S3-Buckets identifiziert werden, für die eine Zugriffssteuerungsliste (ACL) zur Autorisierung erforderlich war. Wenn für die Anforderung eine ACL zur Autorisierung erforderlich war, lautet der `aclRequired`-Wert in `additionalEventData` `Yes`. Wenn keine ACLs erforderlich waren, ist `aclRequired` nicht vorhanden. Sie können diese Informationen verwenden, um diese ACL-Berechtigungen zu den entsprechenden Bucket-Richtlinien zu migrieren. Nachdem Sie diese Bucket-Richtlinien erstellt haben, können Sie ACLs für diese Buckets deaktivieren. Weitere Informationen über das Deaktivieren von ACLs finden Sie unter [Voraussetzungen für die Deaktivierung von ACLs](object-ownership-migrating-acls-prerequisites.md).  

```
SELECT
  eventTime, 
  eventName, 
  eventSource, 
  sourceIpAddress, 
  userAgent, 
  userIdentity.arn as userArn,
  json_extract_scalar(requestParameters, '$.bucketName') as bucketName,
  json_extract_scalar(requestParameters, '$.key') as object,
  json_extract_scalar(additionalEventData, '$.aclRequired') as aclRequired
FROM 
  {{s3_cloudtrail_events_db.cloudtrail_table}}
WHERE
  json_extract_scalar(additionalEventData, '$.aclRequired') = 'Yes'
  AND eventTime BETWEEN '2022-05-10T00:00:00Z' and '2022-08-10T00:00:00Z'
```

**Anmerkung**  
Diese Abfragebeispiele können auch für die Sicherheitsüberwachung nützlich sein. Sie können die Ergebnisse auf `PutObject`- oder `GetObject`-Aufrufe von unerwarteten oder nicht autorisierten IP-Adressen oder Anforderern und zum Identifizieren anonymer Anforderungen an Ihre Buckets prüfen.
 Diese Abfrage ruft nur Informationen von der Zeit ab, zu der die Protokollierung aktiviert wurde. 

Wenn Sie Amazon-S3-Server-Zugriffsprotokolle verwenden, lesen Sie [Identifizieren von Objektzugriffsanfragen](using-s3-access-logs-to-identify-requests.md#using-s3-access-logs-to-identify-objects-access).