

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon CloudFront ディストリビューションのアクセスロギング、HTTPS、TLS バージョンを確認する
<a name="check-an-amazon-cloudfront-distribution-for-access-logging-https-and-tls-version"></a>

*Amazon Web Services、SaiJeevan Devireddy、Bijesh Bal*

## 概要
<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 は、ユーザーへの静的および動的なウェブコンテンツ (.html、.css、.js、イメージファイルなど) の配信を高速化する Amazon Web Services (AWS) です。CloudFront では、*エッジロケーション*というデータセンターの世界的ネットワークを経由してコンテンツを配信します。CloudFront でサービスを提供しているコンテンツをユーザーがリクエストすると、リクエストはエッジロケーションにルーティングされ、レイテンシー (遅延時間) が最小になります。これにより、コンテンツは可能な限り最高のパフォーマンスで配信されます。

このパターンでは、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) を検出したときに開始される AWS Lambda 関数を示します。Lambda 関数のカスタムロジックは、AWS アカウントで作成または更新されたすべての CloudFront ディストリビューションを評価します。以下の違反を検出すると、Amazon Simple Notiﬁcation 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 アカウント
+ 違反の通知を受信する E メールアドレス

**制限事項**
+ このセキュリティコントロールでは、ディストリビューションが更新されていない限り、既存の Cloudfront ディストリビューションはチェックされません。
+ CloudFront はグローバルサービスと見なされ、特定の AWS リージョンに結び付けられていません。ただし、Amazon CloudWatch Logs および AWS Cloudtrail API ロギングは、米国東部 (バージニア北部) リージョン (`us-east-1`) で行われます。そのため、この CloudFront のセキュリティコントロールは、`us-east-1` でデプロイし、維持する必要があります。この単一のデプロイは、CloudFront のすべてのディストリビューションをモニタリングします。セキュリティコントロールを他の AWS リージョンにデプロイしないでください。(他のリージョンにデプロイすると、CloudWatch イベントと Lambda 関数の開始に失敗し、SNS 通知も送信されません)。
+ このソリューションは、CloudFront ウェブコンテンツディストリビューションによる広範なテストを経ています。リアルタイムメッセージングプロトコル (RTMP) ストリーミングディストリビューションは対象外です。

## アーキテクチャ
<a name="check-an-amazon-cloudfront-distribution-for-access-logging-https-and-tls-version-architecture"></a>

**ターゲットテクノロジースタック**
+ Lambda function
+ SNS トピック
+ Amazon EventBridge ルール

**ターゲットアーキテクチャ**

![\[Workflow diagram showing AWS のサービス for distribution creation, event processing, and email notification.\]](http://docs.aws.amazon.com/ja_jp/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 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 は、お客様独自のアプリケーション、Software as a Service (SaaS) アプリケーション、および AWS サービスからのリアルタイムデータをストリーム配信し、そのデータを Lambda などのターゲットにルーティングします。
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) – AWS 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 は、ウェブサーバーや E メールアドレスを含む、パブリッシャーとクライアント間のメッセージの配信または送信を調整および管理するウェブサービスです。サブスクライバーは、サブスクライブしているトピックに対して発行されたすべてのメッセージを受信します。また、同じトピックのサブスクライバーはすべて同じメッセージを受信します。

**Code**

添付のコードには以下が含まれます。
+ Lambda コード (index.py) を含む.zip ファイル
+ 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>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Lambda コード用の S3 バケットを作成します。 | Amazon S3 コンソールで、先頭にスラッシュを含まない一意の名前で S3 バケットを作成します。S3 バケット名はグローバルに一意であり、名前空間はすべての AWS アカウントによって共有されています。S3 バケットは、Lambda コードをデプロイする予定のリージョンに存在する必要があります。 | クラウドアーキテクト | 
| S3 バケットに Lambda コードをアップロードします。 | 「*添付ファイル*」セクションで提供されている Lambda コード (cloudfront\$1ssl\$1log\$1lambda.zip ファイル) を、前のステップで作成した S3 バケットにアップロードします。 | クラウドアーキテクト | 

### CloudFormation のテンプレートを入手するには
<a name="deploy-the-cloudformation-template"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| CloudFormation テンプレートをデプロイします。 | AWS CloudFormation コンソールで、S3 バケットと同じ AWS リージョンに、「*添付ファイル*」セクションで提供されている CloudFormation テンプレート (cloudfront-ssl-logging.yml) をデプロイします。  | クラウドアーキテクト | 
| S3 バケット名を指定します。 | **S3 バケット** パラメータには、最初のエピックで作成した S3 バケットの名前を指定します。 | クラウドアーキテクト | 
| Lambda ファイルの Amazon S3 キー名を指定します。 | **S3 キー**パラメータには、S3 バケット内の Lambda コード .zip ファイルの Amazon S3 のロケーションを指定します。先頭にスラッシュを含めないでください (たとえば、lambda.zip や controls/lambda.zip と入力してください)。 | クラウドアーキテクト | 
| 通知用 E メールアドレスを提供します。 | **通知メール**パラメータには、違反通知を受け取るメールアドレスを指定します。 | クラウドアーキテクト | 
| ロギングのレベルを定義します。 | **Lambda ロギングレベル**のパラメータでは、Lambda 関数のロギングレベルを定義します。次のいずれかの値を選択します。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/check-an-amazon-cloudfront-distribution-for-access-logging-https-and-tls-version.html) | クラウドアーキテクト | 

### サブスクリプションを確認
<a name="confirm-the-subscription"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| サブスクリプションを確認します。 | CloudFormation テンプレートが正常にデプロイされると、新しい SNS トピックが作成され、指定したメールアドレスにサブスクリプションメッセージが送信されます。違反通知を受信するには、この E メールサブスクリプションを確認する必要があります。 | クラウドアーキテクト | 

## 関連リソース
<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)」