VPC ブロックパブリックアクセスでインターネットからの受信だけを止める方法 ── イングレスのみモードと除外

目次

概要

インターネットゲートウェイ(IGW)でインターネットにつながっている VPC で、「外へ出ていく通信は残したまま、インターネットから入ってくる通信だけを止めたい」という場面があります。セキュリティグループやネットワーク ACL をリソースやサブネットごとに書き換える方法もありますが、VPC やサブネットが増えるほど漏れが出やすく、運用の手間も増えます。

VPC ブロックパブリックアクセス(VPC BPA) は、リージョン内のアカウントの VPC へのインターネットからのアクセスを、ほかの設定より優先して一括で止める機能です。モードを イングレスのみ にすると、インターネットからの受信をすべて止めつつ、NAT ゲートウェイや Egress-Only インターネットゲートウェイを通る送信は許可します。止めたくない VPC やサブネットは 除外 として個別に外せます。

この記事では、VPC BPA の 2 つのモードと除外の仕組み、ほかの方法(セキュリティグループ・ネットワーク ACL・Egress-Only インターネットゲートウェイ)との違いを整理します。実践では、パブリックサブネットの Web サーバーにブラウザからアクセスできることを確かめてから BPA をイングレスのみでオンにし、受信が止まること、Egress-Only インターネットゲートウェイ経由の送信は通ること、除外でパブリックサブネットだけを元に戻せることを確認します。

イングレスのみモード: IGW 経由は止まり、Egress-Only IGW 経由の送信は通る
イングレスのみモード: IGW 経由は止まり、Egress-Only IGW 経由の送信は通る
クラウドおさる

猿山の門を一つずつ見張るのではなく、山の入口ごと「外からは入れぬ」と札を掛けるのが BPA でござるな。中の猿が外へ買い出しに行けるかどうかも、あわせて確かめるでござるよ。

この記事のメリット

  • VPC BPA の双方向モードとイングレスのみモードで、何が止まり何が通るかを説明できるようになる
  • 除外(双方向 / エグレスのみ)の使いどころが分かる
  • セキュリティグループ・ネットワーク ACL・Egress-Only インターネットゲートウェイとの違いを整理し、インバウンドを一括で止める手段を選べるようになる
  • BPA をオンにしたときの影響を、実際の通信で確かめられるようになる

執筆者とキャラクター紹介

執筆者:土肥(とひ)

株式会社ジェニュインの代表であり元エンジニア。これまでオンプレミスと AWS 環境のインフラ業務を担当。AWS 認定資格の学習で得た知識を、ハンズオンとともに解説するのが得意。直近では新人の教育も行っており、これから技術を学ぶ方が納得できる解説を心がけています。基礎編・Cloud Practitioner の記事では、解説役としても登場します。

土肥

クラウドおさる

クラウドおさる

はじめましてでござる。弊猿はクラウドおさる。IT インフラが異常に発達した猿山から、雲に乗って地上の AWS を学びに降りてきたのでござる。

クラウドおさる

基礎編や Cloud Practitioner の記事では、とひさんに素朴な疑問をぶつける役でござるな。Security - Specialty などの記事では、要所でワンポイントや注意点をひとこと添えるでござる。

クラウドおさる

猿山にもデータセンターや監視当番があって、地上で起きることはだいたい猿山にも同じ仕組みがあるのでござる。例え話がつい猿山に寄るのは、弊猿の癖でござる。

技術解説

VPC ブロックパブリックアクセスとは

VPC BPA は、AWS アカウントの VPC リソースへのパブリックなインターネットアクセスを一元的に止めるための機能です。設定は リージョン単位でアカウント全体 に効き、そのリージョンのすべての VPC とサブネットが対象になります(除外したものを除く)。ルートテーブルやセキュリティグループに何が書いてあっても、BPA のブロックが優先されます。

BPA には 2 つのモードがあります。

