AWS CloudTrailの証跡の各種イベントログをCloudWatch LogsとS3に送る

AWS CloudTrailは各種APIイベントのアクティビティをデフォルトで90日分記録する。AWSアカウントの操作をロギングします。管理コンソール、コマンドライン、3rdParty等、APIコールされるすべてのイベントが対象。また、CloudWatch Logsに送る事が出来ます。管理イベントについては、AWSアカウントのリージョン別にS3に保存、Lambdaに送ることが出来ます。監査等でも利用され、AWSを使う上で必須の機能と言っても過言ではないです。AWS CloudTrailは無料。

以下、一連の設定作業はIAMポリシーのAdministratorAccessをアタッチしたIAMグループに所属するAdministratorsグループのユーザーで行っています。

CloudTrailの証跡はイベントタイプが以下の3種類となる。データイベントは必然的にS3保存もしくはLambdaに送る(双方同時も可能)となります。

  1. 管理イベント・・・AWSリソースで実行された管理オペレーション
  2. データイベント・・・リソース上またはリソース内で実行されたリソース操作。必然的にS3保存かLambdaに送る(双方同時も可能)
  3. Insightsイベント・・・AWSアカウントの異常なアクティビティ、エラーまたはユーザーの動作を特定

CloudWatchロググループを作る、CloudTrailの「証跡の作成」という手順になります。IAMロール(IAMポリシー)もS3も「証跡の作成」の中で命名しながらほとんど自動で作られるため、事前に作成する必要はありません。作られたS3バケットやIAMロール(IAMポリシー)は作成後に中身チェックしておくことを強くお勧めします。

CloudWatchロググループを作る

  1. CloudWatchへ
  2. ロググループへ
  3. ロググループ名を入力 EX)/aws/cloudtrail
  4. 「作成」をクリック

CloudTrailの証跡を作る

  1. CloudTrailへ
  2. 証跡へ
  3. 「証跡の作成」へ
  4. 証跡名を入力 EX)cloudtrail-events
  5. 「ストレージの場所」で「新しいS3バケットを作成します」を選択
  6. 「認証ログバケットおよびフォルダ」へ新しいS3バケットの名前を入力 EX)cloudtrail-logs-s3bucket-001
  7. 「ログファイルの SSE-KMS 暗号化」にチェックを入れて有効化
  8. 「AWS KMS カスタマー管理の CMK」で既存を選択
  9. 「AWS KMSエイリアス」で「CloudTrail」を選択
  10. 「その他の設定」を開く
  11. 「ログファイルの検証」は有効にする
  12. 「SNS 通知の配信」はチェックしない
  13. 「CloudWatch Logs – オプション」は、「CloudWatch Logs」を有効に。ロググループは「既存」で「/aws/cloudtrail」を入力
  14. 「IAMロール」は、新規
  15. 「ロール名」を入力。EX)CloudTrailRoleForCloudWatchLogs
  16. 任意でタグを入力
  17. 「次へ」をクリック
  18. 「イベントタイプ」の3つ(管理イベント、データイベント、Insightsイベント)すべてをチェック
  19. 「管理イベント」は、読み取り 書き込み をチェック
  20. データイベントソースは、S3を選択 (この記事では使いませんが、ここで「データイベントタイプの追加」にてLambdaも追加できます。証跡の作成後に追加/編集/削除が出来ます。)
  21. 「次へ」をクリック
  22. 内容を確認して「証跡の作成」をクリック

IAMロールとIAMポリシーのJSONを確認

IAMポリシーは、「ユーザーによる管理」で「CloudTrailPolicyForCloudWatchLogs_ランダム文字列」というIAMポリシー名で自動的にIAMポリシーがIAMロール(CloudTrailRoleForCloudWatchLogs)にアタッチされています。

IAMロールの「信頼されたエンティティ(ユースケース)」はID プロバイダー cloudtrail.amazonaws.comになっています。「信頼されたエンティティ(ユースケース)」が定番のEC2ではないということに気を付けてください。

S3を確認

S3のcloudtrail-logs-s3bucket-001バケットのAWSLogsフォルダのアカウントIDフォルダ内でリージョン別にgzファイルの証跡を確認できれば完了です。S3 SELECTでjsonファイルにSQLでjsonファイル検索出来ることを確認してみてください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください