【Security Hub修復手順】[CloudFront.1] CloudFront ディストリビューションでは、デフォルトのルートオブジェクトが設定されている必要があります

AWS SecurityHub 基礎セキュリティのベストプラクティスコントロール修復手順をご紹介します。
2023.01.25

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、AWS事業本部@福岡オフィスのべこみん(@beco_minn)です。

皆さん、お使いのAWS環境のセキュリティチェックはしていますか?

当エントリでは、AWS Security HubによるAWS環境のセキュリティ状況スコアリングに該当する項目についての修復手順をご紹介します。

本記事の対象コントロール

[CloudFront.1] CloudFront ディストリビューションでは、デフォルトのルートオブジェクトが設定されている必要があります

[CloudFront.1] CloudFront distributions should have a default root object configured

前提条件

本記事はAWS Security Hubで「AWS基礎セキュリティのベストプラクティススタンダード」を利用されている方向けの内容となります。 AWS Security Hubの詳細についてはこちらのブログをご覧ください。

対象コントロールの説明

本コントロールでは「対象のCloudFrontディストリビューションにおいてデフォルトのルートオブジェクトが設定されているかどうか」が確認されます。デフォルトのルートオブジェクトが設定されていない場合、コントロールは失敗します。

では、「デフォルトのルートオブジェクト」とは何でしょうか?

例えばCloudFrontディストリビューションのドメインが d111111abcdef8.cloudfront.net の場合、そのドメインの / である https://d111111abcdef8.cloudfront.net/ にアクセスされた時に index.html が表示されて欲しいとします。

この index.html が「デフォルトのルートオブジェクト」です。

CloudFrontでは、ディストリビューションのドメインのルートディレクトリ / にアクセスされた時に表示するファイルを指定することが出来ます。

デフォルトのルートオブジェクトについての詳細は以下のURL先をご参照下さい。

この設定を行わない場合、こちらが意図しないオリジンのオブジェクトにユーザーがアクセスしてしまうことになるかもしれません。

例えばAmazon S3をオリジンとしている場合、S3バケットの設定にもよりますが、リクエストに対して以下の結果を返してしまう恐れがあります。

  • S3バケットのコンテンツ一覧
  • プライベートコンテンツの一覧
  • 403エラー(Forbidden)

参考: ルートオブジェクトを定義しない場合の CloudFront の動作 - Amazon CloudFront

下記の記事では実際にS3バケット内のオブジェクト一覧が公開されるケースを検証しています。ご興味のある方はご参照下さい。

修復手順

1. ステークホルダーに確認

まずはステークホルダー(リソースの作成者や管理している部署などの関係者)に以下を確認します。

  • オリジン側やCloudFront Functions、Lambda@Edgeなどでインデックスドキュメントを補完する仕組みが既に実装されているか
    • 既に実装されている場合
      • 実装者に確認した上で、動作に影響が無い場合は以降のステップに進み、本コントロールを是正して下さい
    • 実装されていない場合
      • 以降のステップに進み、本コントロールを是正して下さい

2. ディストリビューションのオリジンにデフォルトルートオブジェクトとして設定したいオブジェクトを配置

例えば https://d111111abcdef8.cloudfront.net/ にユーザーがアクセスした際に https://d111111abcdef8.cloudfront.net/index.html を返したい場合、ここでの「デフォルトルートオブジェクトとして設定したいオブジェクト」は index.html になります。

CloudFront ディストリビューションのオリジンに、デフォルトルートオブジェクトとして設定したいオブジェクトを配置します。既に存在する場合はこの手順はスキップして下さい。

この際、CloudFront ディストリビューションから対象のオブジェクトにアクセス出来るようにCloudFrontの権限設定やオブジェクトへのアクセス許可設定を確認して下さい。

3. ディストリビューションにデフォルトルートオブジェクトを設定

デフォルトルートオブジェクトはディストリビューション作成時だけでなく作成後にも設定可能です。

下記は作成済みのディストリビューションに対して設定する場合の手順です。

Security Hubのコンソールより是正対象のディストリビューションを確認します。

CloudFrontのコンソールより対象のディストリビューションの詳細画面を開き、設定の編集画面を開きます。

編集画面下部に存在する「デフォルトルートオブジェクト - オプション」に設定したいオブジェクトのファイル名のみを入力します。

設定を保存します。

4. デフォルトルートオブジェクトが設定されていることを確認する

最後に、ディストリビューションのルートURLにアクセスし、設定したオブジェクトが表示されることを確認します。

参考

最後に

今回は、AWS Security HubによるAWS環境のセキュリティ状況スコアリングに該当する項目についての修正手順をご紹介しました。

コントロールを修正して、お使いのAWS環境のセキュリティをパワーアップさせましょう!

最後までお読みいただきありがとうございました!どなたかのお役に立てれば幸いです。

以上、べこみんでした。

クラスメソッドメンバーズをご契約の皆さまに

AWS Security Hub 「基礎セキュリティのベストプラクティス」の各チェック項目(コントロール)に対する弊社としての推奨対応やコメントを記載しているClassmethod Cloud Guidebook を提供しています。 クラスメソッドメンバーズポータルの「お役立ち情報」→「組織的な AWS 活用のためのノウハウ」からご参照ください。