AWS Global Accelerator 中的流程日誌 - AWS Global Accelerator

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

AWS Global Accelerator 中的流程日誌

流程日誌可讓您在 AWS Global Accelerator 中,擷取傳入及傳出網路界面的 IP 地址流量相關資訊。流程日誌資料會發佈至 Amazon S3,您可以在建立流程日誌後擷取和檢視您的資料。

流程日誌可協助您處理幾項任務。例如,您可以針對特定流量沒有觸達端點的原因進行故障診斷,進而協助診斷限制性過高的安全群組規則。您也可以使用流程日誌做為安全工具,監控觸達端點的流量。

流程日誌記錄代表您流程日誌中的網路流。每個記錄都會為特定擷取視窗,擷取特定 5 元組的網路流,5 元組為五個不同值的組合,指定 IP 流程的來源、目標和通訊協定。擷取期間是一段時間,在此期間流程日誌服務會在發佈流程日誌記錄前彙整資料。擷取期間大約是 10 秒,但最多可能需要 1 分鐘。

使用流程日誌時,CloudWatch 日誌需支付費用,即使日誌直接發佈至 Amazon S3 也是如此。如需詳細資訊,請參閱「」將記錄傳送至 S3atAmazon CloudWatch 定價

將流程日誌發佈到 Amazon S3

AWS Global Accelerator 的流程日誌會發佈至 Amazon S3 到您指定的現有 S3 儲存貯體。流程日誌記錄會發佈至儲存貯體中的一系列日誌檔案物件。

若要建立搭配流程日誌使用的 Amazon S3 儲存貯體,請參閱建立儲存貯體中的Amazon Simple Storage Service 入門指南

流程日誌檔案

流程日誌會收集流程日誌記錄,將這些記錄整合為日誌檔,然後每隔 5 分鐘將日誌檔發佈至 Amazon S3 儲存貯體。每個日誌檔皆包含過去五分鐘所記錄之 IP 地址流量的流程日誌記錄。

日誌檔的大小上限為 75 MB。如果日誌檔案在五分鐘期間內達到檔案大小上限,流程日誌會停止將流程日誌記錄新增至日誌檔案,然後將它發佈至 Amazon S3 儲存貯體,然後建立新的日誌檔案。

日誌檔案將儲存至指定的 Amazon S3 儲存貯體,並使用由流程日誌的 ID、區域及其建立之日期而決定的資料夾結構。儲存貯體資料夾結構使用以下格式:

s3-bucket_name/s3-bucket-prefix/AWSLogs/aws_account_id/globalaccelerator/region/yyyy/mm/dd/

同樣的,日誌檔案名稱也是由流程日誌的 ID、區域,以及建立日誌檔案的日期和時間決定。檔案名稱使用下列格式:

aws_account_id_globalaccelerator_accelerator_id_flow_log_id_timestamp_hash.log.gz

請注意下列有關記錄檔的資料夾和檔案名稱結構:

  • 時間戳記使用 YYYYMMDDTHHmmZ 格式。

  • 如果您為 S3 儲存貯體前置詞指定斜線 (/),則記錄檔儲存貯體資料夾結構將包含雙斜線 (//),如下所示:

    s3-bucket_name//AWSLogs/aws_account_id

以下範例顯示由 AWS 帳戶建立之流程日誌日誌檔案的資料夾結構與檔案名稱123456789012的加速器,識別碼為1234abcd-abcd-1234-abcd-1234abcdefgh,於二零一八年十一月二十三日上午零時零五分:

my-s3-bucket/prefix1/AWSLogs/123456789012/globalaccelerator/us-west-2/2018/11/23/123456789012_globalaccelerator_1234abcd-abcd-1234-abcd-1234abcdefgh_20181123T0005Z_1fb1234.log.gz

單一流程記錄檔包含具有多個 5 元組記錄的交錯項目;也就是說client_ipclient_portaccelerator_ipaccelerator_portprotocol。若要查看加速器的所有流程記錄檔,請尋找accelerator_id和您的account_id

用於將流程日誌發佈至 Amazon S3 的 IAM 角色

IAM 主體 (例如 IAM 使用者) 必須有足夠的許可才能將流程日誌發佈至 Amazon S3 儲存貯體。IAM 政策必須包含下列許可:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DeliverLogs", "Effect": "Allow", "Action": [ "logs:CreateLogDelivery", "logs:DeleteLogDelivery" ], "Resource": "*" }, { "Sid": "AllowGlobalAcceleratorService", "Effect": "Allow", "Action": [ "globalaccelerator:*" ], "Resource": "*" }, { "Sid": "s3Perms", "Effect": "Allow", "Action": [ "s3:GetBucketPolicy", "s3:PutBucketPolicy" ], "Resource": "*" } ] }

流程日誌的 Amazon S3 儲存貯體許可

根據預設,Amazon S3 儲存貯體及其所包含的物件皆為私有。只有儲存貯體擁有者可存取儲存貯體及存放於其中的物件。但是,儲存貯體擁有者可藉由編寫存取政策,將存取授予其他資源和使用者。

如果建立流程日誌的使用者擁有儲存貯體,則服務會自動將下列政策連接至儲存貯體,為流程日誌提供許可,以便將日誌發佈至儲存貯體:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": {"Service": "delivery.logs.amazonaws.com"}, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::bucket_name/optional_folder/AWSLogs/account_id/*", "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:::bucket_name" } ] }

