独自ドメイン以外へのアクセスを制限してみる
当記事は「Next.jsをECS上で動かしてみる」の第12回「CloudFrontでALB(ECS)を配信してみる」になります。
- DockerでNext.jsアプリを作成してみる
- ECRにリポジトリを作成してみる
- ECRにコンテナのイメージをプッシュしてみる
- VPCを作成してみる(ECSを動かすため用)
- セキュリティグループを作成してみる(ECSを動かすため用)
- ECSでNext.jsのアプリを動かしてみる
- セキュリティグループを作成してみる(ALBを動かすため用)
- ALBを作成してターゲットグループにECSを指定してみる
- CloudFrontでALB(ECS)を配信してみる
- XServerで取得した独自ドメインをCloudFrontに設定してみる
- WAF/ACLを使ってアクセス元をIPアドレスで制限してみる
- 独自ドメイン以外へのアクセスを制限してみる
ECSのパブリックIPへのアクセスを止める
ECSのパブリックIPを無効にしていきます。

タスク定義を選択。

リビジョンを選択。

「デプロイ」をクリック→「サービスを更新」をクリック。

下にスクロール。

「ネットワーキング」をクリック→「パブリックIP」のチェックを外す。

「更新」をクリック。


パブリックIPが「-」になっていればOKです。

ALBのドメイン名へのアクセスを止める
下記で作成したセキュリティグループを開きます。
「インバウンドのルールを編集」をクリック。

既存のルールの「削除」をクリック。

新しく「ルールを追加」をクリック。

タイプは「HTTP」、ソースは「カスタム」で下記で作成したCloudFrontを選択。
最後に「ルールを保存」をクリック。


ALBのドメイン名でアクセスすると下記の画面になります。

CloudFrontのドメイン名へのアクセスを止める
WAFの「保護パック(ウェブACL)を作成」をクリック。

アプリカテゴリはプルダウンから「コンテンツおよび公開システム」を選択。(正直なんでもOK)
アプリケーションフォーカスは「APIとウェブの両方」を選択。

「リソースを追加」をクリック→「CloudFrontリソースまたはAmplifyリソースを追加」をクリック。

下記で作成したCloudFrontを選択→「追加」をクリック。

保護するリソースを選択で先ほどのCloudFrontを選択。
初期の保護を選択で一番右の「お客様が構築」を選択。
「カスタムルール」を選択して「次へ」をクリック。

「カスタムルール」を選択して「次へ」をクリック。

アクションはプルダウンから「Allow」を選択。
ルール名はわかりやすいものを入力。
ルールは「ステートメントと一致する」を選択。
検査は「単一ヘッダー」を選択。

ヘッダーフィールド名は「host」を入力。
一致タイプは「文字列に完全に一致」を選択。
一致する文字列は独自ドメインを入力。
「ルールを追加」をクリック。


名前にわかりやすいものを入力→「保護パック(ウェブACL)」を作成をクリック。

「詳細を管理」をクリック。

デフォルトアクションの「設定」をクリック。

デフォルトアクションに「ブロック」を選択→「完了」をクリック。

「保存」をクリック。

CloudFrontのドメイン名でアクセスすると、下記のエラー画面が表示されます。

以上になります。
お読み頂き、ありがとうございました。

