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 tramite CloudTrail
In Amazon S3, puoi identificare le richieste utilizzando un registro AWS CloudTrail eventi. AWS CloudTrail è il metodo preferito per identificare le richieste 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 l' CloudTrail invio di eventi a un bucket, dovresti iniziare a vedere gli oggetti andare 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 da vengono archiviati come CloudTrail compressi, gzipped JSONoggetti nel tuo bucket S3. Per trovare in modo efficiente le richieste, è necessario utilizzare un servizio come Amazon Athena per indicizzare e interrogare i CloudTrail log.
Per ulteriori informazioni su CloudTrail e Athena, consulta Creazione della tabella per i AWS CloudTrail log in Athena utilizzando la proiezione delle partizioni nella Amazon Athena User Guide.
Identificazione delle richieste Amazon S3 Signature versione 2 mediante CloudTrail
Puoi utilizzare un registro CloudTrail eventi per identificare quale versione di API firma è 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 alcuni dei tuoi flussi di lavoro utilizzano 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 aggiunge nuovi campi per un controllo di sicurezza avanzato
Nota
CloudTrail gli eventi per Amazon S3 includono la versione della firma nei dettagli della richiesta con il nome chiave di '. additionalEventData
Per trovare la versione della firma sulle richieste effettuate per oggetti in Amazon S3 comeGET
, e sulle DELETE
richiestePUT
, devi abilitare gli eventi relativi ai CloudTrail dati. (Questa funzionalità è disattivata per impostazione predefinita).
AWS CloudTrail è il metodo preferito per identificare le richieste Signature Version 2. Se utilizzi i log degli accessi del server Amazon S3, consulta Identificazione delle richieste di Signature versione 2 tramite i log degli accessi ad Amazon S3.
Argomenti
Esempi di query Athena per l'identificazione di richieste Amazon S3 Signature versione 2
Esempio : seleziona tutti gli eventi Signature Version 2 e stampa solo EventTime
, S3_Action
, Request_Parameters
, Region
, SourceIP
e UserAgent
Nella seguente query Athena, sostituisci
con i tuoi dati Athena e aumenta o rimuovi il limite secondo 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 FROM
s3_cloudtrail_events_db.cloudtrail_table
WHERE 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 FROM
s3_cloudtrail_events_db.cloudtrail_table
WHERE 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 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
/';
Quindi creare le partizioni individualmente. Non è possibile ottenere risultati da date che non sono state create.
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/';
È quindi possibile effettuare la richiesta sulla base di queste partizioni e non è necessario caricare l'intero bucket.
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
Identificazione dell'accesso agli oggetti S3 utilizzando CloudTrail
Puoi utilizzare i registri AWS CloudTrail degli eventi per identificare le richieste di accesso agli oggetti Amazon S3 per eventi ai dati GetObject
comeDeleteObject
, PutObject
e, e scoprire ulteriori informazioni su tali richieste.
L'esempio seguente mostra come ottenere tutte le richieste di PUT
oggetti per Amazon S3 da un registro AWS CloudTrail eventi.
Argomenti
Esempi di query Athena per l'identificazione di richieste di accesso agli oggetti Amazon S3
Nei seguenti esempi di query Athena, sostituisci
con i tuoi dati di Athena e modifica l'intervallo di date secondo necessità. s3_cloudtrail_events_db.cloudtrail_table
Esempio : seleziona tutti gli eventi con richieste PUT
di accesso agli oggetti e stampa solo EventTime
, EventSource
, SourceIP
, UserAgent
, BucketName
, object
e 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
'
Esempio : seleziona tutti gli eventi con richieste GET
di accesso agli oggetti e stampa solo EventTime
, EventSource
, SourceIP
, UserAgent
, BucketName
, object
e 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 = 'GetObject' AND eventTime BETWEEN '2019-07-05T00:00:00Z
' and '2019-07-06T00:00:00Z
'
Esempio : seleziona tutti gli eventi anonimi del richiedente per un bucket in un determinato periodo e stampa solo EventTime
, EventName
, EventSource
, SourceIP
, UserAgent
, BucketName
, UserARN
e AccountID
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
'
Esempio — Identifica tutte le richieste che richiedevano un'ACLautorizzazione
Il seguente esempio di query di Amazon Athena mostra come identificare tutte le richieste ai bucket S3 che richiedono una lista di controllo degli accessi () ACL per l'autorizzazione. Se la richiesta richiedeva un'ACLautorizzazione, il aclRequired
valore in è. additionalEventData
Yes
Se non ACLs fosse richiesto, non aclRequired
è presente. È possibile utilizzare queste informazioni per migrare tali ACL autorizzazioni alle policy bucket appropriate. Dopo aver creato queste politiche dei bucket, puoi ACLs disabilitarle. Per ulteriori informazioni sulla disabilitazioneACLs, consulta. Prerequisiti per la disabilitazione ACLs
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'
Nota
-
Questi esempi di query possono essere utili anche per il monitoraggio della sicurezza. Puoi rivedere i risultati per le chiamate
PutObject
oGetObject
da 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 tramite i log degli accessi Amazon S3.