檢查 Amazon CloudFront 分發是否存取記錄、HTTPS 和 TLS 版本 - AWS Prescriptive Guidance

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

檢查 Amazon CloudFront 分發是否存取記錄、HTTPS 和 TLS 版本

由塞耶凡惡靈 (AWS) 創建

Environment (環 生產

技術::技能 內容交付;安全、身份、合規

工作負載:所有其他工作負載

AWS 服務:AWS 服務 Amazon SNS; AWS CloudFormation; Amazon CloudWatch; AWS Lambda

Summary

此模式會檢查 Amazon CloudFront 分發,以確保其使用 HTTPS、使用傳輸層安全 (TLS) 1.2 版或更新版本,並且已啟用存取記錄。CloudFront 是 Amazon Web 服務 (AWS) 提供的服務,可將 .html、.css、.js 和影像檔案等靜態與動態內容加速發佈給使用者。CloudFront 透過全球資料中心網路提供您的內容,稱為節點。當使用者請求您使用 CloudFront 提供的內容時,請求會被路由到可提供最低延遲 (時間延遲) 的節點,以便能以最佳的效能發佈內容。

此模式提供了一個 AWS Lambda 函數,該函數會在 Amazon CloudWatch Events 偵測到 CloudFront 前端 API 呼叫時啟動CreateDistributionCreateDistributionWithTags, 或UpdateDistribution。Lambda 函數中的自訂邏輯會評估在 AWS 帳戶中建立或更新的所有 CloudFront 分發。如果偵測到下列違規,它會使用 Amazon Simple Notification Service (Amazon SNS) 來傳送違規通知:

  • 全域檢查:全域:

    • 自訂憑證未使用 TLS 1.2 版

    • 停用所有記錄以供發佈

  • 原點檢查:

    • 未使用 TLS 1.2 版設定原始碼

    • 允許在 HTTPS 以外的通訊協定上與來源通訊

  • 檢查行為:檢查:

    • 允許在 HTTPS 以外的通訊協定上進行預設行為通訊

    • 允許在 HTTPS 以外的通訊協定上進行自訂行為通訊

先決條件和限制

先決條件

  • 作用中的 AWS 帳戶

  • 您想要收到違規通知的電子郵件地址

限制

  • 此安全性控制項不會檢查現有的 Cloudfront 發行版,除非已對該發行版進行更新。

  • CloudFront Front 被視為全球服務,並不繫結於特定 AWS 區域。然而,針對全球服務的 Amazon CloudWatch 日誌和 AWS CloudTrail API 日誌都會發生在美國東部 (維吉尼亞北部) 區域 (us-east-1。因此,CloudFront 的這項安全性控制必須部署並維護在us-east-1。此單一部署會監控 CloudFront 的所有分發。請勿在任何其他 AWS 區域部署安全控制。在其他區域的部署將導致無法起始 CloudWatch 事件和 Lambda 函式,而且沒有 SNS 通知。)

  • 此解決方案已通過 CloudFront 網頁內容分發的廣泛測試。它不包括即時簡訊協定 (RTMP) 串流分佈。

Architecture

目標技術堆疊

  • Lambda 功能

  • SNS 主題

  • Amazon EventBridge 規則

目標架構

自動化與擴充

  • 若您使用 AWS Organizations,您可以使用 AWS 組織AWS CloudFormation StackSets,在您想要監控的多個帳戶中部署附加範本。

Tools

AWS 服務

  • AWS CloudFormation— CloudFormation 是一項服務,可幫助您利用基礎設施做為程式碼來塑造模型及設定 AWS 資源。

  • Amazon EventBridge— EventBridge 可從自己的應用程式、軟體即服務 (SaaS) 應用程式和 AWS 服務提供即時資料串流,然後將該資料路由到 Lambda 函數等目標。

  • AWS Lambda— Lambda 支援執行程式碼,無需佈建或管理伺服器。

  • Amazon S3— Amazon Simple Storage Service (Amazon S3) 是一種可高度擴展的物件儲存服務,可用於各種儲存解決方案,包括網站、行動應用程式、備份和資料湖。

  • Amazon SNS— Amazon SNS 協調和管理發佈商和用戶端之間的訊息交付或傳送,包括 Web 伺服器和電子郵件地址。訂閱者會收到發佈到所訂閱主題的所有訊息,且某一主題的所有訂閱者均會收到相同訊息。

Code

附加程式碼包括:

  • 包含 Lambda 程式碼的 .zip 檔案 (index.py)

  • 您執行以部署 Lambda 程式碼的 CloudFormation 格式範本 (.yml 檔案)

Epics

任務描述必須具備技能
為 Lambda 程式碼建立 S3 儲存貯體。

在 Amazon S3 主控台上,建立具有不包含前導斜線的唯一名稱的 S3 儲存貯體。S3 儲存貯體的名稱必須是全域唯一,且命名空間會由所有 AWS 帳戶共享。您的 S3 儲存貯體必須位於您計劃部署 Lambda 程式碼的「區域」。

雲端架構師
將 Lambda 程式碼上傳至 S3 儲存貯體。

上傳提供的 Lambda 程式碼 (cloudfront_ssl_log_lambda.zip 檔案)附件區段更新至您在之前步驟中建立的 S3 儲存貯體。

雲端架構師
任務描述必須具備技能
部署 CloudFormation 範本。

在 AWS CloudFormation 主控台上,在與 S3 儲存貯體相同的 AWS 區域中,部署附件區段中的資料 

雲端架構師
指定 S3 儲存貯體名稱。

對於S3 儲存貯體參數中,請指定您在第一個史詩中建立的 S3 儲存貯體名稱。

雲端架構師
指定 Lambda 檔案的 Amazon S3 金鑰名稱。

對於S3 金鑰參數,請在 S3 儲存貯體中指定 Lambda 程式碼 .zip 檔案的 Amazon S3 位置。請勿包含前導斜線 (例如,您可以輸入 lambda.zip 或 controls/lambda.zip)。

雲端架構師
提供通知電子郵件地址。

對於通知電子郵件參數,請提供您想要接收違規通知的電子郵件地址。

雲端架構師
定義記錄層級。

對於Lambda 日誌層級參數中,定義 Lambda 函數的記錄層級。請選擇下列其中一個值: 

  • INFO以取得有關應用程式進度的詳細資訊訊息。

  • 錯誤以取得可能仍允許應用程式繼續執行之錯誤事件的相關資訊。

  • WARNING以取得潛在有害狀況的相關資訊。

雲端架構師
任務描述必須具備技能
確認訂閱。

成功部署 CloudFormation 範本後,系統會建立新的 SNS 主題,並將訂閱訊息傳送到您提供的電子郵件地址。您必須確認此電子郵件訂閱才能接收違規通知。

雲端架構師

Attachments

attachment.zip