如何在 Amazon Athena 中自动创建表以搜索 AWS CloudTrail 日志?
我想搜索大量 AWS CloudTrail 日志。为了避免错误,我不想手动创建 Amazon Athena 表。
解决方法
使用 CloudTrail 控制台自动创建 Athena 表。有关更多信息,请参阅使用 Amazon Athena 搜索 AWS CloudTrail 日志。
创建 Athena 表
1.打开 CloudTrail 控制台,然后从导航窗格中选择跟踪记录。记下 S3 存储桶名称。
2.在导航窗格中,选择事件历史记录,然后选择创建 Athena 表。
3.打开在 Amazon Athena 中创建表窗口中的存储位置菜单,然后选择包含 CloudTrail 日志文件的 Amazon Simple Storage Service(Amazon S3)存储桶。
注意:使用 Athena 对 CloudTrail 日志进行分区投影,您可以提高单个 AWS 区域中特定时间范围内的搜索性能。
4.选择创建表。
5.选择转至 Athena。
**注意:**您可能会收到错误“Your account does not have sufficient permissions to create tables in Amazon Athena”。 如果收到此错误,请按照添加 AWS Identity and Access Management(IAM)策略(控制台)中的说明附加 AmazonAthenaFullAccess 托管策略。
您可以针对您的日志使用以下一项或多项示例查询。将 your_athena_tablename 替换为您的 Athena 表名称,并将 access_key_id 替换为您的 20 个字符的访问密钥。您的访问密钥通常以字符 AKIA 或 ASIA 开头。
运行 Athena 查询
1.打开 Athena 控制台,选择新查询,然后选择对话框以清除示例查询。
2.输入您的查询,然后选择运行查询。
显示特定访问密钥的所有记录的 AWS API 活动
SELECT eventTime, eventName, userIdentity.principalId FROM your_athena_tablename WHERE userIdentity.accessKeyId like 'access_key_id'
确定您的 EC2 实例的所有安全组更改
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;
显示过去 24 小时内的所有控制台登录信息
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';
显示过去 24 小时内所有失败的控制台登录尝试
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';
确定 CloudTrail 每月成本增长情况
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
**注意:**eventtime 定义值限制为一个月。要获取多个月份的结果,请运行其他查询。
确定缺少的 IAM 权限
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
如果结果未显示失败的 API 调用,则通过类似于下面这样的方法扩大查询范围:
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
相关信息
相关内容
- AWS 官方已更新 3 年前
- AWS 官方已更新 10 个月前
- AWS 官方已更新 10 个月前
- AWS 官方已更新 3 年前