Quiero realizar búsquedas en una gran recopilación de registros de AWS CloudTrail. Para evitar errores, no quiero crear tablas de Amazon Athena manualmente.
Solución
Utilice la consola de CloudTrail para crear las tablas de Athena automáticamente. Para obtener más información, consulte Búsqueda de registro de AWS CloudTrail con Amazon Athena.
Creación de una tabla de Athena a partir de los registros de CloudTrail
Siga estos pasos:
- Abra la consola de CloudTrail.
- En el panel de navegación, elija Pistas y anote el nombre del bucket de Amazon Simple Storage Service (Amazon S3) que contiene los registros de CloudTrail.
- En el panel de navegación, seleccione Historial de eventos y, a continuación, Crear tabla de Athena.
- En la ventana Crear una tabla en Amazon Athena, seleccione el bucket de S3 en el menú Ubicación de almacenamiento.
Nota: Para mejorar la búsqueda dentro de un intervalo de tiempo específico, puede usar la proyección de particiones para los registros de CloudTrail en Athena.
- Elija Crear tabla.
- Elija Ir a Athena.
Nota: Es posible que se muestre el error «Su cuenta no tiene suficientes permisos para crear tablas en Amazon Athena». Si se muestra este error, adjunte la política administrada AmazonAthenaFullAccess a su rol de AWS Identity and Access Management (IAM).
Ejecución de consultas de Athena en su tabla de registros de CloudTrail
Siga estos pasos:
- Abra la consola de Athena.
- Elija Nueva consulta y, a continuación, borre la consulta de ejemplo.
- Introduzca la consulta y, a continuación, elija Ejecutar consulta.
Uso de consultas de ejemplo
Los siguientes son ejemplos de consultas que puede ejecutar.
Nota: En las siguientes consultas, sustituya your_athena_tablename por el nombre de su tabla de Athena y access_key_id por la clave de acceso de 20 caracteres. La clave de acceso suele empezar por los caracteres AKIA o ASIA.
Para mostrar toda la actividad de la API de AWS registrada para una clave de acceso específica, ejecute la siguiente consulta:
SELECT eventTime, eventName, userIdentity.principalId
FROM your_athena_tablename
WHERE userIdentity.accessKeyId like 'access_key_id'
Para identificar los cambios del grupo de seguridad en su instancia de Amazon Elastic Compute Cloud (Amazon EC2), ejecute la siguiente consulta:
SELECT eventname, useridentity.username, sourceIPAddress, eventtime, requestparameters
FROM your_athena_tablename
WHERE (requestparameters LIKE '%sg-5887f224%' OR requestparameters LIKE '%sg-e214609e%' OR requestparameters LIKE '%eni-6c5ca5a8%')
AND eventtime > '2017-02-15T00:00:00Z'
ORDER BY eventtime ASC;
Para mostrar todos los inicios de sesión de la consola en las últimas 24 horas, ejecute la siguiente consulta:
SELECT useridentity.username, sourceipaddress, eventtime, additionaleventdata
FROM your_athena_tablename
WHERE eventname = 'ConsoleLogin'
AND eventtime >= '2017-02-17T00:00:00Z'
AND eventtime < '2017-02-18T00:00:00Z';
Para mostrar todos los intentos fallidos de inicio de sesión en la consola de las últimas 24 horas, ejecute la siguiente consulta:
SELECT useridentity.username, sourceipaddress, eventtime, additionaleventdata
FROM your_athena_tablename
WHERE eventname = 'ConsoleLogin'
AND useridentity.username = 'HIDDEN_DUE_TO_SECURITY_REASONS'
AND eventtime >= '2017-02-17T00:00:00Z'
AND eventtime < '2017-02-18T00:00:00Z';
Para identificar los aumentos de costes mensuales de CloudTrail, ejecute la siguiente consulta:
SELECT eventName,count(eventName) AS NumberOfChanges,eventSource
FROM your_athena_tablename
WHERE eventtime >= '2019-01-01T00:00:00Z' AND eventtime < '2019-01-31T00:00:00Z'
GROUP BY eventName, eventSource
ORDER BY NumberOfChanges DESC
Nota: Los valores de tiempo de evento definidos son para un solo mes. Para obtener los resultados de varios meses, ejecute consultas adicionales.
Para identificar los permisos de IAM que faltan, ejecute la siguiente consulta:
SELECT COUNT(*) AS TotalEvents, useridentity.arn, eventsource, eventname, errorCode, errorMessage
FROM your_athena_tablename
WHERE (errorcode LIKE '%Denied%' OR errorcode LIKE '%Unauthorized%')
AND eventtime >= '2019-10-28T00:00:00Z'
AND eventtime < '2019-10-29T00:00:00Z'
GROUP BY eventsource, eventname, errorCode, errorMessage, useridentity.arn
ORDER BY eventsource, eventname
Si los resultados no muestran la llamada a la API que falló, aumente el intervalo de consultas:
SELECT COUNT(*) as TotalEvents, useridentity.arn, eventsource, eventname, errorCode, errorMessage
FROM your_athena_tablename
WHERE errorcode <> ''
AND eventtime >= '2019-10-28T00:00:00Z'
AND eventtime < '2019-10-29T00:00:00Z'
GROUP BY eventsource, eventname, errorCode, errorMessage, useridentity.arn
ORDER BY eventsource, eventname
Información relacionada
Consulta de registros de AWS CloudTrail
Adición y eliminación de permisos de identidad de IAM
¿Cómo puedo obtener datos para ayudar a solucionar errores de acceso de permiso denegado o no autorizado de IAM?