CloudTrailとは
AWSのユーザー、ロールによって実行されたアクションを記録するもの。 AWSマネジメントコンソール、AWS CLI、AWS SDKで実行された全てのアクションが記録される。 ログはS3に記録され、SSEを使用して暗号化される。 記録するデータには大きく分けて、管理イベントとデータイベントがある。 データイベントについては、記録するか否か選ぶことができる。
アクセスから15分後に、ログファイルは配信される。これは変更することも可能である。ログファイルは監査に使われるため、通常の権限では変更できないものでなければならない。ログファイルは、splunk等の外部サービスとも連携することが可能である。CloudTrailでは全てのAWSサービスが、対応している訳ではない。
管理イベント
- セキュリティグループの設定 (例: IAM AttachRolePolicy API オペレーション).
- デバイスの登録 (例: Amazon EC2 CreateDefaultVpc API オペレーション).
- データをルーティングするルールの設定 (例: Amazon EC2 CreateSubnet API オペレーション).
- ログ記録の設定 (例: AWS CloudTrail CreateTrail API オペレーション).
データイベント
- Amazon S3 オブジェクトレベルの API アクティビティ (例: GetObject、DeleteObject、PutObject API オペレーション).
- AWS Lambda 関数の実行アクティビティ (Invoke API).
CloudWatch Logsとの連携
ログデータのモニタリングに使えるやつ。CloudTrailで取得したデータを、ここに突っ込むのもあり。ルールを指定して、それに合致するLogが来たらアラート飛ばすなども可能。
CloudTrailとリージョン
基本的に、AWSパーティション内の全てのリージョンで監査する。 (ap-northeast01aとかそういうことかな?) あまり使用しないリージョンでリソースされたときなどの、異常なアクティビティを検知できるから。1つのリージョンに対してMAX5つのtrail logを残すことが可能。
グローバルサービスイベントについて
AWS Identity and Access Management (IAM)、AWS STS、Amazon CloudFront、Route 53などの、複数のリージョンにまたがって存在するリソースのイベント。これらは、US East (N. Virginia) に記録される。設定を失敗すると、重複して送られてしまうこともあるのでよく確認すること。
CloudTrailで取得できるログについて
AccountID_CloudTrail_RegionName_YYYYMMDDTHHmmZ_UniqueString.FileNameFormat
111122223333_CloudTrail_us-east-2_20150801T0210Z_Mu0KsOhtH1ar15ZZ.json.gz
- UniqueStringは自動で生成されそうな気配 (未確認)
実際のログについて
{"Records": [{ "eventVersion": "1.0", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accessKeyId": "EXAMPLE_KEY_ID", "accountId": "123456789012", "userName": "Alice" }, "eventTime": "2014-03-06T21:22:54Z", "eventSource": "ec2.amazonaws.com", "eventName": "StartInstances", "awsRegion": "us-east-2", "sourceIPAddress": "205.251.233.176", "userAgent": "ec2-api-tools 1.6.12.2", "requestParameters": {"instancesSet": {"items": [{"instanceId": "i-ebeaf9e2"}]}}, "responseElements": {"instancesSet": {"items": [{ "instanceId": "i-ebeaf9e2", "currentState": { "code": 0, "name": "pending" }, "previousState": { "code": 80, "name": "stopped" } }]}} }]}
その他メモ
- AWS サービスによる CloudTrail の統合トピックス - AWS CloudTrail
- CloudTrail でサポートされていないサービス - AWS CloudTrail
- データイベントなんて取得したらデータ量が大変なことになりそうだぞ
- 証跡とログの違いってなんだろ?
- xray対応していないのツラそう