建立發佈到 Amazon S3 的流量日誌 - Amazon VPC

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

建立發佈到 Amazon S3 的流量日誌

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

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

將流程日誌發佈到 Amazon S3 時,會 Amazon CloudWatch 針對付費日誌收取資料擷取和存檔費用。如需有關付費日誌 CloudWatch 定價的詳細資訊,請開啟 Amazon CloudWatch 定價,選擇日誌,然後尋找付費日誌。

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

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

如需有關 CloudWatch 日誌的詳細資訊,請參閱 Amazon 日誌使用者指南中的傳送到 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 的 16:20 UTC 建立的流量日誌的日誌檔案範例。檔案包含結束時間介於 16:20:00 和 16:24:59 的流量日誌記錄。

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

將流量日誌發佈至 Amazon S3 的 IAM 委託人的 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:*" } } } ] }

您為 my-s3-arn 指定的 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 帳戶 ARN。這也是使用 aws:SourceAccountaws:SourceArn 條件金鑰來保護自己免受混淆代理人問題的困擾之最佳實務。來源帳戶是流量日誌的擁有者,且來源 ARN 是日誌服務的萬用字元 (*) ARN。

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

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

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

當您將 SSE-KMS 與由客戶管理之金鑰搭配使用時,您必須將以下內容新增至金鑰的金鑰政策 (而不是 S3 儲存貯體的儲存貯體政策),以便 VPC 流量日誌可以寫入您的 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 使用存取控制清單 (ACL) 來管理流量日誌所建立之日誌檔案的存取。根據預設,儲存貯體擁有者擁有各個日誌檔案的 FULL_CONTROL 許可。日誌交付擁有者與儲存貯體擁有者不同時,就沒有任何許可。日誌交付帳戶擁有 READWRITE 許可。如需詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的存取控制清單 (ACL) 概觀

建立發佈到 Amazon S3 的流量日誌

建立並設定 Amazon S3 儲存貯體後,即可建立傳輸閘道的流量日誌。

使用主控台建立發佈至 Amazon S3 的傳輸閘道流量日誌
  1. 前往 https://console.aws.amazon.com/vpc/ 開啟 Amazon VPC 主控台。

  2. 在導覽窗格中,選擇 Transit gateways (傳輸閘道) 或 Transit gateway attachments (傳輸閘道連接)。

  3. 選取一或多個傳輸閘道或傳輸閘道連接的核取方塊。

  4. 選擇 Actions (動作)、Create flow log (建立流量日誌)。

  5. 配置流量日誌設定。如需詳細資訊,請參閱配置流量日誌設定

若要使用主控台配置流量日誌設定
  1. 對於 Destination (目標),選擇 Send to an S3 bucket (傳送至 S3 儲存貯體)。

  2. 針對 S3 儲存貯體 ARN,指定現有 Amazon S3 儲存貯體的 Amazon Resource Name (ARN)。您可以選擇包含子資料夾。例如,若要指定名為 my-logs 之儲存貯體中的 my-bucket 子資料夾,請使用以下 ARN 格式:

    arn:aws::s3:::my-bucket/my-logs/

    儲存貯體不可使用 AWSLogs 做為子資料夾名稱,因為這是保留項目。

    若您擁有儲存貯體,我們會自動建立資源政策並將它連接至儲存貯體。如需詳細資訊,請參閱 流量日誌的 Amazon S3 儲存貯體許可

  3. 對於 Log record format (日誌記錄格式),請指定流量日誌記錄的格式。

    • 若要使用預設的流量日誌紀錄格式,請選擇 AWS default format ( 預設格式)

    • 若要建立自訂格式,請選擇 Custom format (自訂格式)。針對 Log format (日誌格式),請選擇要包含在流量日誌記錄中的欄位。

  4. 對於 Log file format (日誌檔案格式),指定日誌檔案的格式。

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

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

  5. (選用) 若要使用 Hive 相容的 S3 字首,請選擇 Hive-compatible S3 prefix (Hive 相容的 S3 字首)、Enable (啟用)。

  6. (選用) 若要每小時分割流量日誌,請選擇 Every 1 hour (60 mins) (每 1 小時 (60 分鐘))。

  7. (選用) 若要新增標籤至流量日誌,請選擇 Add new tag (新增新標籤),並指定標籤金鑰和值。

  8. 選擇 Create flow log (建立流程日誌)。

使用命令列工具建立可發佈至 Amazon S3 的流量日誌

請使用下列其中一個命令。

下列 AWS CLI 範例會建立一個流程日誌,擷取 VPC 的所有傳輸閘道流量,tgw-00112233344556677並將流程日誌傳送到名為flow-log-bucket的 Amazon S3 儲存貯體。--log-format 參數會指定流量日誌記錄的自訂格式。

aws ec2 create-flow-logs --resource-type TransitGateway --resource-ids tgw-00112233344556677 --log-destination-type s3 --log-destination arn:aws:s3:::flow-log-bucket/my-custom-flow-logs/'

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

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