系統操做的監管/審計是不少公司的安所有門的要求。 那再AWS上,咱們如何作到呢?html
Cloudtrail + Athena 是很是容易實現,並能夠經過SQL的方式,根據審計的需求,查詢相應的結果。json
1. 首先先了解一下基本概念。
api
什麼是 AWS CloudTrail?安全
AWS CloudTrail 是一項 AWS 服務,可幫助對您的 AWS 帳戶進行監管、合規性檢查、操做審覈和風險審覈。用戶、角色或 AWS 服務執行的操做將記錄爲 CloudTrail 中的事件。事件包括在 AWS 管理控制檯、AWS Command Line Interface 和 AWS 開發工具包和 API 中執行的操做服務器
Amazon Athena 是什麼?ide
Amazon Athena 是一種交互式查詢服務,讓您可以使用標準 SQL 直接在 Amazon Simple Storage Service (Amazon S3) 中輕鬆分析數據。只需在 AWS 管理控制檯中執行幾項操做,便可將 Athena 指向 Amazon S3 中存儲的數據,並開始使用標準 SQL 運行臨時查詢,而後在幾秒鐘內得到結果。工具
Athena 是無服務器的,所以您無需設置或管理任何基礎設施,且只需爲您運行的查詢付費。Athena 可自動擴展 – 並行執行查詢 – 所以,即便在數據集很大、查詢很複雜的狀況下也能很快得到結果。開發工具
2. 下面開始設置Cloudtrail,複製官方文檔步驟大數據
使用 AWS 管理控制檯建立 CloudTrail 跟蹤ui
登陸 AWS 管理控制檯並經過如下網址打開 CloudTrail 控制檯:https://cn-northwest-1.console.amazonaws.cn/cloudtrail。
選擇您要在其中建立跟蹤的 AWS 區域。
選擇 Get Started Now。
提示
若是您沒有看到 Get Started Now (當即入門),請選擇 Trails (跟蹤),而後選擇 Create trail (建立跟蹤)。
在 Create Trail 頁面上,對於 Trail name,鍵入一個跟蹤名。
2.1 起個Tail的名字,選擇須要審計的內容
2.2 選擇須要審計的S3 bucket
2.3 選擇須要審計的Lambda function
2.4 選擇cloud trail log的存放位置,點擊」建立create「。
2.5 而後,再S3中,就能夠看到cloudtrail產生的日誌文件了。
如何查找您的 CloudTrail 日誌文件:
https://docs.aws.amazon.com/zh_cn/awscloudtrail/latest/userguide/cloudtrail-find-log-files.html
3. Cloudtrail log有了,可是咱們如何分析呢?以前,咱們可能直接打開json格式的log,硬讀?
如下示例顯示,一位名爲 Alice 的 IAM 用戶對實例 i-ebeaf9e2 執行 ec2-start-instances 命令,從而使用 AWS CLI 調用了 Amazon EC2 StartInstances 操做。
{"Records": [{ "eventVersion": "1.0", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "acces+sKeyId": "EXAMPLE_KEY_ID", "accountId": "123456789012", "userName": "Alice" }, "eventTime": "2014-03-06T21:22:54Z", "eventSource": "ec2.amazonaws.com", " eventName": "StartInstances ", "awsRegion": "us-east-2", "sourceIPAddres+s": "205.251.233.176", "userAgent": "ec2-api-tools 1.6.12.2", "requestParameters": {"instances+Set": {"items": [{"instanceId": "i-ebeaf9e2"}]}}, "responseElements": {"instances+Set": {"items": [{ "instanceId": "i-ebeaf9e2", "currentState": { "code": 0, "name": "pending" }, "previous+State": { "code": 80, "name": "stopped" } }]}} }]}
4. 深刻了解cloudtrail的日誌文件格式。 對於後面經過Athena查詢,才知道如何實現本身的需求。
CloudTrail 日誌文件示例
https://docs.aws.amazon.com/zh_cn/awscloudtrail/latest/userguide/cloudtrail-log-file-examples.html
CloudTrail 日誌事件參考
https://docs.aws.amazon.com/zh_cn/awscloudtrail/latest/userguide/cloudtrail-event-reference.html
畢竟cloudtrail的記錄很是多,加上日積月累以後,經過人工硬讀的方式,確定是力不從心了。
熟悉大數據處理的話,有不少方法能夠處理json格式的文件。可是畢竟審計工做,也不是須要每天作的,開一批機器作數據處理,也是很浪費的行爲。
AWS Athena解決了這個問題,隨用隨查,方便的同時,也下降了成本。
您可使用 Athena 經過指定日誌文件的 LOCATION 直接從 Amazon S3 查詢這些日誌文件。您能夠經過兩種方式之一來執行此操做:
經過直接從 CloudTrail 控制檯爲 CloudTrail 日誌文件建立表。
經過在 Athena 控制檯中手動爲 CloudTrail 日誌文件建立表。
這裏以第一種方式建立的表:
~~~~~~~~~
在 CloudTrail 控制檯中爲 CloudTrail 跟蹤建立表
在 CloudTrail 控制檯。
在導航窗格中,選擇 Event history。
在 Event history (事件歷史記錄) 中,選擇 Run advanced queries in Amazon Athena (在 Amazon Athena 中運行高級查詢)。
對於 Storage location (存儲位置),選擇其中存儲了要查詢的跟蹤日誌文件的 Amazon S3 存儲桶。
注意
您能夠經過轉到 Trails 並選擇跟蹤來查找與跟蹤相關聯的存儲桶。存儲桶名稱會顯示在 Storage location 中。
5. 選擇 Create Table。將使用包含 Amazon S3 存儲桶名稱的默認名稱建立表。
~~~~~~~
其實就兩邊,點一點,就完成了,Athena已經幫忙自動準備好 建立外部表的DDL SQL
5. 而後就能夠進入到Athena界面,並看到剛剛建立的表
查詢示例1:
查詢示例2:
select count (*) as TotalEvents, useridentity.username, eventname
from "default"."cloudtrail_logs_cloudtrail_cn_bright"
where eventtime >= '2017-01-01T00:00:00Z'
and useridentity.type = 'IAMUser'
group by useridentity.username, eventname
order by TotalEvents desc;
至此,咱們已經實現審計日誌的SQL化查詢,有任何定製化查詢需求,只要針對的準備相應的SQL,就可實現審計目標。
更多查詢SQL,能夠參考官方blog
Analyze Security, Compliance, and Operational Activity Using AWS CloudTrail and Amazon Athena
參考連接:
https://docs.aws.amazon.com/zh_cn/athena/latest/ug/cloudtrail-logs.html