- 1. 概要
- 2. NLBをTLSプロトコルで作成する
- 3. アクセスログ設定方法
— 3.1. S3バケットポリシー設定
— 3.2. アクセスログ作成の有効化 - 4. ログ保存の確認
— 4.1. アクセスログの保存場所
— 4.2. アクセスログのサンプル
概要
- 今回は、ロードバランサー(NLB: Network Load Balancer)にアクセスログを設定する方法を紹介します。
- 以前、下記記事に記載した通り、NLBのアクセスログはTLSプロトコルだけ対応しています。
- NLBもALB と同じくアクセスログを取得することが可能ですが、NLBにTLSリスナーを設定し、TLSリクエストに関する情報のみログに記録されます。その点がALB と異なりますので、要注意です。
- NLBにTCPリスナーを設定する場合、アクセスログではなく、VPCフローログで代替します。
NLBをTLSプロトコルで作成する
- NLBを作成します。リスナープロトコルにTCPではなく、TLSを選択します。
- NLBをTCPプロトコルで使用する場合オリジン側でSSLを終端しますが、今回はTLSプロトコルを使用するため、NLB側でSSLを終端します。
- NLBにSSL証明書が必要となりますので、準備を忘れずに。
アクセスログ設定方法
- アクセスログの作成は、Elastic Load Balancing のオプション機能であり、デフォルトでは無効化されています。
- アクセスログの作成を有効にすると、Elastic Load Balancing はログを圧縮ファイルとしてキャプチャし、指定した Amazon S3 バケット内に保存します。
- アクセスログの作成はいつでも無効にできます。
S3バケットポリシー設定
- アクセスログの出力先となるS3バケットにバケットポリシーを設定します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::s3-bucket-name/nlb_logs/AWSLogs/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } }, { "Sid": "AWSLogDeliveryAclCheck", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::s3-bucket-name" } ] }
アクセスログ作成の有効化
- EC2のロードバランサーより、対象のNLBを選択します。
- ロードバランサー属性の編集(Edit attributes)より、「アクセスログの有効化(Enable access logs)」をチェックします。「S3の場所(S3 location)」にS3バケットの名前をプレフィックスを含めて入力します。
- 保存ボタンを押します。設定が反映されました。
ログ保存の確認
アクセスログの保存場所
- S3バケットにログが記録されていることを確認します。
- バケットポリシーのResourceに指定したバケット/プレフィックス配下に、所有者の AWSアカウントIDのフォルダが作成され、下記のパス、ファイル名にてログが格納されています。
bucket[/prefix]/AWSLogs/aws-account-id/elasticloadbalancing/region/yyyy/mm/dd/aws-account-id_elasticloadbalancing_region_load-balancer-id_end-time_random-string.log.gz
アクセスログのサンプル
- 以下、アクセスログのサンプルです。正しくは1行ですが、サンプルは複数の行に分かれています。
- 各フィールドの説明は、下記ドキュメントを参照ください。
tls 1.0 2018-12-20T02:59:40 net/my-network-loadbalancer/c6e77e28c25b2234 g3d4b5e8bb8464cd 72.21.218.154:51341 172.100.100.185:443 5 2 98 246 - arn:aws:acm:us-east-2:671290407336:certificate/2a108f19-aded-46b0-8493-c63eb1ef4a99 - ECDHE-RSA-AES128-SHA tlsv12 - my-network-loadbalancer-c6e77e28c25b2234.elb.us-east-2.amazonaws.com