Amazon S3 中的 Transit Gateways 流程日誌記錄 - Amazon VPC

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

Amazon S3 中的 Transit Gateways 流程日誌記錄

現在流量日誌可將流量日誌資料發佈至 Amazon S3。

當發佈至 Amazon S3 時,流量日誌資料將發佈至您指定的現有 Amazon S3 儲存貯體。所有受監控傳輸閘道的流量日誌記錄,都將發佈至存放在該儲存貯體的一系列日誌檔案物件。

當您將流程日誌發佈至 Amazon S3 時, 會將擷取資料和封存費用 Amazon CloudWatch 套用至已結束的日誌。如需已終止日誌 CloudWatch 定價的詳細資訊,請開啟 Amazon CloudWatch 定價 ,選擇 日誌 ,然後尋找 已終止日誌

若要建立用於流量日誌的 Amazon S3 儲存貯體,請參閱《Amazon Simple Storage Service 使用者指南》中的建立儲存貯體

如需有關多個帳戶記錄的詳細資訊,請參閱 AWS 解決方案程式庫中的中央記錄

如需 CloudWatch 日誌的詳細資訊,請參閱 Amazon Logs 使用者指南 中的傳送至 Amazon S3 的 CloudWatch 日誌

流量日誌檔

VPC 流程日誌是一項功能,可收集流程日誌記錄,將其合併為日誌檔案,然後每隔 5 分鐘將日誌檔案發佈至 Amazon S3 儲存貯體。每個日誌檔皆包含過去五分鐘所記錄之 IP 流量的流量日誌記錄。

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

在 Amazon S3 中,流量日誌檔案的 Last modified (上次修改) 欄位指出檔案上傳至 Amazon S3 儲存貯體的日期和時間。這個時間晚於檔案名稱中的時間戳記,並且會因檔案上傳至 Amazon S3 儲存貯體所花費的時間而有所不同。

日誌檔案格式

可為日誌檔案指定下列其中一種格式。每個檔案都會壓縮到單一 Gzip 檔案中。

  • Text – 純文字。此為預設格式。

  • Parquet – Apache Parquet 是一種單欄資料格式。與純文字的資料查詢相比,Parquet 格式的資料查詢速度快 10 到 100 倍。採用 Gzip 壓縮的 Parquet 格式的資料佔用的儲存空間比使用 Gzip 壓縮的純文字要少 20%。

日誌檔案選項

您可以選擇指定下列項目。

  • Hive 兼容的 S3 前綴 – 啟用 Hive 相容的前置詞,而不是將分割區匯入 Hive 相容的工具。在執行查詢之前,請使用 MSCK REPAIR TABLE 命令。

  • 每小時分割 – 如果您有大量的日誌,而且通常針對特定小時進行查詢,則透過每小時分割日誌,可獲得更快的結果並節省查詢成本。

日誌檔案 S3 儲存貯體結構

使用基於流量日誌的 ID、區域、建立日期以及目標選項的資料夾架構,將日誌檔案儲存至指定的 Amazon S3 儲存貯體。

根據預設,檔案會傳遞至下列位置。

bucket-and-optional-prefix/AWSLogs/account_id/vpcflowlogs/region/year/month/day/

如果您啟用 Hive 相容的 S3 字首,檔案會傳遞至下列位置。

bucket-and-optional-prefix/AWSLogs/aws-account-id=account_id/service=vpcflowlogs/aws-region=region/year=year/month=month/day=day/

如果您啟用每小時分割,檔案會傳遞到下列位置。

bucket-and-optional-prefix/AWSLogs/account_id/vpcflowlogs/region/year/month/day/hour/

如果您啟用 Hive 相容的分割,並且每小時分割流量日誌,檔案會傳遞至下列位置。

bucket-and-optional-prefix/AWSLogs/aws-account-id=account_id/service=vpcflowlogs/aws-region=region/year=year/month=month/day=day/hour=hour/
日誌檔案名稱

日誌檔案的檔案名稱以流量日誌 ID、區域以及建立日期和時間為基礎。檔案名稱使用下列格式。

aws_account_id_vpcflowlogs_region_flow_log_id_YYYYMMDDTHHmmZ_hash.log.gz

