NLB のアクセスログ設定
Contents
概要
- 今回は、ロードバランサー(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