Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Identificazione delle richieste Amazon S3 utilizzando CloudTrail
In Amazon S3, puoi identificare le richieste utilizzando un registro AWS CloudTrail degli eventi. AWS CloudTrail è il modo preferito per identificare le richieste di Amazon S3, ma se utilizzi i log di accesso al server Amazon S3, consulta. Utilizzo dei log degli accessi al server Amazon S3 per identificare le richieste
Argomenti
Identificazione delle richieste effettuate ad Amazon S3 in un registro CloudTrail
Dopo aver configurato CloudTrail la distribuzione degli eventi a un bucket, dovresti iniziare a vedere gli oggetti arrivare al bucket di destinazione sulla console Amazon S3. Questi sono formattati come riportato di seguito:
s3://
amzn-s3-demo-bucket1/AWSLogs/111122223333/CloudTrail/Region/yyyy/mm/dd
Gli eventi registrati CloudTrail vengono archiviati come oggetti gzipped JSON compressi nel bucket S3. Per trovare in modo efficiente le richieste, dovresti utilizzare un servizio come Amazon Athena per indicizzare e interrogare i log. CloudTrail
Per ulteriori informazioni su CloudTrail e Athena, consulta Creating the table for AWS CloudTrail logs in Athena using partition projection nella Amazon Athena User Guide.
Identificazione delle richieste Amazon S3 Signature versione 2 utilizzando CloudTrail
Puoi utilizzare un registro CloudTrail eventi per identificare quale versione di firma API è stata utilizzata per firmare una richiesta in Amazon S3. Questa possibilità è importante perché il supporto di Signature Version 2 sta per essere disattivato perché obsoleto. Dopo, Amazon S3 non accetterà più le richieste che usano Signature Version 2 e tutte le richieste dovranno usare la firma Signature Version 4.
Ti consigliamo vivamente di CloudTrail utilizzarlo per determinare se qualcuno dei tuoi flussi di lavoro utilizza la firma Signature versione 2. Nel caso, correggili aggiornando le librerie e il codice in modo che utilizzino invece Signature Version 4 per evitare qualsiasi impatto sul business.
Per ulteriori informazioni, consulta Annuncio: AWS CloudTrail per Amazon S3 vengono aggiunti nuovi campi per un controllo
Nota
CloudTrail gli eventi per Amazon S3 includono la versione della firma nei dettagli della richiesta sotto il nome chiave di '. additionalEventData Per trovare la versione della firma sulle richieste fatte per oggetti in Amazon S3, ad esempioGET, e sulle DELETE richiestePUT, devi abilitare gli eventi CloudTrail relativi ai dati. (Questa funzionalità è disattivata per impostazione predefinita).
AWS CloudTrail è il metodo preferito per identificare le richieste di Signature Version 2. Se utilizzi i log degli accessi del server Amazon S3, consulta Identificazione delle richieste di Signature Version 2.
Argomenti
Esempi di query Athena per l'identificazione di richieste Amazon S3 Signature versione 2
Esempio— Seleziona tutti gli eventi di Signature Version 2 e stampa solo EventTime, S3_Action, Region Request_Parameters, SourceIP e UserAgent
Region Request_ParametersNella query Athena seguente sostituisci con i dettagli Athena e aumenta o rimuovi il limite in base alle necessità. s3_cloudtrail_events_db.cloudtrail_table
SELECT EventTime, EventName as S3_Action, requestParameters as Request_Parameters, awsregion as AWS_Region, sourceipaddress as Source_IP, useragent as User_Agent FROMs3_cloudtrail_events_db.cloudtrail_tableWHERE eventsource='s3.amazonaws.com' AND json_extract_scalar(additionalEventData, '$.SignatureVersion')='SigV2' LIMIT 10;
Esempio- Selezionare tutti i richiedenti che inviano traffico di tipo Signature versione 2
SELECT useridentity.arn, Count(requestid) as RequestCount FROMs3_cloudtrail_events_db.cloudtrail_tableWHERE eventsource='s3.amazonaws.com' and json_extract_scalar(additionalEventData, '$.SignatureVersion')='SigV2' Group by useridentity.arn
Partizionamento dei dati di Signature versione 2
Se è necessario eseguire query su una grande quantità di dati, è possibile ridurre i costi e i tempi di esecuzione di Athena creando una tabella partizionata.
Per farlo, creare una nuova tabella con partizioni nel modo seguente.
CREATE EXTERNAL TABLEs3_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/';
Quindi creare le partizioni individualmente. Non è possibile ottenere risultati da date che non sono state create.
ALTER TABLEs3_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/';
È quindi possibile effettuare la richiesta sulla base di queste partizioni e non è necessario caricare l'intero bucket.
SELECT useridentity.arn, Count(requestid) AS RequestCount FROMs3_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
Identificazione dell'accesso agli oggetti S3 utilizzando CloudTrail
Puoi utilizzare i registri AWS CloudTrail degli eventi per identificare le richieste di accesso agli oggetti di Amazon S3 per eventi di dati come GetObject DeleteObjectPutObject, e e scoprire informazioni aggiuntive su tali richieste.
Nota
Se stai registrando l'attività dei dati con AWS CloudTrail, il record dell'evento per un evento di DeleteObjects dati di Amazon S3 include sia l'DeleteObjectsevento che un DeleteObject evento per ogni oggetto eliminato come parte di tale operazione. È possibile escludere la visibilità aggiuntiva sugli oggetti eliminati dal record dell’evento. Per ulteriori informazioni, consulta Esempi della AWS CLI per filtrare eventi di dati nella Guida per l’utente dell’AWS CloudTrail .
L'esempio seguente mostra come ottenere tutte le richieste di PUT oggetti per Amazon S3 da un AWS CloudTrail registro eventi.
Argomenti
Esempi di query Athena per l'identificazione di richieste di accesso agli oggetti Amazon S3
Negli esempi di query Athena seguenti sostituisci con i dettagli Athena e modifica l'intervallo della data in base alle necessità. s3_cloudtrail_events_db.cloudtrail_table
Esempio— Seleziona tutti gli eventi che hanno richieste di accesso agli oggetti PUT e stampa solo EventTime,, sourceIP EventSource,, UserAgent BucketName, object e UserArn
EventSource,,SELECT eventTime, eventName, eventSource, sourceIpAddress, userAgent, json_extract_scalar(requestParameters, '$.bucketName') as bucketName, json_extract_scalar(requestParameters, '$.key') as object, userIdentity.arn as userArn FROMs3_cloudtrail_events_db.cloudtrail_tableWHERE eventName = 'PutObject' AND eventTime BETWEEN '2019-07-05T00:00:00Z' and '2019-07-06T00:00:00Z'
Esempio— Seleziona tutti gli eventi che hanno richieste di accesso agli oggetti GET e stampa solo,, sourceIP EventTime,, EventSource, object e UserArn UserAgent BucketName
EventTime,, EventSource, object eSELECT eventTime, eventName, eventSource, sourceIpAddress, userAgent, json_extract_scalar(requestParameters, '$.bucketName') as bucketName, json_extract_scalar(requestParameters, '$.key') as object, userIdentity.arn as userArn FROMs3_cloudtrail_events_db.cloudtrail_tableWHERE eventName = 'GetObject' AND eventTime BETWEEN '2019-07-05T00:00:00Z' and '2019-07-06T00:00:00Z'
Esempio— Seleziona tutti gli eventi anonimi dei richiedenti in un bucket in un determinato periodo e stampa solo EventTime,,, sourceIP,, EventName EventSource, userArn e AccountID UserAgent BucketName
SELECT eventTime, eventName, eventSource, sourceIpAddress, userAgent, json_extract_scalar(requestParameters, '$.bucketName') as bucketName, userIdentity.arn as userArn, userIdentity.accountId FROMs3_cloudtrail_events_db.cloudtrail_tableWHERE userIdentity.accountId = 'anonymous' AND eventTime BETWEEN '2019-07-05T00:00:00Z' and '2019-07-06T00:00:00Z'
Esempio: identifica tutte le richieste che richiedono una ACL per l'autorizzazione
L'esempio di query Amazon Athena seguente mostra come identificare tutte le richieste relative ai bucket S3 che richiedono una lista di controllo degli accessi (ACL) per l'autorizzazione. Se la richiesta richiede una ACL per l'autorizzazione, il valore aclRequired in additionalEventData è Yes. Se non sono richieste ACL, aclRequired non è presente. È possibile utilizzare queste informazioni per eseguire la migrazione delle autorizzazioni ACL alle policy di bucket appropriate. Dopo aver creato queste policy per i bucket, è possibile disabilitare le ACL per questi bucket. Per ulteriori informazioni sulla disabilitazione delle ACL, consulta Prerequisiti per la disabilitazione delle ACL.
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 FROMs3_cloudtrail_events_db.cloudtrail_tableWHERE json_extract_scalar(additionalEventData, '$.aclRequired') = 'Yes' AND eventTime BETWEEN '2022-05-10T00:00:00Z' and '2022-08-10T00:00:00Z'
Nota
-
Questi esempi di query possono essere utili anche per il monitoraggio della sicurezza. Puoi rivedere i risultati per le chiamate
PutObjectoGetObjectda indirizzi IP o richiedenti imprevisti o non autorizzati e per l'identificazione di eventuali richieste anonime ai bucket. -
La query recupera solo le informazioni a partire dall'orario in cui è stata abilitata la registrazione.
Se utilizzi i log di accesso al server Amazon S3, consulta Identificazione delle richieste di accesso agli oggetti.