top of page

AWS CloudFrontでオリジンを守ろう!(S3編)

今回はCloudFrontとS3を利用しているWebサイトでセキュリティ設計をレビューする時に確認していただきたいポイントをお伝えいたします。

AWSのCloudFrontは、AWSが管理する世界中のコンテンツ配信サーバを構成するネットワークで(一般的にCDNと呼ばれます。)、Webページを高速に配信してくれるサービスです。このサービスを利用するとWebコンテンツをホストしているサイトから世界中のAWSのCloudFrontを構成するサーバにキャッシュされ、アクセスするユーザーの近くのサーバからコンテンツがダウンロードできるようになります。 そのため、海外のユーザーが日本のサーバにあるWebサイトを毎回日本のサーバにアクセスするのではなく、近くのサーバで参照するためユーザーがコンテンツをダウンロードするスピードにストレスなくWebを閲覧することができます。

またキャッシュ機能の他にセキュリティ面からも多くの利点を得ることができます。 AWS WAFがCloudFront上で利用できるため、Webアプリケーションレイヤーに対する保護が有効になります。さらに運用されているCDNのインフラはAWSで管理され、標準でDDoS攻撃の対策が取られており、攻撃耐性も強くなっております。 管理してるアプリケーションを狙ったDDoS攻撃に対してもユーザー個別の対策ができるようにDDoS対策サービスもを提供しています。CloudFrontは安価でスタートできるため、サービス導入の敷居が低く、非常に費用対効果の高いサービスであると感じております。


前置きが長くなりますが、今回S3上のコンテンツをCloudFrontを利用して公開する場合、S3に直接アクセスさせないように設定することがコンテンツを保護するために重要です。一般的にコンテンツ配信ネットワーク内にあるコンテンツをオリジンと呼びますがそのオリジンを保護することを今回は指します。 S3のコンテンツを公開する場合、パブリックアクセスを設定しますが、CloudFrontを利用する場合、S3に直接アクセスさせるのではなく、CloudFrontを介してアクセスさせることがセキュリティ上、重要になります。

セキュリティの原則はアクセス権限ですからアクセスできる領域を減らす考えは重要になります。頭が隠れているけどお尻がかくれていない状態だと、せっかくの頭でとった対策が無効になることがあります。例えば、CloudFront上のWAFでアクセス制限をかけていたのが、S3に直接アクセスされてしまえば、WAF制御が意味をなさなくなります。

ではどのように設定をするか解説したいと思います。 方法はCloudFrontのOrigin Access Identityを利用することです。設定は非常に簡単です。 以下の流れで作成します。

1.CloudFrontでOrigin Access Identityを作成する。 [Create OAI]をクリックすると、[Create Origin Access Identity]画面が表示されるため、そこに管理しやすいようにCommentを入力します。OAIが特定しやすい名称を入れると良いです。ここで入力したコメントがCloudFrontの別の設定箇所で参照されます。


[Create Origin Access Identity]

作成するとした画面のように一覧画面に表示されます。

2. CloudFrontのオリジンの設定で作成したOrigin Access Identityを利用してS3を参照するように設定する。 CloudFrontの作成途中にOriginを設定する箇所があります。Originの作成過程でOrigin Access Identityを利用したアクセスを設定します。


[Restrict Bucket Access]をYes, [Origin Access Identity]に上の手順で作成したOAIを選択します。今回の例ではTESTです。[Grant Read Permission on Bucket]をYesで選択すると自動的にバケットポリシーが割り当てられます。


上記の設定が完成したら、念のためバケットが公開されていないか確認してください。これでCloudFrontのみWebリクエストを受けることができますので、セキュリティが強化できます。 是非CloudFront+S3の環境の場合、確認してみてください。 またCloudFrontにAWS WAFを組み合わせることでセキュリティを強化することができます。WAFの設定から運用監視は弊社「CyberNEO」のAIで自動化することができます。こちらも是非ご検討ください。

関連リンク

Comments


bottom of page