PCI DSSやIT内部統制などのコンプライアンスの観点でAWS上で監査ログの取得が必要になります。
そのような場合、AWSではCloudTrailというサービスを使用して開発者などがAWS上のリソースを操作した証跡を取得することができます。
まず、この前提としてこの証跡はIAMユーザーごとに記録されますので、各開発者、運用者ごとにIAMユーザーを分ける必要があります。
IAMユーザーを安全に作成する方法については、こちらの記事をご覧くださ。
CloudTrailではデフォルトで有効になっていますが、そのままだと90日分しか保存されないため、監査ログとしては十分ではありません。
下記の手順を実施することで、CloudTrailのログを期限なしで保存することができます。
CloudTrail証跡の作成
AWSコンソールにログインし、上のメニューのサービスからCloudTrailを選択します。
CloudTrailのダッシュボードが表示されるので証跡の作成をクリックします。
わかりやすい証跡名を入力します。
新しいS3バケットを作成しますかという箇所ではいを選択し、S3バケット名を入力し、作成ボタンをクリックします。
証跡が作成され、ダッシュボードに戻ります。証跡の表示ボタンをクリックします。
CloudWatch Logへの出力
先ほど作成した証跡の名前をクリックします。
CloudTrailのログをCloudWatch Logsに転送を設定します。転送したログはCloudWatchのルールを作成することにより、アラートを飛ばすことができます。
CloudWatchのロググループ名を入力しますがここはそのままで良いと思います。
CloudWatchへ送るためのIAMロールを作成します。こちらもそのまま何も変更せず許可を選択します
ログの検証とKMS暗号化の設定
最後に、KMSを使用してS3に出力されるログファイルの暗号化とログファイルの検証の有効化を下記の通り行います。
暗号化はS3にデータが保存される前に自動的に暗号化され、取り出される際にまた自動的に複合化されるというものです。
一方、ログファイルの検証は、有効にすることでS3に出力されたCloudTrailログが誰かに改ざんされたことが検知できるようになります。
以上で設定が終わります。これによりS3にCloudTrailのログが保存されるようになります。