モード止まるもの通るもの
双方向IGW と Egress-Only インターネットゲートウェイを通るすべての通信(受信も送信も)除外した VPC・サブネットの通信
イングレスのみVPC へのインターネットからの通信(IGW 経由の受信)NAT ゲートウェイと Egress-Only インターネットゲートウェイを通る通信(どちらも送信の確立しか許さないため)

イングレスのみモードで通るのは「NAT ゲートウェイと Egress-Only インターネットゲートウェイを通る通信」です。パブリック IP を持ったインスタンスが IGW から直接インターネットへ出ていく通信は、イングレスのみモードでも止まります。外へ出る通信を残したいリソースは、NAT ゲートウェイ(IPv4)か Egress-Only インターネットゲートウェイ(IPv6)を経由させる必要があります。

クラウドおさる

「イングレスのみ」は「パブリックサブネットの猿は外へ出放題」という意味ではないのでござる。IGW から直接出る道は閉じられ、外出は NAT や Egress-Only の通用口を通る者だけでござるぞ。

BPA の影響を受けるのは、IGW を使うインターネット向けの経路です。インターネット向けの ALB・NLB、NAT ゲートウェイ(インターネット接続に IGW を使うため)なども対象になります。一方で、Site-to-Site VPN、Client VPN、トランジットゲートウェイなどのプライベート接続の通信は BPA の影響を受けません。

除外

止めたくない VPC やサブネットは、除外 を作って BPA の対象から外せます。除外は 1 つの VPC または 1 つのサブネットに対して作り、VPC を除外するとその中のすべてのサブネットに効きます。

除外のモード動き
双方向除外した VPC・サブネットとインターネットの間の通信をすべて許可する
エグレスのみ除外した VPC・サブネットからの送信を許可し、受信は止める。アカウントの BPA が双方向モードのときにだけ意味を持つ

除外はアカウントで BPA をオンにする前から作っておけます。オンにした瞬間に止まっては困るワークロードは、先に除外しておくと中断を避けられます。除外はアカウントあたり 50 個まで作成できます(引き上げの申請が可能)。

BPA のモードと除外で、どの通信が止まるか
BPA のモードと除外で、どの通信が止まるか

ほかの方法との違い

「インターネットからの受信だけを止めたい」ときに思いつく方法を並べると、次のようになります。

方法インバウンドを一括で止められるか
VPC BPA(イングレスのみ)止められる。リージョン内のすべての VPC に、ほかの設定より優先して効く。送信は NAT ゲートウェイ / Egress-Only インターネットゲートウェイ経由で残る
デフォルトのセキュリティグループのルールを消す止まらない。効くのはそのセキュリティグループを関連付けたリソースだけで、別のセキュリティグループを使うリソースには関係しない
セキュリティグループに拒否ルールを書く書けない。セキュリティグループに指定できるのは許可ルールだけ
ネットワーク ACL で受信を拒否するサブネットごとに設定が要る。ステートレスなので、送信の戻りの通信まで考えてルールを書く必要がある
Egress-Only インターネットゲートウェイに切り替えるIPv6 専用。IPv4 の通信には使えず、ルートテーブルの変更も要る

BPA はアカウント全体に効く強い設定です。本番のアカウントでオンにする前に、Network Access Analyzer の「Assess impact of VPC Block Public Access」のスコープで、IGW を通る経路を持つリソースを洗い出しておくことが推奨されています。オンにした後は、VPC フローログのカスタム形式に reject-reason フィールドを入れると、BPA で拒否された通信に BPA と記録されます。Reachability Analyzer でも、BPA が原因で到達できない経路を確認できます。

クラウドおさる

セキュリティグループは「誰を通すか」を書く許可の札、BPA は山全体の門番でござる。一つずつ札を書き換えるより、門番に「外からは入れるな」と伝えるほうが、漏れなく早いのでござるな。

新卒・未経験の方へ
クラウドおさる

AWS を仕事にしたい方へ ── 新卒・未経験から

