Uso de los registros de acceso al servidor de Amazon S3 para identificar solicitudes
Puede identificar las solicitudes de Amazon S3 mediante los registros de acceso al servidor de Amazon S3.
nota
-
Para identificar solicitudes de Amazon S3, le recomendamos que utilice eventos de datos de AWS CloudTrail en lugar de los registros de acceso al servidor de Amazon S3. Los eventos de datos de CloudTrail son más fáciles de configurar y contienen más información. Para obtener más información, consulte Identificación de solicitudes de Amazon S3 mediante CloudTrail.
-
Según el número de solicitudes de acceso que obtenga, analizar sus registros puede requerir más recursos o tiempo que usar eventos de datos de CloudTrail.
Temas
Consultar los registros de acceso para solicitudes mediante Amazon Athena
Puede identificar las solicitudes de Amazon S3 con los registros de acceso de Amazon S3 mediante Amazon Athena.
Amazon S3 almacena los registros de acceso del servidor como objetos en un bucket de S3. Suele ser más fácil utilizar una herramienta que pueda analizar los registros en Amazon S3. Athena admite el análisis de objetos de S3 y se puede utilizar para consultar los registros de acceso de Amazon S3.
ejemplo
El siguiente ejemplo muestra cómo puede consultar los registros de acceso al servidor de Amazon S3 en Amazon Athena. Reemplace los utilizados en los siguientes ejemplos con su propia información.user input placeholders
nota
Para especificar una ubicación de Amazon S3 en una consulta de Athena, debe proporcionar un URI de S3 para el bucket donde se van a entregar sus registros. Este URI debe incluir el nombre y el prefijo del bucket en el siguiente formato: s3:// /amzn-s3-demo-bucket1-logs/prefix
Abra la consola de Athena en https://console.aws.amazon.com/athena/
. -
En el editor de consultas, ejecute un comando similar al siguiente. Sustituya
por el nombre que desea asignar a la base de datos.s3_access_logs_dbCREATE DATABASEs3_access_logs_dbnota
Una práctica recomendada es la creación de la base de datos en la misma Región de AWS que el bucket de S3.
-
En el editor de consultas, ejecute un comando similar al siguiente para crear un esquema de tabla en la base de datos que creó en el paso 2. Sustituya
por el nombre que desea asignar a la tabla. Los valores con los tipos de datoss3_access_logs_db.mybucket_logsSTRINGyBIGINTson las propiedades del registro de acceso. Puede consultar estas propiedades en Athena. ParaLOCATION, introduzca el bucket de S3 y la ruta del prefijo como se indicó anteriormente. -
En el panel de navegación, en Database (Base de datos), elija la base de datos.
-
En Tables (Tablas), elija Preview table (Vista previa de tabla) junto al nombre de la tabla.
En el panel Results (Resultados), debería ver los datos de los registros de acceso del servidor, como
bucketowner,bucket,requestdatetime, etc. Esto significa que ha creado correctamente la tabla de Athena. Ahora puede consultar los registros de acceso al servidor de Amazon S3.
ejemplo— Mostrar quién eliminó un objeto y cuándo (marca temporal, dirección IP y usuario de IAM)
SELECT requestdatetime, remoteip, requester, key FROMs3_access_logs_db.mybucket_logsWHERE key = 'images/picture.jpg' AND operation like '%DELETE%';
ejemplo— Mostrar todas las operaciones realizadas por un usuario de IAM
SELECT * FROMs3_access_logs_db.mybucket_logsWHERE requester='arn:aws:iam::123456789123:user/user_name';
ejemplo— Mostrar todas las operaciones realizadas en un objeto en un periodo de tiempo específico
SELECT * FROMs3_access_logs_db.mybucket_logsWHERE 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');
ejemplo— Mostrar la cantidad de datos transferidos a una dirección IP específica en un periodo de tiempo específico
SELECT coalesce(SUM(bytessent), 0) AS bytessenttotal FROMs3_access_logs_db.mybucket_logsWHERE 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');
ejemplo— Encontrar los ID de solicitud de errores 5xx de HTTP en un periodo de tiempo concreto
SELECT requestdatetime, key, httpstatus, errorcode, requestid, hostid FROMs3_access_logs_db.mybucket_logsWHERE httpstatus like '5%' AND timestamp BETWEEN '2024/01/29' AND '2024/01/30'
Identificación de solicitudes de Signature Version 2
Puede usar registros de acceso al servidor para identificar solicitudes de Signature Version 2. Para obtener más información sobre la consulta de registros con Amazon Athena, consulte la sección de consultas de Athena en Entrega de registros a un bucket de uso general de Amazon S3.
Identificación de las solicitudes de acceso a objetos
Puede utilizar los registros de acceso al servidor para identificar patrones de acceso a objetos. Para obtener más información sobre la consulta de registros con Amazon Athena, consulte la sección de consultas de Athena en Entrega de registros a un bucket de uso general de Amazon S3.