Amazon Web Services ブログ

Amazon VPC Block Public Access による VPC セキュリティの強化

当初、お客様に必要な Amazon Virtual Private Cloud (Amazon VPC) は1つだけだと考えていましたが、多くのことを学んでおり、今日、AWS Well-Architected Frameworkでは、単一の VPC を持つ単一のアカウントをアンチパターンとして記述しています。AWS クラウド内のアカウントとネットワークパスの数が増加するにつれ、お客様やパートナーの皆様から、大規模なクラウド環境を理解し、セキュリティを確保するために役立つシンプルなツールが欲しいという要望がありました。

AWSは、お客様が発見的統制や予防的コントロール、プロアクティブコントロール、およびレスポンシブコントロールの実装を可能にするサービスや機能を提供しています。例えば、自動推論と証明可能セキュリティへの投資により、パブリックに公開された Amazon Simple Storage Service (Amazon S3) バケットを検出し、単純なミスや誤解から生じた予期せぬインターネットアクセスを特定することが可能となりました。大規模な予防的コントロールのために、Amazon S3 ブロックパブリックアクセスのような機能を提供し、S3 オブジェクトがプライベートであることを簡単に保証できるようにしています。

Amazon VPC に対する Block Public Access の実装

2024年11月19日に、インターネットアクセス制御を簡素化する強力な新機能を発表できることを嬉しく思います。Amazon VPC Block Public Access は、AWS が提供するインターネット経路を通じて入ってくる (インバウンド) および出ていく (アウトバウンド) VPC トラフィックを確実にブロックするシンプルで宣言的な制御機能です。Amazon VPC Block Public Access により、 VPC 内のリソースに対する AWS 提供のインターネットアクセスを一元的にブロックすることで、お客様は組織のセキュリティとコンプライアンス要件への準拠を確保できます。双方向ブロックに設定すると、全てのインバウンドおよびアウトバウンド VPC トラフィックが拒否されます。Amazon VPC Block Public Access は、Internet Gateway (IGW) や Egress-Only Internet Gateway (EIGW) などの経路を通してインターネットに公開される全てのトラフィックを遮断するように、既存の VPC 設定よりも優先されます。

しかし、VPC からのトラフィックがインターネットにアクセスする必要がある場合はどうでしょうか?

NAT Gateway と EIGW は一般的に、VPC 内のリソースにインバウンドのインターネットトラフィックにさらすことなく、インターネットアクセスを提供するために使用されています。お客様から、Amazon VPC Block Public Access を使用する際に、このような一般的なアーキテクチャをサポートするシンプルで信頼性の高く一貫したアプローチが求められていました。双方向ブロックの代替として、Amazon VPC Block Public Access はこれらのユースケースに対してイングレス方向のみのブロックをサポートしています。イングレス方向のみのブロックでは、インターネットからのインバウンドトラフィックが確実にブロックされ、VPC からのアウトバウンドトラフィックは NAT Gateway と EIGW を通してのみ許可されます。

Amazon VPC Block Public Access は、AWS アカウント内、リージョン単位で有効にでき、近日中に AWS Organizations のサポートも予定されています。

除外によるきめ細やかな制御

VPC 内の一部リソースでは、双方向のインターネットアクセスが必要になる場合があることを理解しています。あるいは、Amazon VPC Block Public Access の双方向ブロックまたはイングレス方向のみのブロックでは拒否されるような、エグレス方向のみのインターネットパスが必要になるといった集中型のトラフィック検査のようなユースケースがあります。この要件に対応するために、Amazon VPC Block Public Access には細かな除外機能が含まれています。管理者は、Amazon VPC Block Public Access の適用から除外する VPC またはサブネットを個別に指定でき、必要に応じてターゲットを絞ったインターネットアクセスを許可できます。

これらの除外を設定することで、全て (双方向) またはアウトバウンド (エグレス方向のみ) のインターネットアクセスを許可できます。イングレス方向のみのブロックと同様に、エグレス方向のみの除外を許可すると、VPC またはサブネットからのエグレストラフィックは NAT Gateway と EIGW を通してのみ許可されます。

Amazon VPC Block Public Access の動作方法と主要機能について、より深く掘り下げていきます。

Amazon VPC Block Public Access を理解する

Amazon VPC Block Public Access を実演するために、シンプルなデュアルスタック (IPv4とIPv6) の VPC アーキテクチャを作成しました。2つのパブリックサブネット、2つのプライベートサブネット、2つの NAT Gateway、EIGW、IGW があります。パブリックサブネットには、IGW へのデフォルトルートがあります。プライベートサブネットには、同じアベイラビリティーゾーン内の NAT Gateway への IPv4 デフォルトルートと、EIGW への IPv6 デフォルトルートがあります。パブリックサブネットには、HTTP を受け付けるインターネット向け Application Load Balancer (ALB) をデプロイしました。ALB はインターネットからのインバウンドトラフィックをプライベートサブネット内の Web サーバーに渡します。

図1. シンプルかつデュアルスタック VPC アーキテクチャ

図1. シンプルかつデュアルスタック VPC アーキテクチャ

Amazon VPC Block Public Access を有効にする前は、ALB を通してインターネットから Web サーバーにアクセスできます。また、Web サーバーにログインしている間、IPv4 用の NAT Gateway とIPv6 用の EIGW を通してインターネットにアクセスでき、AWS ホームページに ping を実行することもできます。

図2. ブラウザウィンドウに “Hello, World!” と表示されている

図3. IPv4およびIPv6 にて成功したアウトバウンドの ping

図3. IPv4およびIPv6 を介して成功したアウトバウンド ping

Amazon VPC Block Public Access を設定して、パブリックサブネットのみとの双方向の全トラフィックを許可したいと思います。しかし、Amazon VPC Block Public Access の有効化後に、Web サイトが利用できなくなることは避けたいです。そのため、Amazon VPC Block Public Access を有効化する前に、これらのサブネットに対する除外設定を行います。

VPC コンソールに移動し、次のことを行います。

  • 設定を選択します。
  • 次に、パブリックアクセスをブロックタブを選択します。

図4. パブリックアクセスをブロックのタブ

図4. パブリックアクセスをブロックのタブ

次に、以下を行います。

  • 除外を作成をクリックし、2つのパブリックサブネットが全てのインターネットトラフィック (双方向通信) を許可するように指定してください。
  • 次に、除外を作成をクリックします。

図5. パブリックサブネットに対して除外を作成

図5. パブリックサブネットに対して除外を作成

数分後、除外が Active になります。

図6. パブリックサブネットに対しての Active な除外

図6. パブリックサブネットに対しての Active な除外

さて、Amazon VPC Block Public Access を有効化する準備ができました。この機能を有効にした際に何が起こるのかを確実に理解しておきたいと思います。Network Access Scope を作成をクリックし、Network Access Analyzer を使用して、現在許可されている AWS 提供のインターネットパスを特定します。2 つの除外条件を使用して、パブリックサブネットをインターネットトラフィックの送信元または宛先としてフィルタリングします。これらのサブネットへのトラフィックは、除外によって許可されていることがわかります。

図7. Network Access Analyzer の結果

図7. Network Access Analyzer の結果

分析によると、Web サーバーでは ALB を介したインターネットトラフィックの受け入れや応答が許可されており、また、NAT Gateway を介してアウトバウンド (エグレス) のインターネットトラフィックを開始することができます。プライベートサブネットには EIGW への IPv6 デフォルトルートもあることや、プライベートサブネットに対して Amazon VPC Block Public Access の除外を行っていないことを思い出してください。その結果、Amazon VPC Block Public Access がWeb サーバーからのエグレス IPv6 トラフィックを拒否すると予想されます。

パブリックアクセスをブロックのタブに戻り、以下を行います。

  • パブリックアクセス設定を編集をクリックします。
  • [パブリックアクセスをブロックする]をオンにするのボックスをチェックし、すべてのインターネットトラフィック (双方向) をブロックする動作を設定します。
  • 変更を保存をクリックします。

図8. 双方向ブロックによる Block Public Access を有効化にする

図8. 双方向ブロックによる Block Public Access を有効化にする

数分後、パブリックアクセス設定のステータスオンと表示されます。

図9. Block Public Access がオン

図9. Block Public Access がオン

確認のため、インターネットから ALB を通して Web サーバーにアクセスできるかどうかを確認します。“Hello, World!” ページが正常に表示されました。Web サーバーに戻ると、Network Access Analyzer の結果で確認したように、NAT Gateway と IGW を介して IPv4 で AWS ホームページに ping を送ることができます。予想通り、IPv6 では AWS ホームページに ping を送ることはできません。

