啟用 Network Load Balancer 的存取日誌 - Elastic Load Balancing

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

啟用 Network Load Balancer 的存取日誌

當您對負載平衡器啟用存取記錄時,您必須指定 S3 儲存貯體的名稱,供負載平衡器存放日誌。儲存貯體必須具有儲存貯體政策,能授予 Elastic Load Balancing 寫入儲存貯體的許可。

重要

只有在負載平衡器具有 TLS 接聽程式,且日誌僅包含 TLS 請求的相關資訊時,才會建立存取日誌。

儲存貯體需求

您可以使用現有儲存貯體,也可以建立專門用於存取日誌的儲存貯體。儲存貯體必須符合下列需求。

要求
  • 儲存貯體與負載平衡器必須位於相同的 Region (區域)。儲存貯體和負載平衡器可以由不同的帳戶擁有。

  • 您指定的前綴不得包含 AWSLogs。我們在您指定的儲存貯體名稱和前綴之後,增加了以 AWSLogs 開頭的檔案名稱部分。

  • 儲存貯體必須有儲存貯體政策,以授權將存取日誌寫入您的儲存貯體。儲存貯體政策是以存取政策語言所編寫的 JSON 陳述式集合,可定義儲存貯體的存取許可。

儲存貯體政策的範例

政策範例如下。對於 Resource元素,請以存取日誌的 S3 儲存貯體名稱取代 amzn-s3-demo-destination-bucket。如果您不使用儲存貯體字首,請務必省略字首/。對於 aws:SourceAccount,使用負載平衡器指定 AWS 帳戶的 ID。對於 aws:SourceArn,將區域012345678912 分別取代為負載平衡器的區域和帳戶 ID。

JSON
{ "Version":"2012-10-17", "Id": "AWSLogDeliveryWrite", "Statement": [ { "Sid": "AWSLogDeliveryAclCheck", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket", "Condition": { "StringEquals": { "aws:SourceAccount": [ "012345678912" ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:us-east-1:012345678912:*" ] } } }, { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/Prefix/AWSLogs/account-ID/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": [ "012345678912" ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:us-east-1:012345678912:*" ] } } } ] }
加密

您可利用下列其中一種方式為 Amazon S3 存取日誌儲存貯體啟用伺服器端加密:

  • Amazon S3 受管金鑰 (SSE-S3)

  • AWS KMS 存放在 AWS Key Management Service (SSE-KMS) † 中的金鑰

† 使用 Network Load Balancer 存取日誌時,您無法使用 AWS 受管金鑰,您必須使用客戶受管金鑰。

如需詳細資訊,請參閱《Amazon S3 使用者指南》中的指定 Amazon S3 加密 (SSE-S3)使用 AWS KMS (SSE-KMS) 指定伺服器端加密Amazon S3

金鑰政策必須允許服務加密及解密日誌。政策範例如下。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" } ] }

設定存取日誌

使用下列程序來設定存取日誌,以擷取請求資訊並將日誌檔案交付至 S3 儲存貯體。

Console
啟用存取日誌
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格中,選擇 Load Balancers (負載平衡器)

  3. 選取您負載平衡器的名稱來開啟其詳細資訊頁面。

  4. 屬性索引標籤中,選擇編輯

  5. 對於監控,請開啟存取日誌

  6. 針對 S3 URI,請輸入日誌檔案的 S3 URI。指定的 URI 取決於您是否使用字首。

    • 字首為 s3://amzn-s3-demo-logging-bucket/logging-prefix 的 URI

    • 沒有字首的 URI:s3://amzn-s3-demo-logging-bucket

  7. 選擇儲存變更

AWS CLI
啟用存取日誌

使用 modify-load-balancer-attributes 命令搭配相關屬性。

aws elbv2 modify-load-balancer-attributes \ --load-balancer-arn load-balancer-arn \ --attributes \ Key=access_logs.s3.enabled,Value=true \ Key=access_logs.s3.bucket,Value=amzn-s3-demo-logging-bucket \ Key=access_logs.s3.prefix,Value=logging-prefix
CloudFormation
啟用存取日誌

更新 AWS::ElasticLoadBalancingV2::LoadBalancer 資源以包含相關屬性。

Resources: myLoadBalancer: Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer' Properties: Name: my-nlb Type: network Scheme: internal Subnets: - !Ref subnet-AZ1 - !Ref subnet-AZ2 SecurityGroups: - !Ref mySecurityGroup LoadBalancerAttributes: - Key: "access_logs.s3.enabled" Value: "true" - Key: "access_logs.s3.bucket" Value: "amzn-s3-demo-logging-bucket" - Key: "access_logs.s3.prefix" Value: "logging-prefix"