API 操作の証跡を記録し、リソースのコンプライアンスを継続的に評価・監視する
このハンズオンでは、AWS の 2 つのガバナンスサービスを組み合わせます。AWS CloudTrail で AWS API の操作ログを S3 に記録し、誰がいつ何をしたかを証跡として残す方法を学びます。次に AWS Config で AWS リソースの設定変更を継続的に記録・評価し、セキュリティポリシーへの準拠状況を把握する方法を学びます。
| 項目 | 内容 |
|---|---|
| 所要時間 | 60〜75 分 |
| 難易度 | 初〜中級 |
| 主要サービス | AWS CloudTrail、AWS Config、Amazon S3 |
| 前提リソース | なし(新規アカウントでも実施可能) |
| 課金目安 | CloudTrail: 管理イベントの 1 つ目の証跡は無料(追加の証跡や S3 保管は別途)。Config: 記録した設定アイテム数 + ルール評価回数 + コンフォーマンスパック評価の従量課金(固定の月額ルール料金ではない)。最新単価はConfig 料金ページ |
| サービス | 記録するもの | 主な用途 |
|---|---|---|
| CloudTrail | API コール(誰が・いつ・何をしたか) | セキュリティ監査、コンプライアンス、インシデント調査 |
| Config | リソースの設定状態と変更履歴 | コンプライアンス評価、設定ドリフト検出、変更管理 |
コンソール右上のアカウント名をクリック → 「アカウント ID」が 12 桁の数字で表示されます。S3 バケット名に使用するためメモしておいてください。
証跡(Trail)は CloudTrail が API ログを配信する設定単位です。S3 バケットへのログ配信を設定します。
「証跡の作成」 をクリックして完了します。
証跡の一覧に「handson-trail」が表示され、ステータスが「ログ記録中」になれば作成成功です。S3 コンソールで handson-cloudtrail-logs-<アカウントID> バケットが作成されていることも確認してください。
CloudTrail のログは通常 15 分以内に S3 へ配信されます。イベント履歴(コンソール上での確認)はリアルタイムに近いですが、S3 のログファイルには若干の遅延があります。
コンソールから過去の API 操作履歴を検索・確認します。証跡の作成前のイベントも過去 90 日分は確認できます。
CreateTrail を入力 → Enter| フィルター | 使用例 | 説明 |
|---|---|---|
| イベント名 | RunInstances, TerminateInstances | 特定の API 操作を検索 |
| ユーザー名 | IAM ユーザー名 | 特定ユーザーの操作を追跡 |
| リソースタイプ | AWS::EC2::Instance | 特定リソースへの操作を検索 |
| リソース名 | i-0abc1234 など | 特定リソース ID の操作を検索 |
| イベントソース | ec2.amazonaws.com | 特定サービスへの API 呼び出しを検索 |
15〜20 分後に S3 バケットにログファイルが配信されます。
handson-cloudtrail-logs-<アカウントID> を開くAWSLogs/<アカウントID>/CloudTrail/ap-northeast-1/<年>/<月>/<日>/各ログエントリには eventTime(操作時刻)、userIdentity(誰が)、eventName(何をしたか)、sourceIPAddress(どこから)、requestParameters(どのリソースに)が含まれます。インシデント調査時はこれらを組み合わせて追跡します。
AWS Config を有効化し、リソースの設定変更を記録する配信チャンネルを設定します。
「すべてのリソース」を選択するとリソース数が多い場合に設定アイテム数が増え、課金が増える可能性があります。費用を抑えたい場合は「特定のリソースタイプ」を選択し、AWS::EC2::Instance、AWS::S3::Bucket、AWS::IAM::User などに絞ることを推奨します。
「確認」 → 「確認して保存」 をクリックします。
Config のダッシュボードが表示され、リソースの記録が開始されます。左メニューの「リソースインベントリ」でリソースの一覧が確認できます(反映に数分かかる場合があります)。
Config Rules はリソースの設定が組織のポリシーに準拠しているかを自動評価します。AWS マネージドルールを使って一般的なセキュリティチェックを設定します。
| ルール名 | チェック内容 | トリガー |
|---|---|---|
| s3-bucket-public-read-prohibited | S3 バケットのパブリック読み取りアクセスが禁止されているか | 設定変更時 |
| s3-bucket-public-write-prohibited | S3 バケットのパブリック書き込みアクセスが禁止されているか | 設定変更時 |
| ec2-instances-in-vpc | EC2 インスタンスが VPC 内に存在するか(EC2-Classic 不使用確認) | 設定変更時 |
| iam-root-access-key-check | ルートアカウントのアクセスキーが無効になっているか | 定期的(24 時間) |
| mfa-enabled-for-iam-console-access | コンソールアクセス可能な IAM ユーザーに MFA が設定されているか | 定期的(24 時間) |
s3-bucket-public-read と入力AWS Config の料金は ルール評価 1 回ごとの従量課金です(「1 ルールあたり固定の月額 $1」という旧来の体系ではありません)。ルールは設定変更やスケジュールのたびに評価され、その評価回数に応じて課金されます。加えて、記録した設定アイテム数にも課金されます。このハンズオンの規模なら少額(数十〜数百円程度)に収まりますが、変更が多い環境では評価回数が増える点に注意してください。最新単価は AWS Config 料金ページを参照してください。ハンズオン後は削除してください。
動作確認のため、S3 バケットのパブリックアクセスブロックを無効化して非準拠を意図的に作り出します。
パブリックアクセスを許可した S3 バケットが「非準拠リソース」として検出されます。これが Config による継続的なコンプライアンス評価の仕組みです。
AWS::S3::Bucket を選択「いつ設定が変わったのか」「誰がいつ変更したのか(CloudTrail との連携)」を追跡できます。セキュリティインシデント調査時に、問題のリソースの設定変更履歴を素早く確認するのに非常に役立ちます。
CloudTrail の証跡(S3 への配信がある場合)と Config Rules は課金が発生します。ハンズオン完了後は以下の手順で削除してください。
handson-cloudtrail-logs-<アカウントID> → 「空にする」→ 「削除」config-bucket-<アカウントID> → 「空にする」→ 「削除」CloudTrail の証跡一覧が空になり、Config の設定レコーダーが停止し、S3 バケットが 2 つとも削除されていれば完了です。
実際の AWS 環境では、CloudTrail と Config はセキュリティ・コンプライアンス要件から常時有効にすることを強く推奨します。多くのコンプライアンスフレームワーク(PCI DSS、SOC 2、ISO 27001 等)で CloudTrail の証跡が必須要件となっています。このハンズオン環境は学習目的のため削除していますが、本番アカウントでは継続稼働させてください。