図10. IPv4でのアウトバウンドの ping は成功し、IPv6 でのアウトバウンドの ping は失敗

図10. IPv4でのアウトバウンドの ping は成功し、IPv6 でのアウトバウンドの ping は失敗

プライベートサブネットで有効化されていた VPCフローログ を見ると、IPv6 トラフィックが拒否されているのが分かります。最初の行 (ACCEPT) は、パケットがネットワークインターフェースのセキュリティグループとサブネットのネットワーク ACL によって許可されたことを示しています。しかし、Amazon VPC Block Public Access がトラフィックをブロックしています (REJECT)。VPC フローログでカスタムフォーマットを設定していれば、reject-reason フィールドを含めることができ、トラフィックをブロックした理由が BPA であることが表示されたはずです。

図11. ACCEPT の後に REJECT が続く VPC フローログ

図11. ACCEPT の後に REJECT が続く VPC フローログ

プライベートサブネットからの EIGW を介した IPv6 アウトバウンドトラフィックを有効にするために、新しい除外を追加します。この除外は、EIGW を通過するトラフィックが流れる方向に一致する、エグレス方向のみです。

図12. プライベートサブネットに対する除外を作成します

図12. プライベートサブネットに対する除外を作成します

数分後、除外が Active になります。Web サーバーに戻ると、EIGW を介して IPv6 経由で AWS ホームページに再び ping を送ることができます。

図13. 成功した IPv6 経由のアウトバウンドの ping

図13. 成功した IPv6 経由のアウトバウンドの ping

最後の操作として、すべての除外を削除します。除外がない状態では、この VPC のすべてのインターネットトラフィックがブロックされます。

図14. 除外を削除

図14. 除外を削除

予想通り、ALB にはアクセスできなくなり、Web サーバーからのアウトバウンドトラフィックも開始できなくなりました。

図15. ブラウザウィンドウに “接続がタイムアウトしました” と表示されている

図15. ブラウザウィンドウに “接続がタイムアウトしました” と表示されている

パブリックアクセスをブロックのタブに戻り、パブリックアクセス設定を編集をクリックします。[パブリックアクセスをブロックする]をオンにするのブロックのチェックを外し、変更を保存をクリックします。数分後、パブリックアクセス設定のステータスオフと表示されます。再び ALB にアクセスできるようになり、IPv4 と IPv6 を使用して AWS ホームページに ping を送ることができるようになります。

知っておくべきポイント

  1. Amazon VPC Block Public Access は、イングレス方向のみのブロック、またはエグレス方向のみの除外を許可する場合、ステートフルです。許可された接続の戻りのトラフィックは自動的に許可されます。この動作はセキュリティグループと類似しています。
  2. 有効にすると、Amazon VPC Block Public Access は新規および既存のネットワーク接続に影響します。
  3. Amazon VPC Block Public Accessには、デフォルトで50個の除外までといったクォータがあります。クォータの引き上げは可能です。
  4. イングレス方向のみのブロックが有効になっているか、エグレス方向のみの除外が許可されている場合、NAT Gateway と EIGW のみが VPC から出ることを許可します。
  5. Amazon VPC Block Public Access は、Elastic Load Balancing や AWS Global Accelerator などの他のサービスと統合されています。
  6. AWS Client VPN とAWS Site-to-Site VPN は安全な通信とみなされてるため、Amazon VPC Block Public Access から除外されています。

結論

本稿では、お客様が VPC のインターネットアクセスを管理するための宣言的なコントロールを求めていたことについて議論しました。Amazon VPC Block Public Access を使用することで、お客様はどの VPC やサブネットが Amazon が提供するインターネットにアクセスできるかを管理することができます。これにより、VPC 内のリソースへの AWS 提供のインターネットアクセスを一元的にブロックすることで、組織のセキュリティとコンプライアンス要件への準拠を確保できます。Network Access Analyzer と VPC フローログを活用してトラフィックパターンを理解し、Amazon VPC Block Public Access を有効にすることで、今すぐ始めることができます。詳細については、Amazon VPC Block Public Access のドキュメントをご覧ください。

本稿は、2024年11月19日に Networking & Content Delivery で公開された “Enhancing VPC Security with Amazon VPC Block Public Access” を翻訳したものです。翻訳は Solutions Architect の武松が担当しました。