如何在 Amazon Athena 中自動建立資料表,以便透過 AWS CloudTrail 日誌進行搜尋?

2 分的閱讀內容
0

我想要搜尋大 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 CloudTrail 日誌

新增和移除 IAM 身分許可

如何對 IAM 許可遭拒或未經授權的錯誤進行疑難排解?

AWS 官方
AWS 官方已更新 3 年前