跳至內容

該如何從我的 CloudFront 日誌中移除敏感資料?

2 分的閱讀內容
0

根據預設,Amazon CloudFront 標準日誌會擷取部分欄位的敏感資料。基於隱私考量,我想移除這部分的日誌。

簡短說明

**注意:**本文以 Client-IP (c-ip) 欄位為例。

CloudFront 日誌預設會擷取 c-ip 為欄位之一。有三種方法可以從您的日誌中移除 c-ip。

  • 在日誌傳遞至 Amazon Simple Storage Service (Amazon S3) 時,觸發 AWS Lambda 函式來移除欄位。
  • 讓 Amazon Elastic Compute Cloud (Amazon EC2) 程序定期執行以移除欄位。
  • 使用 CloudFront 標準日誌,並在將日誌資料傳送到 Amazon S3 之前移除敏感欄位。

**注意:**若要啟用標準日誌,您必須使用專業方案或按使用量付費方案。如需更多資訊,請參閱 Amazon CloudFront pricing (Amazon CloudFront 定價)。

解決方法

觸發 Lambda 函式

移除 c-ip 欄位的方法之一是使用 Amazon S3 事件通知。當 CloudFront 將日誌檔案傳遞到 Amazon S3 儲存貯體時,設定您的儲存貯體以觸發 Lambda 函式。

建立 Lambda 函式

1.    開啟 AWS Lambda 主控台。

2.    在 Functions (函式) 下,建立具有下列組態的新 Lambda 函式:

  • 使用來自 Amazon S3 事件的物件名稱。
  • 從 S3 儲存貯體取得物件。

3.    移除 c-ip 欄位,或將值替換為匿名資料。

**注意:**替換這些值可保持相同的格式,以防有其他應用程式需要進一步處理日誌。

4.    儲存並將日誌重新上傳回 Amazon S3。

建立新事件

1.    在日誌目標儲存貯體中,前往 Properties (屬性)。

2.    在 Event notifications (事件通知) 下建立新事件。

3.    選取事件類型 Put,以及目的地 Lambda function (Lambda 函式)。

4.    選取在步驟 1 中建立的 Lambda 函式,然後選擇 Save (儲存)。

重要事項: 為避免 Lambda 函式發生重複調用 (無限循環),請執行下列動作:

  • 讓您的 CloudFront 日誌傳遞到初始的暫存前置詞,例如 "original"。
  • 僅針對該前置詞觸發 Amazon S3 事件。
  • 讓 Lambda 函式將日誌傳遞到不同的前置詞,例如 "processed"。

如果您將日誌傳遞到相同的前置詞,Lambda 函式會再次觸發並建立重複調用。如需更多資訊,請參閱 Avoiding recursive invocation with Amazon S3 and AWS Lambda (避免使用 Amazon S3 和 AWS Lambda 進行重複調用)。

**注意:**為降低 Amazon S3 成本,請設定 Amazon S3 生命週期政策,以在特定期限後將原始日誌刪除。

使用 Amazon EC2 程序

使用 Amazon EventBridge 建立排程規則 (cron),以依排程的週期啟動 EC2 執行個體並處理日誌檔案,例如每天一次。程序執行完成後,停止 EC2 執行個體直到下一次循環,以節省成本。

1.    設定 EventBridge 和 Lambda 以在指定時間啟動 EC2 執行個體。如需更多資訊,請參閱如何使用 Lambda 來定期停止和啟動 Amazon EC2 執行個體?

2.    在 EC2 執行個體上,部署一段用於下載特定期間日誌的程式碼,例如一整天。移除 c-ip 欄位以處理日誌,或將該欄位的值替換為匿名資料。將處理後的日誌重新上傳回 S3 儲存貯體。

**選用:**將所有處理後的日誌合併為單一檔案,以節省 Amazon S3 Lifecycle 轉換成本。如果打算長期儲存日誌,此程序會很有幫助。

使用 Kinesis Data Firehose

使用 CloudFront 即時日誌來選取您想要儲存的欄位。隨後,讓 Amazon Kinesis Data Firehose 將日誌資料傳送到 Amazon S3。

當您設定 CloudFront 即時日誌時,系統會提供一份包含在每筆即時日誌記錄中的欄位清單。每筆日誌記錄最多包含 40 個欄位。您可以選擇接收所有可用的欄位,或僅接收您必須用來監控與分析效能的欄位。停用 c-ip 欄位以從日誌中排除該欄位。

注意:由於使用了 Amazon Kinesis Data Streams,此選項的成本可能會變得很高。建議使用其他兩個選項 (觸發 Lambda 函式或使用 Amazon EC2 程序) 以獲得更具成本效益的解決方案。


AWS 官方已更新 4 年前