AWS CloudTrail¶
AWS CloudTrail のログデータを収集する
Logging¶
AWS CloudTrail の設定¶
イベント種別¶
CloudTrail は、管理イベント、データイベント、ネットワークアクティビティイベント、および Insights イベント を記録します。たとえば、以下のとおりです。
- 管理イベント: コントロールプレーン操作とも呼ばれ、AWS アカウント内のリソースに対して実行される管理操作です。たとえば、Amazon S3 バケットの作成・変更・削除、Amazon EC2 インスタンスの起動・終了などがあります。また、ユーザーがアカウントにサインインするコンソールログインイベントのような API 以外のイベントも含まれます。
- データイベント: データプレーン操作とも呼ばれ、リソース自体、またはリソース内で実行される操作です。通常は高頻度のアクティビティです。たとえば、Amazon S3 のオブジェクトレベル API 操作(GetObject、PutObject など)、Amazon Lambda 関数呼び出し API、Amazon DynamoDB のアイテムレベル API 操作などがあり、特定の DynamoDB テーブル内のアイテムに対する作成、読み取り、更新、削除の操作を記録できます。
- ネットワークアクティビティイベント: VPC エンドポイントを使用してプライベート VPC から AWS サービスへ実行される API 操作を記録します。これには、VPC エンドポイントポリシーを正常に通過した AWS API 呼び出しと、アクセス拒否された呼び出しが含まれます。VPC エンドポイントの所有者は、このログを通じて VPC エンドポイントポリシーにより拒否された操作のログを確認したり、データ境界の外部にいる主体が S3 バケット内のデータへのアクセスを試みたかどうかを把握したりできます。
- Insights イベント:
CloudTrail Insightsは CloudTrail の管理イベントを継続的に分析し、書き込み系 API 呼び出しに関連する異常なアクティビティを検出すると、Insights つまり洞察イベントを記録し、対象の S3 バケット、CloudWatch Events、または CloudWatch Logs グループへ配信します。これにより、ユーザーは異常を追跡し、対応できます。
ログ収集方法¶
- AWS CloudTrail のログを S3 バケットへ書き込む
- S3 トリガーのイベントで
Lambda関数を呼び出し、DataKitまたはDataWayを使ってプラットフォームへデータを送信する
CloudTrail ログを S3 バケットへ書き込む¶
AWS CloudTrail のログを S3 バケットへ書き込むには、以下の手順で設定します。
- S3 バケットを作成する: AWS Management Console で S3 サービスに移動し、専用バケットを作成します(固有の名前を使用し、バージョニングを有効にすることを推奨します)。バケットポリシーで CloudTrail がログを書き込めるようにしてください(トレイル作成時にポリシーを自動生成できます)。
CloudTrailトレイルを作成する:CloudTrailコンソールに移動し、「トレイルの作成」をクリックして、トレイル名を設定し、「すべてのリージョンに適用」または特定のリージョンを選択します。- ログ保存先を設定する: 「保存先」で「既存の S3 バケット」を選ぶか、新しいバケットを作成して、バケット名を指定します。
- 詳細オプションを設定する(任意): マルチリージョントレイルの有効化、ログファイル検証の設定、CloudWatch Logs 連携の設定などを行います。
- 作成を完了する: 設定を確認して「トレイルの作成」をクリックすると、システムが指定の S3 バケットに必要な権限を自動付与し、その後 CloudTrail が捕捉した API アクティビティログがそのバケットに書き込まれます(パス形式は通常
AWSLogs/<accountID>/CloudTrail/<region>/<year>/<month>/<day>/です)。 設定が完了したら、S3 バケット内で生成されたログファイルを確認できます。これらのファイルは JSON 形式で保存され、詳細な API 呼び出し記録が含まれます。
Lambda の設定¶
ログ解析¶
Guance には CloudTrail ログ解析が組み込まれています。[ログ] - [Pipelines] - [公式 Pipeline ライブラリ]で CloudTrail を選択し、タイプが 中心 Pipeline のものを追加して保存すれば、以後の新規送信データに反映されます。