この記事を書いているのは、AWS の設計・構築を仕事にしている現役エンジニアです。運営元の株式会社ジェニュインでは、新卒・未経験の方も募集しています。異業種や文系からインフラエンジニアになり活躍しているメンバーもいます。

  • ✓システム開発・WEB エンジニア / インフラ構築などの職種で、未経験から応募できます
  • ✓未経験から入社した社員の声を含む社員アンケートを掲載
  • ✓応募フォームから 1 分で応募できます

実践

ハンズオンガイド8 ステップ画面 7 枚

コンソールの横に開いて、チェックしながら進めましょう。

ガイドを開く

別タブで開きます。チェックはこのブラウザに保存されます。

パブリックサブネットに Web サーバー soa-bpa-web、プライベートサブネットにアプリサーバー soa-bpa-app がある VPC で、BPA をイングレスのみモードでオンにします。soa-bpa-web への受信が止まり、soa-bpa-web から IGW 経由で外へ出る通信も止まる一方、soa-bpa-app から Egress-Only インターネットゲートウェイ経由で外へ出る IPv6 の通信は通ることを確かめます。最後に、パブリックサブネットだけを除外して、Web サーバーへのアクセスを元に戻します。

前提条件

  • リージョン: ap-northeast-3(大阪)
  • VPC BPA はリージョン内のアカウント全体に効きます。オンにすると、そのリージョンのほかの VPC の通信も止まります。この実践は、ほかのワークロードが動いていないリージョンで行ってください(本記事では大阪を使います)
  • 以下のリソースが作成済みであること

まだ用意していない場合は、「作り方の参考」の記事の手順で作れます。リソース名は、この記事の名前に読み替えてください。

リソース種別リソース名内容作り方の参考
VPCsoa-bpa-vpc10.0.0.0/16。IPv6 CIDR ブロック(Amazon 提供)を関連付け済みAmazon VPC で仮想ネットワークを構築しサブネットを設定する
サブネットsoa-bpa-public10.0.1.0/24。ルートテーブルで 0.0.0.0/0 を soa-bpa-igw に向ける同上
サブネットsoa-bpa-private10.0.2.0/24 と IPv6 の /64。ルートテーブルで ::/0 を soa-bpa-eigw に向ける同上
インターネットゲートウェイsoa-bpa-igwsoa-bpa-vpc にアタッチ同上
Egress-Only インターネットゲートウェイsoa-bpa-eigwsoa-bpa-vpc 用─
EC2 インスタンスsoa-bpa-websoa-bpa-public に配置。パブリック IPv4 アドレスあり。ポート 80 で簡単な Web ページを返す。セキュリティグループで HTTP(80)をインターネットから許可Amazon EC2 でインスタンスを起動しSSH接続する
EC2 インスタンスsoa-bpa-appsoa-bpa-private に配置。パブリック IPv4 アドレスなし、IPv6 アドレスあり同上
EC2 Instance Connect エンドポイントsoa-bpa-eicesoa-bpa-private に配置。2 台のインスタンスにプライベート IP で SSH 接続するため─

※ soa-bpa-private には NAT ゲートウェイを置かず、IPv6 の送信だけを Egress-Only インターネットゲートウェイで外へ出します。

作成・変更するリソース一覧

リソース種別リソース名用途
VPC BPA の設定(大阪リージョン)─イングレスのみモードでオンにする
VPC BPA の除外(soa-bpa-public を対象)パブリックサブネットだけを双方向で除外する

手順 1: BPA をオンにする前の状態を確かめる

AWS マネジメントコンソールにログインし、右上のリージョンを アジアパシフィック (大阪) ap-northeast-3 に切り替えます。上部の検索バーに EC2 と入力し、「EC2」を選択します。

左側ナビゲーションの「インスタンス」→「インスタンス」を選択し、soa-bpa-web の「パブリック IPv4 アドレス」を控えます。

ブラウザの新しいタブで http://<soa-bpa-web のパブリック IPv4 アドレス> を開きます。soa-bpa-web と書かれたページが表示され、インターネットから Web サーバーに届いていることが分かります。

