

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

# 檢查 Amazon CloudFront 分佈是否有存取記錄、HTTPS 和 TLS 版本
<a name="check-an-amazon-cloudfront-distribution-for-access-logging-https-and-tls-version"></a>

*SaiJeevan Devireddy 和 Bijesh Bal，Amazon Web Services*

## 總結
<a name="check-an-amazon-cloudfront-distribution-for-access-logging-https-and-tls-version-summary"></a>

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

此模式提供 AWS Lambda 函數，會在 Amazon CloudWatch Events 偵測到 CloudFront API 呼叫 [CreateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateDistribution.html)、[CreateDistributionWithTags](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateDistributionWithTags.html) 或 [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html) 時啟動。Lambda 函數中的自訂邏輯會評估在 AWS 帳戶中建立或更新的所有 CloudFront 分佈。如果偵測到下列違規，它會使用 Amazon Simple Notification Service (Amazon SNS) 傳送違規通知：
+ 全域檢查：
  + 自訂憑證不使用 TLS 1.2 版
  + 已停用記錄以進行分佈
+ 原始伺服器檢查：
  + 原始伺服器未設定 TLS 1.2 版
  + 允許在 HTTPS 以外的通訊協定上與原始伺服器通訊
+ 行為檢查：
  + HTTPS 以外的通訊協定允許預設行為通訊
  + 允許在 HTTPS 以外的通訊協定上進行自訂行為通訊

## 先決條件和限制
<a name="check-an-amazon-cloudfront-distribution-for-access-logging-https-and-tls-version-prerequisites-and-limitations"></a>

**先決條件**
+ 作用中的 AWS 帳戶
+ 您想要接收違規通知的電子郵件地址

**限制**
+ 除非已對分佈進行更新，否則此安全控制不會檢查現有 Cloudfront 分佈。
+ CloudFront 被視為全球服務，且與特定 AWS 區域無關。不過，適用於全球服務的 Amazon CloudWatch Logs 和 AWS Cloudtrail API 記錄會位於美國東部 （維吉尼亞北部） 區域 (`us-east-1`)。因此，此 CloudFront 的安全控制必須在 中部署和維護`us-east-1`。此單一部署會監控 CloudFront 的所有分佈。請勿在任何其他 AWS 區域中部署安全控制。（在其他區域中部署會導致無法啟動 CloudWatch Events 和 Lambda 函數，而且沒有 SNS 通知。)
+ 此解決方案已透過 CloudFront Web 內容分發進行廣泛的測試。它不涵蓋即時傳訊通訊協定 (RTMP) 串流分佈。

## Architecture
<a name="check-an-amazon-cloudfront-distribution-for-access-logging-https-and-tls-version-architecture"></a>

**目標技術堆疊**
+ Lambda 函式
+ SNS 主題
+ Amazon EventBridge 規則

**目標架構**

![\[Workflow diagram showing AWS 服務 for distribution creation, event processing, and email notification.\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/1ae60f8f-3eaf-40f5-b01f-06e30e5604ce/images/e1521c48-99f6-4ec6-9e53-8713f3cf5776.png)


**自動化和擴展**
+ 如果您使用的是 AWS Organizations，則可以使用 [AWS Cloudformation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) 將連接的範本部署到您要監控的多個帳戶。

## 工具
<a name="check-an-amazon-cloudfront-distribution-for-access-logging-https-and-tls-version-tools"></a>

**AWS 服務**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) – CloudFormation 是一項服務，可協助您使用基礎設施做為程式碼來建立模型和設定 AWS 資源。
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html) – EventBridge 可從您自己的應用程式、軟體即服務 (SaaS) 應用程式和 AWS 服務提供即時資料串流，將該資料路由到 Lambda 函數等目標。
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) – Lambda 支援執行程式碼，無需佈建或管理伺服器。
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html) – Amazon Simple Storage Service (Amazon S3) 是一種高度可擴展的物件儲存服務，可用於各種儲存解決方案，包括網站、行動應用程式、備份和資料湖。
+ [Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) – Amazon SNS 會協調和管理發佈者和用戶端之間的訊息傳遞或傳送，包括 Web 伺服器和電子郵件地址。訂閱者會收到發佈到所訂閱主題的所有訊息，且某一主題的所有訂閱者均會收到相同訊息。