如果建立流程日誌的使用者並未擁有儲存貯體,或者沒有儲存貯體的 GetBucketPolicyPutBucketPolicy 許可,流程日誌的建立將會失敗。在此情況下,儲存貯體擁有者必須手動將上述政策手動新增至儲存貯體,然後指定流程日誌建立者的 AWS 帳戶 ID。如需詳細資訊,請參閱「」如何新增 S3 儲存貯體政策?中的Amazon Simple Storage Service 入門指南。如果儲存貯體從多個帳戶接收流程日誌,請將 Resource 元素項目新增至每個帳戶的 AWSLogDeliveryWrite 政策陳述式。

例如,以下儲存貯體政策允許 AWS 帳戶 123123123123123123 和 456456456456456456 將流程日誌發佈至名為flow-logs在名為的儲存貯體中log-bucket

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": {"Service": "delivery.logs.amazonaws.com"}, "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::log-bucket/flow-logs/AWSLogs/123123123123/*", "arn:aws:s3:::log-bucket/flow-logs/AWSLogs/456456456456/*" ], "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:::log-bucket" } ] }
注意

建議您將AWSLogDeliveryAclCheckAWSLogDeliveryWrite許可新增至日誌交付服務主體,而非個別 AWS 帳戶 ARN。

使用 SSE-KMS 儲存貯體必要的 CMK 金鑰政策

若您透過客戶託管的客戶主金鑰 (CMK) 來使用受 AWS KMS 受管金鑰 (SSE-KMS) 啟用 Amazon S3 儲存貯體伺服器端加密,您必須新增下列內容到 CMK 的金鑰原則,讓流程日誌可將日誌檔案寫入儲存貯體:

{ "Sid": "Allow AWS Global Accelerator Flow Logs to use the key", "Effect": "Allow", "Principal": { "Service": [ "delivery.logs.amazonaws.com" ] }, "Action": "kms:GenerateDataKey*", "Resource": "*" }

Amazon S3 日誌檔案許可

除了必要的儲存貯體原則之外,Amazon S3 使用存取控制清單 (ACL) 來管理流程日誌所建立之日誌檔案的存取。根據預設,儲存貯體擁有者擁有各個日誌檔案的 FULL_CONTROL 許可。日誌交付擁有者與儲存貯體擁有者不同時,就沒有任何許可。日誌交付帳戶擁有 READWRITE 許可。如需詳細資訊,請參閱「」存取控制清單 (ACL) 概觀中的Amazon Simple Storage Service 入門指南

啟用將流程日誌發佈至 Amazon S3

若要在 AWS Global Accelerator 中啟用流程日誌,請遵循此程序中的步驟。

在 AWS Global Accelerator 中啟用流量日誌

  1. 為您的 AWS 帳戶中的流程日誌建立 Amazon S3 儲存貯體。

  2. 為啟用流程日誌的 AWS 使用者新增所需的 IAM 政策。如需詳細資訊,請參閱 用於將流程日誌發佈至 Amazon S3 的 IAM 角色

  3. 使用您要用於日誌檔的 Amazon S3 儲存貯體名稱和前綴執行下列 AWS CLI 命令:

    aws globalaccelerator update-accelerator-attributes --accelerator-arn arn:aws:globalaccelerator::012345678901:accelerator/1234abcd-abcd-1234-abcd-1234abcdefgh --region us-west-2 --flow-logs-enabled --flow-logs-s3-bucket s3-bucket-name --flow-logs-s3-prefix s3-bucket-prefix

Amazon S3 中的處理流程日誌記錄

日誌檔案已壓縮。如果您使用 Amazon S3 主控台開啟日誌檔案,這些檔案將會解壓縮,並顯示流程日誌記錄。如果您下載這些檔案,則必須解壓縮才能檢視流程日誌記錄。

交付日誌檔案的時間

AWS Global Accelerator 為您設定的加速器交付日誌檔案一小時多達數次。一般而言,日誌檔案包含有關請求的資訊,加速器在特定期間內收到此請求。通常,全球加速器會將該時段的日誌檔案,在出現於日誌中事件的一小時內交付到 Amazon S3 儲存貯體。一個時段的部分或全部日誌檔案項目有時會延遲高達 24 小時。當日誌項目延遲時,Global Accelerator 將它們儲存在日誌檔案中,其中檔案名稱包含發生請求的日期和時段,而不是交付檔案時的日期和時間。

建立日誌檔案時,Global Accelerator 為加速器從所有節點整合資訊,此節點在日誌檔案涵蓋的時段間收到請求。

您啟用記錄後,Global Accelerator 會開始可靠地交付日誌檔案大約四個小時。此時段之前,您可能會收到幾個日誌檔案。

注意

如果在時段內沒有使用者連接至您的加速器,您便不會收到該時段的任何日誌檔案。

流程日誌記錄語法

流程日誌記錄是以空格分隔的字串,並具有以下格式:

<version> <aws_account_id> <accelerator_id> <client_ip> <client_port> <accelerator_ip> <accelerator_port> <endpoint_ip> <endpoint_port> <protocol> <ip_address_type> <packets> <bytes> <start_time> <end_time> <action> <log-status> <globalaccelerator_source_ip> <globalaccelerator_source_port> <endpoint_region> <globalaccelerator_region> <direction> <vpc_id>

1.0 版格式不包含 VPC 識別碼vpc_id。2.0 版格式,其中包含vpc_id) 會在全域加速器將流量傳送至具有用戶端 IP 位址保留的端點時產生。

下表說明流程日誌記錄的欄位。

欄位 描述

version

流程會記錄版本。

aws_account_id

流程日誌的 AWS 帳戶 ID。

accelerator_id

要記錄流量的加速器 ID。

client_ip

來源 IPv4 地址。

client_port

來源連接埠。

accelerator_ip

加速器的 IP 地址。

accelerator_port

加速器的港口

endpoint_ip

流量的目標 IP 地址。

endpoint_port

流量的目標連接埠。

protocol

流量的 IANA 通訊協定號碼。如需詳細資訊,請參閱指派的網際網路通訊協定號碼

ip_address_type

IPv4。

packets

在擷取期間傳輸的封包數。

bytes

在擷取期間傳輸的位元組數。

start_time

擷取期間的開始時間 (單位為 Unix 秒)。

end_time

擷取期間的結束時間 (單位為 Unix 秒)。

action

與流量關聯的動作:

  • ACCEPT:記錄的流量已獲得安全群組或網路 ACL 的許可。該值目前總是接受。

log-status

流程日誌的記錄狀態:

  • OK:資料正常記錄至選擇的目的地。

  • NODATA:在擷取期間沒有任何流入或流出網路界面的網路流量。

  • SKIPDATA:在擷取期間已跳過一部分流程日誌記錄。這可能是因為內部容量的條件約束,或是內部錯誤。

globalaccelerator_source_ip

全域加速器網路介面所使用的 IP 位址。

globalaccelerator_source_port

全域加速器網路介面所使用的連接埠。

endpoint_region

端點所在的 AWS 區域。

globalaccelerator_region

提供請求的節點 (存在點)。每個節點都有一個三字母的代碼,以及一個任意指派的號碼,例如 DFW3。三字母代碼通常對應於節點附近機場的國際航空運輸協會機場代碼。(未來這些縮寫可能會改變。)

direction

流量的方向。表示進入全域加速器網路的流量 (INGRESS)或返回客戶端(EGRESS

vpc_id

VPC 識別符。當全域加速器將流量傳送至具有用戶端 IP 位址保留的端點時,隨附於 2.0 版流量記錄中。

如果欄位不適用於特定記錄,則記錄會針對該項目顯示一個 '-' 符號。