ブラウザで soa-bpa-web のパブリック IP を開き、ページが表示された状態
ブラウザで soa-bpa-web のパブリック IP を開き、ページが表示された状態

手順 2: BPA をイングレスのみモードでオンにする

上部の検索バーに VPC と入力し、「VPC」を選択します。左側ナビゲーションの「設定」を選択します。「VPC 暗号化コントロール」「パブリックアクセスをブロック」などのタブが並ぶので、「パブリックアクセスをブロック」タブを開きます。

「パブリックアクセス設定を編集」をクリックし、以下を設定します。

  • 「[パブリックアクセスをブロック]をオンにする」にチェック
  • ブロックの方向: 「Ingress-only」(コンソールでは英語のまま表示されます。イングレスのみモードのことです)
パブリックアクセス設定の編集画面([パブリックアクセスをブロック]をオン・Ingress-only を選択)
パブリックアクセス設定の編集画面([パブリックアクセスをブロック]をオン・Ingress-only を選択)

「変更を保存」をクリックします。設定の反映には 2 分ほどかかります。画面を更新して、ステータスが「オン」、方向が「Ingress-only」になったことを確認します。

パブリックアクセスをブロックタブで、ステータスがオン・Ingress-only になった状態
パブリックアクセスをブロックタブで、ステータスがオン・Ingress-only になった状態

手順 3: インターネットからの受信が止まったことを確かめる

手順 1 で開いたブラウザのタブを再読み込みします。今度はページが表示されず、しばらく待つとタイムアウトします。soa-bpa-web のセキュリティグループもルートテーブルも変えていませんが、BPA がそれより優先してインターネットからの受信を止めています。

手順 4: Egress-Only インターネットゲートウェイ経由の送信が通ることを確かめる

EC2 コンソールの「インスタンス」で soa-bpa-app を選択し、「接続」をクリックします。接続方法のタイルから「EC2 Instance Connect エンドポイント」(プライベートサブネットアクセス)を選び、エンドポイントに soa-bpa-eice が選ばれていることを確認して「接続」をクリックします。

同じタブがブラウザのターミナルに切り替わったら、次のコマンドで IPv6 のインターネット上のサイトへ ping を送ります。

ping -6 -c 3 www.amazon.com

応答が 3 回返ってきます。soa-bpa-app からの送信は Egress-Only インターネットゲートウェイを通るため、イングレスのみモードでは止まりません。

soa-bpa-app のターミナルで ping -6 の応答が返ってきた画面
soa-bpa-app のターミナルで ping -6 の応答が返ってきた画面

手順 5: IGW 経由の送信は止まることを確かめる

同じ手順で soa-bpa-web に EC2 Instance Connect エンドポイント経由で接続し、次のコマンドを実行します。

ping -c 3 -W 2 www.amazon.com

-W 2 は応答を待つ秒数です。付けなくても結果は同じですが、終わるまでに時間がかかります。

応答は返らず、3 packets transmitted, 0 received のように表示されます。soa-bpa-web はパブリックサブネットにあり、送信は IGW を直接通ります。イングレスのみモードで許可されるのは NAT ゲートウェイと Egress-Only インターネットゲートウェイを通る通信だけなので、IGW から直接出る送信も止まります。

soa-bpa-web のターミナルで ping の応答が返らない画面
soa-bpa-web のターミナルで ping の応答が返らない画面
クラウドおさる

手順 4 と 5 の違いは、通用口(Egress-Only)を通るか、正門(IGW)を直接通るかだけでござる。同じ VPC でも、経路しだいで外へ出られるかどうかが変わるのでござるな。

手順 6: パブリックサブネットだけを除外する

VPC コンソールの「設定」→「パブリックアクセスをブロック」タブに戻ります。「除外」の「除外を作成」をクリックし、以下を設定します。

  • 許可の方向: 「双方向」(既定で選ばれています)
  • 「利用可能なリソース」の表: VPC とサブネットが並ぶので、soa-bpa-public のチェックボックスを選択

