9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【小ネタ/ハンズオン】CloudFront+ALB+Cognitoを使って簡単Web認証基盤を作ってみよう!!

Last updated at Posted at 2025-05-11

いつも記事を読んでいただきありがとうございます!
モブエンジニア(@mob-engineer)です!

社内検証環境でEC2環境でWebサーバを実装+認証基盤を実装といった要件があったので、今回実装した内容について簡単にハンズオン化してみました。

初見の方でもサクッと読めるように平易な表現で執筆しておりますので、お気軽に読んでいただければ幸いです。

目次

  • 対象読者
  • 利用ケース
  • 構成イメージ
  • ハンズオン
    • セキュリティグループ設定
    • EC2設定
    • ALB設定
    • CloudFront設定
    • Cognito設定
  • 所感

対象読者

次のような課題を抱えている方に本記事を活用いただけますと幸いです。

  • Route53などを用いずに簡単にWebブラウザを実装したい
  • S3を利用しないで静的Webサイトを実装したい場合
  • とりあえず、AWSを用いた楽々実装アーキテクチャを実装したい

利用ケース

次のようなケースだと利用できると考えています。

  • サーバーアクセス時に任意のポートで接続する場合
  • バックエンド・フロントエンド環境が同一の場合
  • 新規ドメインを払い出すのが面倒・難しい場合(ACMへの登録を行いたくない)

商用環境で実装する場合はAWS WAFなどのセキュリティ対策・Auto Scalingなどのアジリティ対策を講じてください。

構成イメージ

次のような構成イメージを想定しています。

image.png

ハンズオン

セキュリティグループ設定

EC2サーバ用とALB用にあらかじめ作成しておきます。

  • EC2用セキュリティグループ

image.png

image.png

ALBから来たHTTP・HTTPS通信は許可する設定にしております。また、自環境からはSSH・任意のポートを許可する仕様にしております。

  • ALB用セキュリティグループ

image.png

image.png

HTTP・HTTPSポートに関しては任意の場所でも許可する仕様にしております。

より厳密に設定する場合はCloudFrontからの通信のみに範囲を狭めてみてください

EC2設定

EC2設定に関してはapacheの設定ファイルを変えるだけです。
今回は使用ポートを7000番にしました。(任意の値で大丈夫です)

なお、HTML資材は過去ブログから持ってきています。

実装した結果は以下となります

image.png

ALB設定

ALBの設定を行う前にEC2のセキュリティグループを次の通り変更してください。

image.png

上記設定を行うことで、ALBから任意のポート宛の通信を行えるようになります。

ALB設定としてターゲットグループとロードバランサーの設定を行います。

先にターゲットグループを設定しないとロードバランサーは作成できません

  • ターゲットグループ

image.png

ターゲット登録方法としてインスタンスでの登録がありますが、TerraformなどのIaCツールで頻繁にリソースを構築⇒削除する場合、インスタンスIDを固定化できません。そのため、今回は値を固定化できるIPアドレス(プライベートIP)をターゲットに指定しています。

  • ロードバランサー

image.png

リスナーにつてはHTTPプロトコルの通信は許可するといったルールにしております。
なお、ALB単体でHTTPS設定も可能ですがその場合ACM設定が必須となります。

それでは、ALBから払い出されたDNSドメインでアクセスしましょう。

image.png

CloudFront設定

オリジンドメインとして先ほど作成したALBを登録して作成しました。

image.png

セキュリティ対策を強化したい場合は、CloudFrontからAWS WAF設定を行うことができます。

プロトコルをHTTPSのみ(デフォルト設定)にした状態でアクセスすると以下エラーが発生します。

image.png

ディストリビューションドメインでアクセスしましょう。

image.png

無事、HTTPS認証でアクセスが可能になりました。

Cognito設定

Cognito設定に関しては、過去ブログの内容として同じですので割愛いたします。

過去ブログ

所感

CloudFrontから自動生成されるドメインでアクセスできればいいといった条件であれば、Route53を利用してドメイン発行せずともHTTPS接続は実現できます。ただし、商用利用することを考えたらドメイン名を設定するのは必須化と思います。あくまで最低限の実装のみですので、本実装から拡張させることは可能だと思います。

最後まで、記事をお読みいただきありがとうございました

9
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?