ELB のアクセスログが無効

Classic ELB のリクエスト調査に必要なアクセスログを収集し、保護してください。

説明

Classic ELB のアクセスログが無効だと、リクエストの流れ、エラー、クライアントの傾向を調査しにくくなります。ロードバランサーのログは、障害対応やセキュリティ調査に必要な資料です。

ロギングの設定と S3 への実際の配信をそれぞれ確認する必要があります。ログにはリクエスト情報が含まれるため、アクセス権限と保持期間も管理してください。

想定される影響

  • 不審なトラフィックやエラーの傾向を把握し、障害原因を調査するまでに時間がかかる場合があります。
  • 必要な記録が不足し、運用監査やインシデント分析に支障が生じる場合があります。

対処方法

AccessLoggingPolicy の Enabled を true にし、同じリージョンの S3 ログバケットを指定してください。ログ配信を許可するバケットポリシーと、対応する SSE-S3 暗号化を構成してください。ログへのアクセスと保持期間を制限し、実際のリクエストの記録が S3 に配信されることを確認してください。

例

アクセスログの設定を比較する抜粋です。HTTPS リスナーに必要な SSLCertificateId とネットワーク設定は省略しています。アベイラビリティーゾーンとバケット名を実際の環境に合わせて変更してください。

変更前

yaml
Resources:
  MyLoadBalancer:
    Type: AWS::ElasticLoadBalancing::LoadBalancer
    Properties:
      AvailabilityZones:
        - us-east-2a
      Listeners:
        - InstancePort: "80"
          LoadBalancerPort: "443"
          Protocol: HTTPS

アクセスログを有効にしていません。アプリケーションなど、別の層のログだけではロードバランサーのリクエスト記録を完全には代替できません。

変更後

yaml
Resources:
  MyLoadBalancer:
    Type: AWS::ElasticLoadBalancing::LoadBalancer
    Properties:
      AvailabilityZones:
        - us-east-2a
      Listeners:
        - InstancePort: "80"
          LoadBalancerPort: "443"
          Protocol: HTTPS
      AccessLoggingPolicy:
        Enabled: true
        S3BucketName: my-elb-access-logs

指定したバケットへのアクセスログ配信を設定します。バケットの配信権限を用意し、実際の記録を確認してください。

参考資料