**Code**

附加的程式碼包括：
+ 包含 Lambda 程式碼的 .zip 檔案 (index.py：//)
+ 您執行以部署 Lambda 程式碼的 CloudFormation 範本 (.yml 檔案）

## 史詩
<a name="check-an-amazon-cloudfront-distribution-for-access-logging-https-and-tls-version-epics"></a>

### 上傳安全控制
<a name="upload-the-security-control"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 為 Lambda 程式碼建立 S3 儲存貯體。 | 在 Amazon S3 主控台上，使用不包含正斜線的唯一名稱建立 S3 儲存貯體。S3 儲存貯體名稱全域唯一，且命名空間由所有 AWS 帳戶共用。您的 S3 儲存貯體必須位於您計劃部署 Lambda 程式碼的區域中。 | 雲端架構師 | 
| 將 Lambda 程式碼上傳至 S3 儲存貯體。 | 將*附件*區段中提供的 Lambda 程式碼 (cloudfront\$1ssl\$1log\$1lambda.zip 檔案） 上傳到您在上一個步驟中建立的 S3 儲存貯體。 | 雲端架構師 | 

### 部署 CloudFormation 範本
<a name="deploy-the-cloudformation-template"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 部署 CloudFormation 範本。 | 在 AWS CloudFormation 主控台上，在與 S3 儲存貯體相同的 AWS 區域中，部署*附件*區段中提供的 CloudFormation 範本 (cloudfront-ssl-logging.yml)。  | 雲端架構師 | 
| 指定 S3 儲存貯體名稱。 | 針對 **S3 儲存貯體**參數，指定您在第一個 epic 中建立的 S3 儲存貯體名稱。 | 雲端架構師 | 
| 指定 Lambda 檔案的 Amazon S3 金鑰名稱。 | 針對 **S3 金鑰**參數，指定 SAmazon S3 S3 位置。請勿包含正斜線 （例如，您可以輸入 lambda.zip 或 control/lambda.zip)。 | 雲端架構師 | 
| 提供通知電子郵件地址。 | 對於**通知電子郵件**參數，請提供您要接收違規通知的電子郵件地址。 | 雲端架構師 | 
| 定義記錄層級。 | 針對 **Lambda 記錄層級**參數，定義 Lambda 函數的記錄層級。請選擇下列其中一個值： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/check-an-amazon-cloudfront-distribution-for-access-logging-https-and-tls-version.html) | 雲端架構師 | 

### 確認訂閱
<a name="confirm-the-subscription"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 確認訂閱。 | 成功部署 CloudFormation 範本後，會建立新的 SNS 主題，並將訂閱訊息傳送至您提供的電子郵件地址。您必須確認此電子郵件訂閱，才能接收違規通知。 | 雲端架構師 | 

## 相關資源
<a name="check-an-amazon-cloudfront-distribution-for-access-logging-https-and-tls-version-related-resources"></a>
+ [AWS CloudFormation 資訊](https://aws.amazon.com/cloudformation/)
+ [在 AWS CloudFormation 主控台上建立堆疊](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html) (CloudFormation 文件）
+ [CloudFront 記錄](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/logging.html) (CloudFront 文件）
+ [Amazon S3 資訊](https://aws.amazon.com/s3/)
+ [AWS Lambda 資訊](https://aws.amazon.com/lambda/)

## 附件
<a name="attachments-1ae60f8f-3eaf-40f5-b01f-06e30e5604ce"></a>

若要存取與本文件相關聯的其他內容，請解壓縮下列檔案： [attachment.zip](samples/p-attach/1ae60f8f-3eaf-40f5-b01f-06e30e5604ce/attachments/attachment.zip)