おれさまラボ

実際に手を動かして理解を深めるブログ。

AWS CloudTrailのログをCloudWatch Logsに連携する方法

はじめに

CloudTrailのログをCloudWatch Logsに連携しておくと、他のAWSサービスとの連携もスムーズに行えるので設定しておくことが推奨されます。今回はその方法をメモとして残しておきます。

参考:クラウド破産を回避するAWS実践ガイド - KOS-MOS - BOOTH

CloudWatch Logsとは

CloudWatch Logsはログマネジメントサービスで、あらゆるログを収集・保管・検索でき、他のAWSサービスとシームレスに連携できる。

CloudTrailとCloudWatch Logsの連携方法

CloudTrailからCloudWatch Logsへの配信を行う。CloudTrailダッシュボードの左ペインのメニューから [証跡情報] を選択し、作成した証跡をクリックする。

CloudWatch Logsの項目から [設定] をクリックする。

以下設定であることを確認して [次へ] をクリックする。

  • 新規または既存のロググループ:CloudTrail/DefaultLogGroup

CloudTrailがCloudWatch Logsへアクセスする許可が求められるので、[許可] をクリックする。

💡:何をやっているかというとCloudTrailに対してCloudWatch Logsへのアクセスを許可するサービスロールを割り当てている模様。

参考:AWS サービスにアクセス許可を委任するロールの作成 - AWS Identity and Access Management

割り当てられるIAMポリシーは以下のとおり。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AWSCloudTrailCreateLogStream20141101",
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogStream"
      ],
      "Resource": [
        "arn:aws:logs:ap-northeast-1:123456789012:log-group:CloudTrail/DefaultLogGroup:log-stream:123456789012_CloudTrail_ap-northeast-1*"
      ]
    },
    {
      "Sid": "AWSCloudTrailPutLogEvents20141101",
      "Effect": "Allow",
      "Action": [
        "logs:PutLogEvents"
      ],
      "Resource": [
        "arn:aws:logs:ap-northeast-1:123456789012:log-group:CloudTrail/DefaultLogGroup:log-stream:123456789012_CloudTrail_ap-northeast-1*"
      ]
    }
  ]
}

💡:"123456789012" はAWSアカウントIDを表す。

検証が終わると、設定したロググループとIAMロールがそれぞれ表示される。

次にCloudWatch Logsの保持期間を設定する。

💡:CloudWatch Logsのデフォルトでは、ログが無制限で保存される。ログの保存にもコストがかかるので、ログの保持期間を設定しておくのがオススメ。

CloudWatchのダッシュボードに移動し、対象のロググループをクリックする。

💡:クラウド破産を回避するAWS実践ガイドでは古いダッシュボードのUIになっている。新しいUIでは [失効しない] をクリックできないので、ロググループ名をクリックする必要がある。

ロググループのアクションメニューから [保持設定を編集] をクリックする。

デフォルトでは [Never Expire] となっているので、プルダウンメニューから [2 weeks (14 days)] に変更、[Save] をクリックする。

⚠:保持期間を短くすると、古いログデータは完全に削除されるので注意。

以上