独自ドメイン以外へのアクセスを制限してみる

当記事は「Next.jsをECS上で動かしてみる」の第12回「CloudFrontでALB(ECS)を配信してみる」になります。

  1. DockerでNext.jsアプリを作成してみる
  2. ECRにリポジトリを作成してみる
  3. ECRにコンテナのイメージをプッシュしてみる
  4. VPCを作成してみる(ECSを動かすため用)
  5. セキュリティグループを作成してみる(ECSを動かすため用)
  6. ECSでNext.jsのアプリを動かしてみる
  7. セキュリティグループを作成してみる(ALBを動かすため用)
  8. ALBを作成してターゲットグループにECSを指定してみる
  9. CloudFrontでALB(ECS)を配信してみる
  10. XServerで取得した独自ドメインをCloudFrontに設定してみる
  11. WAF/ACLを使ってアクセス元をIPアドレスで制限してみる
  12. 独自ドメイン以外へのアクセスを制限してみる

ECSのパブリックIPへのアクセスを止める

ECSのパブリックIPを無効にしていきます。

タスク定義を選択。

リビジョンを選択。

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

下にスクロール。

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

更新」をクリック。

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

ALBのドメイン名へのアクセスを止める

下記で作成したセキュリティグループを開きます。

インバウンドのルールを編集」をクリック。

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

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

タイプは「HTTP」、ソースは「カスタム」で下記で作成したCloudFrontを選択。

最後に「ルールを保存」をクリック。

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

CloudFrontのドメイン名へのアクセスを止める

WAFの「保護パック(ウェブACL)を作成」をクリック。

アプリカテゴリはプルダウンから「コンテンツおよび公開システム」を選択。(正直なんでもOK)

アプリケーションフォーカスは「APIとウェブの両方」を選択。

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

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

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

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

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

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

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

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

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

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

保存」をクリック。

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

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