「名前(オプション)」は空欄のままで構いません。

除外の作成画面(双方向・サブネット soa-bpa-public を選択)
除外の作成画面(双方向・サブネット soa-bpa-public を選択)

「除外を作成」をクリックします。除外の一覧で、作成した除外の「除外の状態」が「アクティブ」になるまで待ちます。「関連付けられたリソース」列には soa-bpa-public のサブネット ID が表示されます。

除外の一覧で soa-bpa-public の除外がアクティブになった状態
除外の一覧で soa-bpa-public の除外がアクティブになった状態

ブラウザで http://<soa-bpa-web のパブリック IPv4 アドレス> をもう一度開くと、ページが表示されるようになります。アカウントの BPA はオンのまま、除外したサブネットだけがインターネットとやり取りできる状態です。

まとめ

やりたいこと使う設定
リージョンのすべての VPC で、インターネットからの受信を一括で止め、送信は残すBPA をイングレスのみモードでオン(送信は NAT ゲートウェイ / Egress-Only インターネットゲートウェイ経由)
受信も送信も、インターネットとの通信をすべて止めるBPA を双方向モードでオン
一部の VPC・サブネットだけはインターネットとやり取りさせる除外(双方向)
双方向モードのまま、一部の VPC・サブネットだけ送信を許す除外(エグレスのみ)
  • VPC BPA はリージョン単位でアカウント全体に効き、ルートテーブルやセキュリティグループより優先される
  • イングレスのみモードで通る送信は NAT ゲートウェイと Egress-Only インターネットゲートウェイ経由だけ。IGW から直接出る送信は止まる
  • セキュリティグループには拒否ルールが書けず、デフォルトのセキュリティグループを変えても効くのは関連付けたリソースだけ
  • Egress-Only インターネットゲートウェイは IPv6 専用で、IPv4 の受信を止める手段にはならない
  • オンにする前は Network Access Analyzer で影響を確認し、オンにした後は VPC フローログの reject-reason や Reachability Analyzer で確かめる
クラウドおさる

「運用の手間を増やさずに、インターネットからの受信だけをまとめて止める」と聞いたら、門番の BPA のイングレスのみでござる。セキュリティグループや Egress-Only の通用口と取り違えぬよう、何が一括で効くのかを押さえておくでござるよ。

参照先

キャリア相談
クラウドおさる

独学の先に、AWS の仕事がある ── ジュニアおさるのキャリア相談

CLF には受かったけれど、次に何をすればいいのか分からない。独学で AWS を学ぶジュニアおさるの相談に、株式会社ジェニュイン代表の土肥が答えています。

  • ✓資格はゴールか、CLF の次に何から手を付けるか
  • ✓EC2 の次に作ってみる構成と、IaC・コスト管理
  • ✓実務経験ゼロでも、面接で話せる「これまで」の作り方
新卒・未経験の方へ
クラウドおさる

AWS を仕事にしたい方へ ── 新卒・未経験から

この記事を書いているのは、AWS の設計・構築を仕事にしている現役エンジニアです。運営元の株式会社ジェニュインでは、新卒・未経験の方も募集しています。異業種や文系からインフラエンジニアになり活躍しているメンバーもいます。

  • ✓システム開発・WEB エンジニア / インフラ構築などの職種で、未経験から応募できます
  • ✓未経験から入社した社員の声を含む社員アンケートを掲載
  • ✓応募フォームから 1 分で応募できます

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

株式会社ジェニュイン(https://genuine-pt.jp)の代表取締役.

2018年〜インフラエンジニアとしてキャリアをスタートし、オンプレミスのネットワーク・サーバ環境で3年半、クラウド環境で4年半の8年間エンジニアとして従事。
2021年に佐藤氏の創業した株式会社Luxyを引き継ぎ、代表に就任。
その後アガルートグループ内の株式会社ジェニュインと合併。
合併後同社代表に就任。

目次