以下是由 建立之流程日誌的日誌檔案範例 AWS 帳戶 123456789012,針對 中的資源 us-east-1 區域,開啟 June 20, 2018 at 16:20 UTC。 檔案包含流程日誌記錄,結束時間介於 16:20:00 以及 16:24:59.

123456789012_vpcflowlogs_us-east-1_fl-1234abcd_20180620T1620Z_fe123456.log.gz

IAM 將流程日誌發佈至 Amazon S3 的IAM主體政策

建立流程日誌的IAM主體必須具有下列許可,而這些許可是將流程日誌發佈至目的地 Amazon S3 儲存貯體所必需的。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogDelivery", "logs:DeleteLogDelivery" ], "Resource": "*" } ] }

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

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

如果建立流量日誌的使用者擁有儲存貯體且具有該儲存貯體的 PutBucketPolicyGetBucketPolicy 許可,我們就會自動將以下政策連接至該儲存貯體。此政策會覆寫附加至儲存貯體的任何現有政策。

否則,儲存貯體擁有者必須將此政策新增至儲存貯體、指定流量日誌建立者的 AWS 帳戶 ID,否則流量日誌會建立失敗。如需詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的「使用儲存貯體政策」。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": {"Service": "delivery.logs.amazonaws.com"}, "Action": "s3:PutObject", "Resource": "my-s3-arn", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": account_id }, "ArnLike": { "aws:SourceArn": "arn:aws:logs:region:account_id:*" } } }, { "Sid": "AWSLogDeliveryCheck", "Effect": "Allow", "Principal": {"Service": "delivery.logs.amazonaws.com"}, "Action": ["s3:GetBucketAcl", "s3:ListBucket"], "Resource": "arn:aws:s3:::bucket_name", "Condition": { "StringEquals": { "aws:SourceAccount": account_id }, "ArnLike": { "aws:SourceArn": "arn:aws:logs:region:account_id:*" } } } ] }

您為 ARN 指定的 my-s3-arn 取決於您是否使用與 Hive 相容的 S3 字首。

  • 預設字首

    arn:aws:s3:::bucket_name/optional_folder/AWSLogs/account_id/*
  • 與 Hive 相容的 S3 字首

    arn:aws:s3:::bucket_name/optional_folder/AWSLogs/aws-account-id=account_id/*

最佳實務是,建議您將這些許可授予日誌交付服務主體,而不是個別 AWS 帳戶 ARNs。這也是使用 aws:SourceAccountaws:SourceArn 條件金鑰來保護自己免受混淆代理人問題的困擾之最佳實務。來源帳戶是流量日誌的擁有者,而來源ARN是日誌服務的萬用字元 ARN (*)。

搭配 SSE- 使用的必要金鑰政策KMS

您可以透過使用 Amazon S3 S3-Managed金鑰 (SSE-S3) 啟用伺服器端加密或使用KMS金鑰 (SSE-) 啟用伺服器端加密來保護 Amazon S3 儲存貯體中的資料KMS。如需詳細資訊,請參閱《Amazon S3 使用者指南》中的使用伺服器端加密保護資料

透過 SSE-KMS,您可以使用 AWS 受管金鑰或客戶受管金鑰。使用 AWS 受管金鑰時,您無法使用跨帳戶交付。流量日誌是從日誌傳遞帳戶傳遞,因此您必須授予跨帳戶傳遞的存取權。若要授予 S3 儲存貯體的跨帳戶存取權,請使用客戶受管金鑰,並在啟用儲存貯體加密時指定客戶受管金鑰的 Amazon Resource Name (ARN)。如需詳細資訊,請參閱《Amazon S3 使用者指南》中的使用 AWS KMS指定伺服器端加密

當您使用 SSE-KMS 搭配客戶受管金鑰時,必須將下列項目新增至金鑰的金鑰政策 (而非 S3 儲存貯體的儲存貯體政策),以便 VPC Flow Logs 可以寫入 S3 儲存貯體。

{ "Sid": "Allow Transit Gateway Flow Logs to use the key", "Effect": "Allow", "Principal": { "Service": [ "delivery.logs.amazonaws.com" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }

Amazon S3 日誌檔案許可

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

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

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