助け合いフォーラム
AWS ソリューションアーキテクト - アソシエイト(SAA-C03)
問題ID : 30394
問題を開く
プライベートサブネット内のEC2インスタンスから、プライベートネットワーク経由でS3のデータへアクセスしたい。
どの機能を利用すればよいか。
どの機能を利用すればよいか。
正解
VPCエンドポイント
解説
VPC内のAWSリソースから、S3やDynamoDBなどインターネットから直接利用できるVPC外のAWSサービスへアクセスは、通常インターネットゲートウェイを経由して通信します。「VPCエンドポイント」は、セキュリティ上の制約でインターネットとの通信が制限されているプライベートサブネット内のAWSリソースから、インターネットゲートウェイを経由せずにVPC外のAWSサービスへアクセス可能にする機能です。
したがって正解は
・VPCエンドポイント
です。
その他の選択肢については、以下のとおりです。
・VPCピアリング
VPC間のルーティングを可能にする機能なので、誤りです。
・NATゲートウェイ
プライベートサブネットからインターネットへの通信を可能にする機能なので、誤りです。
・Transit Gateway
複数のVPCや複数のオンプレミスネットワークを相互に接続するハブ機能を持つサービスなので、誤りです。
したがって正解は
・VPCエンドポイント
です。
その他の選択肢については、以下のとおりです。
・VPCピアリング
VPC間のルーティングを可能にする機能なので、誤りです。
・NATゲートウェイ
プライベートサブネットからインターネットへの通信を可能にする機能なので、誤りです。
・Transit Gateway
複数のVPCや複数のオンプレミスネットワークを相互に接続するハブ機能を持つサービスなので、誤りです。
参考
【Amazon VPC(Virtual Private Cloud)】
Amazon VPC(Virtual Private Cloud)は、AWS上で動作する仮想ネットワーク環境を提供するサービスです。VPCでネットワーク空間を作成し、その中にインスタンスなどのAWSリソースを配置します。
VPCは1つのリージョン内に複数作成できます。そして、1つのVPCはリージョン内にある全てのAZにまたがります。VPCで作成されるネットワーク空間は、各VPCが独立しているプライベートネットワークです。そのため、デフォルトでは他のVPCやインターネットと通信できません。
[VPCのイメージ]

【サブネット】
サブネットとは、VPC内のネットワーク空間を論理的に分割したものです。各サブネットは、1つのAZに属し、1つのAZ内に複数のサブネットを作成できます。
サブネットのうち、インターネットゲートウェイへのルーティング設定がある場合は「パブリックサブネット」、ない場合は「プライベートサブネット」といいます。パブリックサブネットには、インターネットから直接アクセスされるAWSリソースを配置します。一方、プライベートサブネットには、インターネットから直接アクセスされないAWSリソースを配置します。
[サブネットのイメージ]

【CIDR(Classless Inter-Domain Routing)ブロック】
CIDR(Classless Inter-Domain Routing)とは、ネットワークの範囲を指定するIPアドレスの設定方法のことです。CIDRはIPアドレスを「172.16.0.100/24」のように表記します。この「/24」をプレフィックス長と言い、IPアドレスとプレフィックス長によって所属するネットワークが決まります。プレフィックス長が「/24」の場合、IPアドレスを2進数表記にした時に左から24ビット目までの範囲がプレフィックスです。プレフィックスに該当するIPアドレスの部分がネットワークアドレスとなり、このネットワークアドレスの範囲を「CIDRブロック」といいます。

[CIDRブロックのイメージ]

VPCを利用するには最初にVPCを作成し、その後にサブネットを作成します。VPCとサブネットの作成時に、それぞれネットワークアドレスの範囲をCIDRブロックで指定します。
VPCの中にサブネットが存在するので、サブネットのCIDRブロックはVPCのCIDRブロックの範囲内で作成する必要があります。(例:VPCが172.16.0.0/18のCIDRブロックで、サブネットが10.0.0.0/22や172.16.0.0/16のCIDRブロックは作成できない。)

[CIDRブロックの設定例]

VPCとサブネットそれぞれに指定したCIDRブロックによって、VPC内のサブネット数と1つのサブネット当たりに利用できるIPアドレス数が決まります。
VPCでは各サブネットCIDRブロック内で、最初の4つのIPアドレスと最後のIPアドレスの合計5つのIPアドレスが予約されています。予約されたIPアドレスはAWSリソースに割り当てることができないため、利用できないIPアドレス分を考慮してCIDRブロックを指定する必要があります。
CIDRブロックが「172.16.0.0/24」の予約IPアドレス(利用できないIPアドレス)
・172.16.0.0 … ネットワークアドレス
・172.16.0.1 … VPCルーター用
・172.16.0.2 … DNSサーバー用
・172.16.0.3 … 将来の利用のためにAWSで予約
・172.16.0.255… ネットワークブロードキャストアドレス
CIDRブロックが「172.16.0.0/18」のVPCに「172.16.0.0/24」のサブネットを作成した場合、VPC内のサブネット数と1つのサブネット当たりに利用できるIPアドレスは、以下のようになります。
・サブネット数 = 2^(サブネットのプレフィックス長 - VPCのプレフィックス長) = 2^(24-18) = 64
・1サブネット当たりのIPアドレス数 = 2^(32 - サブネットのプレフィックス長)-5 = 2^(32-24)-5 = 251
VPCではCIDRブロックのプレフィックス長を/16から/28の間で指定します。AWSは次のプライベートIPv4アドレス範囲から、CIDRブロックを指定することを推奨しています。
・10.0.0.0 ~ 10.255.255.255
・172.16.0.0 ~ 172.31.255.255
・192.168.0.0 ~ 192.168.255.255
【IPアドレスの種類】
○プライベートIPアドレス
プライベートIPアドレスはVPC内でのみ有効なIPアドレスで、VPC内の他のインスタンスや、VPCと接続しているネットワークと通信するために使用します。VPC内のEC2インスタンスなどのAWSリソースには、パブリックサブネット・プライベートサブネットに関係なく、すべてプライベートIPアドレスが自動で割り当てられます。プライベートIPアドレスは、AWSリソースを停止・起動した後も同一のIPアドレスが利用されます。

○パブリックIPアドレス
パブリックIPアドレスはインターネット上で一意のIPアドレスです。パブリックIPアドレスを割り当てられたAWSリソースは、インターネットなどVPC外のネットワークと通信できるようになります。パブリックIPアドレスは、インスタンスをパブリックサブネットに作成するときに自動で割り当てられます。
Elastic IPアドレス(後述)ではないパブリックIPアドレスは、AWSリソースが停止する時にIPアドレスが解放(AWSに返却)され、AWSリソースが起動する時に新規のIPアドレスが割り当てられます。

○Elastic IPアドレス
Elastic IPアドレスは、インターネットと通信可能な固定のパブリックIPアドレスです。Elastic IPアドレスはAWSアカウントと紐づいており、AWSリソースに手動で割り当てます。割り当てたElastic IPアドレスは、AWSリソースが停止・起動してもIPアドレスが変わりません。

Elastic IPアドレスは割り当てたAWSリソースが終了しても同一のIPアドレスが保有されるので、利用料金が発生し続けます。また、保有しているElastic IPアドレスを使用して、同一のIPアドレスを別のAWSリソースに再び割り当てられます。

【ルートテーブル】
VPC内での通信において、どのネットワークへデータを転送するかを定義する機能です。ルートテーブルに従って、送信先ごとに指定したターゲットへデータを転送することを「ルーティング」といいます。VPC内の各サブネットは、1つのルートテーブルを関連付けることができます。ルートテーブルが関連付けられていないサブネットは、VPC全体に適用される「メインルートテーブル」に従ってルーティングが行われます。
【インターネットゲートウェイ】
VPC内のAWSリソースとインターネットを接続する機能です。インターネットゲートウェイへのルーティングが設定されたサブネットは、パブリックサブネットになります。パブリックサブネットでは、インターネットとサブネット両方からの接続開始要求を通します。インターネットゲートウェイは一つのVPCに一つしか作成できないので、複数のパブリックサブネットで共有して利用します。
[インターネットゲートウェイのイメージ]

[インターネットゲートウェイ向けルートテーブルの例]

【NATゲートウェイ】
プライベートサブネットからインターネットへの通信を可能にするIPv4専用の機能です。NAT(Network Address Translation)とは、IPアドレスを別のIPアドレスに変換する機能のことです。プライベートサブネット内にあるAWSリソースのプライベートIPアドレスを、NATゲートウェイのパブリックIPアドレス(Elastic IPアドレス)に変換し、インターネットへ接続します。
NATゲートウェイを利用するには、Elastic IPアドレスを割り当てたNATゲートウェイをパブリックサブネット内に作成し、プライベートサブネットのルートテーブルにターゲットがNATゲートウェイのルーティングを設定します。
NATゲートウェイはプライベートサブネット内リソースからインターネットへの接続開始要求は通しますが、インターネットからプライベートサブネット内リソースへの接続開始要求は通しません。
[NATゲートウェイのイメージ]

[NATゲートウェイ向けルートテーブルの例]

NATゲートウェイはAWSによってAZ内で冗長化されており、NATゲートウェイの機器障害時やトラフィック増加時でも継続して利用できます。ただし、AZに障害が発生した場合には利用できなくなるため、さらに可用性を高める場合は複数のAZにそれぞれNATゲートウェイを配置する必要があります。
【NATインスタンス】
NATゲートウェイと同じく、プライベートサブネットからインターネットへの通信を可能にするIPv4専用の機能です。NATゲートウェイはマネージドサービスなのに対し、NATインスタンスはEC2インスタンスとしてユーザー自身が構築・管理する必要があります。障害対応やOSパッチの適用、インスタンス監視などをユーザーが担うので、設計・運用の負担が大きくなります。また、処理能力はインスタンスタイプのネットワーク帯域幅やCPU性能に依存するため、トラフィックが増えるとスケールアップや構成変更も必要です。これらの点から、AWSでは可用性・拡張性・運用効率に優れたNATゲートウェイへの移行を推奨しています。
NATインスタンスを利用するには、パブリックサブネットにパブリックIPアドレスまたはElastic IPアドレスを割り当てたNATインスタンスを作成した後、プライベートサブネットのルートテーブルにターゲットがNATインスタンスのルーティングを設定します。
[NATインスタンスのイメージ]

NATインスタンスは、プライベートサブネット内リソースからインターネットへの接続開始要求は通しますが、基本的にインターネットからプライベートサブネット内リソースへの接続開始要求は通しません。ただし、後述する「ポート転送」や「踏み台サーバー」のカスタマイズ設定をすることで、特定の条件下に限りインターネットからプライベートサブネット内リソースへの接続を許可することも可能です。
NATインスタンスはEC2インスタンスをベースとしているので、NATゲートウェイでは利用できないポート転送機能の設定や、VPC外からプライベートサブネット内へ接続する際の踏み台サーバーとして利用できます。ポート転送とは、インターネットからNATインスタンスの特定のポート番号に接続した時、プライベートサブネット内にあるインスタンスの特定のポートへ転送する機能です。踏み台サーバーとは、例えばインターネットからプライベートサブネット内にあるサーバーの保守をしたい場合に、一旦NATインスタンスへSSH接続をした後、NATインスタンスから目的のサーバーへ再度SSH接続をすることで、VPC外からは直接接続できないプライベートサブネット内のサーバーへの接続を可能にするものです。
【Egress-Onlyインターネットゲートウェイ】
NATゲートウェイとインターネットゲートウェイの特徴を併せ持つIPv6専用の機能です。VPCからインターネットへ(Egress)の接続開始要求は通しますが、インターネットからVPCへ(Ingress)の接続開始要求は通しません。
Egress-Onlyインターネットゲートウェイを利用するには、VPCにEgress-Onlyインターネットゲートウェイを作成し、プライベートサブネットのルートテーブルに、送信先が「::/0(デフォルトルート)」、ターゲットが「Egress-OnlyインターネットゲートウェイID」となるルートを追加します。
[Egress-Onlyインターネットゲートウェイ向けルートテーブルの例]

【ENI(Elastic Network Interface)】
AWSリソースのネットワークインターフェイスです。オンプレミス環境におけるNIC(Network Interface Card)と同じ役割を持ち、VPC内のEC2インスタンスやNATゲートウェイなどに割り当てて利用します。
■Elastic Fabric Adapter (EFA)
Elastic Fabric Adapter (EFA)は、AWSが提供する高性能なネットワークインターフェースで、科学研究、工学、機械学習などの高パフォーマンスを要求する計算タスクに最適です。EFAは特定のEC2インスタンスタイプでのみ利用可能で、これらのインスタンスに接続して使用します。
[EFAの設定画面]


【拡張ネットワーキング(Enhanced Networking)】
拡張ネットワーキング(Enhanced Networking)は、Amazon EC2インスタンスのネットワーク性能を向上させる機能です。インスタンス間での高スループット・低レイテンシーを実現できるため、リアルタイム性が求められるアプリケーションに最適です。さらに、追加料金もかかりません。
【VPCフローログ】
VPC内のENIに流れるネットワークトラフィック情報を出力する機能です。ログはAmazon CloudWatch LogsまたはS3へ保存されます。
VPCフローログには、送信元/送信先IPアドレス、送信元/送信先ポート番号、プロトコル番号、通信の許可/拒否の結果などが記録されます。VPCフローログを利用することでVPC内のリソースが受信した不審な通信や、VPC内のリソースから発信された不要な通信の発見に繋がります。
[VPCフローログの中身]

【VPCエンドポイント】
VPC内のAWSリソースから、S3やDynamoDBなどインターネットから直接利用できるVPC外のAWSサービスへアクセスは、通常インターネットゲートウェイを経由して通信します。VPCエンドポイントは、セキュリティ上の制約でインターネットとの通信が制限されているプライベートサブネット内のAWSリソースから、インターネットゲートウェイを経由せずにVPC外のAWSサービスへアクセス可能にする機能です。
VPCエンドポイントにはゲートウェイ型とAWS PrivateLink(インターフェイス型)の2種類があり、それぞれ利用できるAWSサービスが異なります。また、ゲートウェイ型は無料で利用できるのに対し、PrivateLinkは従量課金制です。
■ゲートウェイ型
S3とDynamoDBで利用できます。S3やDynamoDBへ接続したいリソースが配置されているVPCにVPCエンドポイントを割り当て、ルートテーブルにターゲットがVPCエンドポイントのルーティングを設定します。
[VPCエンドポイント(ゲートウェイ型)でS3やDynamoDBにアクセスする時のイメージ]

[VPCエンドポイント(ゲートウェイ型)向けルートテーブルの例]

■AWS PrivateLink(インターフェイス型)
CloudWatch LogsやSecrets Manager(※)などの多数のVPC外AWSサービスで利用できます。接続元リソースがあるサブネットにプライベートIPアドレスを持つENIを作成し、ENIと接続先サービスをリンクしてアクセスします。
(※)CloudWatch Logs:AWSサービスのログを収集し、一元管理するサービス
(※)Secrets Manager:データベースなどにアクセスする際の認証情報を管理するサービス
[PrivateLinkでCloudWatch LogsやSecrets Managerにアクセスする時のイメージ]

○異なるVPCやAWSアカウント内のAWSサービスへのアクセス
PrivateLinkは、異なるVPCやAWSアカウント内のAWSサービスへ、プライベートな一方向アクセスを提供します。接続先のVPC側では、NLBを介してトラフィックが適切なリソースにルーティングされます。特に、VPC間でCIDRブロックが重複している場合や、高いセキュリティが求められる環境において有効です。
[PrivateLinkで異なるアカウント内のAWSサービスへアクセスする時のイメージ]

○サードパーティ製SaaSへのアクセス
PrivateLinkは、AWS上でホストされるSaaSへのアクセスにも利用できます。SaaS側が自社VPCでNLBを用いてエンドポイントを作成・公開し、利用側は自分のVPCにインターフェイス型VPCエンドポイントを作成して当該サービスに接続します。通信はAWSのバックボーン内で完結し、SaaS側の特定ポートのみを公開対象とできるため、インターネット非許可の要件や最小権限の原則を満たしやすく、運用もシンプルです。
[PrivateLinkでサードパーティ製SaaSへアクセスする時のイメージ]

【VPCエンドポイントポリシー】
VPCエンドポイントを作成すると、VPC内のリソースはVPCエンドポイントからVPC外のAWSサービスへアクセスできるようになります。VPCエンドポイントからの接続先を制限するには「VPCエンドポイントポリシー」を使用します。VPCエンドポイントポリシーは、VPCエンドポイントのゲートウェイ型とAWS PrivateLink(インターフェイス型)の両方で利用できます。
VPCエンドポイントポリシーを設定するには、許可/拒否する接続先のAmazonリソース名(ARN)を指定します。
[VPCエンドポイントポリシーの設定画面]
下記の設定では、S3バケットの「A-bucket」への通信を許可しています。

【VPC内のファイアウォール】
VPCにはネットワークアクセスを制御する機能として「セキュリティグループ」「ネットワークACL」「AWS Network Firewall」があります。
■セキュリティグループ
VPC内において、インスタンスなどのリソース単位でネットワークアクセスを制御するファイアウォールです。EC2インスタンスやElastic Load Balancing(ALB・NLB)などの各種リソースに関連付けて適用できます。各リソースに関連付けられたセキュリティグループが、そのリソースの入出力トラフィックを制御します。設定は許可ルールのみ指定し、拒否ルールは指定できません。デフォルトの設定では、すべてのインバウンド通信(外部から内部への通信)を拒否、すべてのアウトバウンド通信(内部から外部への通信)を許可しているので、インスタンスへのインバウンド通信には許可ルールを設定する必要があります。
セキュリティグループは通信の状態を管理する「ステートフル」なファイアウォールです。インバウンドまたはアウトバウンドで許可されている通信に関連する後続の通信(リクエストに対応するレスポンスなど)は、明示的に許可設定をしなくても通信が許可されます。
セキュリティグループでは送信元や宛先にIPアドレスの範囲を指定する他、別のセキュリティグループも指定できます。指定したセキュリティグループに所属するインスタンスからの通信を一括して許可できるので、送信元や宛先のインスタンス台数が変化する場合に便利です。
■ネットワークACL
VPC内において、サブネット単位でネットワークアクセスを制御するファイアウォールです。IPアドレスを元に許可ルールと拒否ルールの両方を設定可能です。ルールはユーザーが付与したルール番号の順番に評価され、ルール間で矛盾がある場合はルール番号が小さい数字のルールが適用されます。デフォルトの設定ではインバウンド通信、アウトバウンド通信ともにすべての通信が許可されています。
ネットワークACLは通信の状態を管理しない「ステートレス」なファイアウォールです。通信の関連を考慮しないので、インバウンド/アウトバウンド両方に許可設定が必要になります。例えば、インバウンドで特定のリクエストの受付を許可していても、アウトバウンドでレスポンスの送信を許可していない場合は正常に通信できません。
[セキュリティグループとネットワークACLの比較表]

[セキュリティグループとネットワークACLのイメージ図]

■AWS Network Firewall
AWS Network Firewallは、VPC向けのファイアウォール機能を提供するマネージドサービスです。侵入防止システム(IPS)やドメイン名によるトラフィックのフィルタリングなど、セキュリティグループやネットワークACLよりも高度な機能を備えています。
Network Firewallは、VPC内のアウトバウンド及びインバウンド両方のトラフィックを検査できます。インターネット上の特定のドメイン名を含むURLへのアクセスのみを許可したり、特定の送信元からのトラフィック以外は全てブロックするなど、きめ細かな通信の制御が可能です。セキュリティグループとネットワークACLがシンプルな機能の無料サービスである一方、Network Firewallは高度な設定が可能な有料サービスです。
Network Firewallは3つのコンポーネントから構成されます。
○ファイアウォール
Network Firewallの本体となるコンポーネントです。ファイアウォールポリシーに基づきネットワークトラフィックの監視及び制御を行います。
VPCのサブネットに紐づけることで、指定したサブネット内にファイアウォールエンドポイントが作成されます。ネットワークトラフィックはこのエンドポイントを通じてファイアウォールとやりとりをするため、ルートテーブルの設定で、このエンドポイントにトラフィックをルーティングする必要があります。
○ファイアウォールポリシー
ルールグループをまとめたものです。ファイアウォールに紐づけることで、実際の動作を定義します。
○ルールグループ
詳細なフィルタリングのルールをまとめたものです。ファイアウォールポリシーに紐づけて使用します。
[プライベートサブネットからインターネットへの通信を制御する場合のイメージ]

プライベートサブネットのルートテーブルでファイアウォールエンドポイントにルーティングし、ファイアウォールサブネットのルートテーブルでNATゲートウェイにルーティングすることで、プライベートサブネットとインターネット間の通信をNetwork Firewallで制御できます。
【VPCの相互接続】
VPCで作成されるネットワーク空間は、各VPCが独立しているプライベートネットワークです。そのため、デフォルトでは他のVPCと通信できません。他のVPCと接続するには「VPCピアリング」または「AWS Transit Gateway」を利用します。
■VPCピアリング
VPC同士を1対1で接続する機能です。同一アカウントのVPC同士や他のAWSアカウントのVPC、異なるリージョンのVPCでも、同一のプライベートネットワーク内に存在しているかのように相互に通信できます。
[VPCピアリングのイメージ]

■AWS Transit Gateway
複数のVPCや複数のオンプレミスネットワークを相互に接続するハブ機能を持つサービスです。VPCピアリングはVPC同士を1対1で接続するサービスなのに対し、Transit Gatewayは複数のVPCを1つのハブで相互に接続できるのでネットワーク経路を簡素化できます。
[VPCピアリングを使用したVPC同士の接続]

[Transit Gatewayを使用したVPC同士の接続]

Transit GatewayはVPC間の他に、AWS Direct ConnectやAWS VPNで接続されたオンプレミスネットワークとも接続できます。AWS Direct ConnectとAWS VPNはともに、オンプレミスなどAWS外のネットワークとAWS内のネットワークをセキュアに接続するサービスです。
【Amazon VPC Lattice】
Amazon VPC Latticeは、複数のVPCやアカウントにまたがるアプリケーション間の通信を簡素化し、一元的に管理するフルマネージドサービスです。HTTP、HTTPS、gRPCなどのアプリケーション層の通信プロトコルをサポートしており、VPC Latticeを介して各アプリケーションを接続できます。さらに、VPC Latticeにはサービスディスカバリー機能が組み込まれており、他のサービスの位置情報(例えば、IPアドレスやポート番号)を動的に検出できます。これにより、マイクロサービスアーキテクチャの複雑なネットワーク構成を効率的に管理できます。
[VPC Latticeを使用した接続の例]

よく似たサービスとして、AWS Transit Gatewayがあります。Transit Gatewayはネットワークレベルでの接続を提供し、複数のVPCやオンプレミスネットワークを一元的に接続するハブとして機能します。一方、VPC Latticeは主にアプリケーション層での通信管理を提供し、アプリケーション間の通信を最適化します。
Amazon VPC(Virtual Private Cloud)は、AWS上で動作する仮想ネットワーク環境を提供するサービスです。VPCでネットワーク空間を作成し、その中にインスタンスなどのAWSリソースを配置します。
VPCは1つのリージョン内に複数作成できます。そして、1つのVPCはリージョン内にある全てのAZにまたがります。VPCで作成されるネットワーク空間は、各VPCが独立しているプライベートネットワークです。そのため、デフォルトでは他のVPCやインターネットと通信できません。
[VPCのイメージ]

【サブネット】
サブネットとは、VPC内のネットワーク空間を論理的に分割したものです。各サブネットは、1つのAZに属し、1つのAZ内に複数のサブネットを作成できます。
サブネットのうち、インターネットゲートウェイへのルーティング設定がある場合は「パブリックサブネット」、ない場合は「プライベートサブネット」といいます。パブリックサブネットには、インターネットから直接アクセスされるAWSリソースを配置します。一方、プライベートサブネットには、インターネットから直接アクセスされないAWSリソースを配置します。
[サブネットのイメージ]

【CIDR(Classless Inter-Domain Routing)ブロック】
CIDR(Classless Inter-Domain Routing)とは、ネットワークの範囲を指定するIPアドレスの設定方法のことです。CIDRはIPアドレスを「172.16.0.100/24」のように表記します。この「/24」をプレフィックス長と言い、IPアドレスとプレフィックス長によって所属するネットワークが決まります。プレフィックス長が「/24」の場合、IPアドレスを2進数表記にした時に左から24ビット目までの範囲がプレフィックスです。プレフィックスに該当するIPアドレスの部分がネットワークアドレスとなり、このネットワークアドレスの範囲を「CIDRブロック」といいます。

[CIDRブロックのイメージ]

VPCを利用するには最初にVPCを作成し、その後にサブネットを作成します。VPCとサブネットの作成時に、それぞれネットワークアドレスの範囲をCIDRブロックで指定します。
VPCの中にサブネットが存在するので、サブネットのCIDRブロックはVPCのCIDRブロックの範囲内で作成する必要があります。(例:VPCが172.16.0.0/18のCIDRブロックで、サブネットが10.0.0.0/22や172.16.0.0/16のCIDRブロックは作成できない。)

[CIDRブロックの設定例]

VPCとサブネットそれぞれに指定したCIDRブロックによって、VPC内のサブネット数と1つのサブネット当たりに利用できるIPアドレス数が決まります。
VPCでは各サブネットCIDRブロック内で、最初の4つのIPアドレスと最後のIPアドレスの合計5つのIPアドレスが予約されています。予約されたIPアドレスはAWSリソースに割り当てることができないため、利用できないIPアドレス分を考慮してCIDRブロックを指定する必要があります。
CIDRブロックが「172.16.0.0/24」の予約IPアドレス(利用できないIPアドレス)
・172.16.0.0 … ネットワークアドレス
・172.16.0.1 … VPCルーター用
・172.16.0.2 … DNSサーバー用
・172.16.0.3 … 将来の利用のためにAWSで予約
・172.16.0.255… ネットワークブロードキャストアドレス
CIDRブロックが「172.16.0.0/18」のVPCに「172.16.0.0/24」のサブネットを作成した場合、VPC内のサブネット数と1つのサブネット当たりに利用できるIPアドレスは、以下のようになります。
・サブネット数 = 2^(サブネットのプレフィックス長 - VPCのプレフィックス長) = 2^(24-18) = 64
・1サブネット当たりのIPアドレス数 = 2^(32 - サブネットのプレフィックス長)-5 = 2^(32-24)-5 = 251
VPCではCIDRブロックのプレフィックス長を/16から/28の間で指定します。AWSは次のプライベートIPv4アドレス範囲から、CIDRブロックを指定することを推奨しています。
・10.0.0.0 ~ 10.255.255.255
・172.16.0.0 ~ 172.31.255.255
・192.168.0.0 ~ 192.168.255.255
【IPアドレスの種類】
○プライベートIPアドレス
プライベートIPアドレスはVPC内でのみ有効なIPアドレスで、VPC内の他のインスタンスや、VPCと接続しているネットワークと通信するために使用します。VPC内のEC2インスタンスなどのAWSリソースには、パブリックサブネット・プライベートサブネットに関係なく、すべてプライベートIPアドレスが自動で割り当てられます。プライベートIPアドレスは、AWSリソースを停止・起動した後も同一のIPアドレスが利用されます。

○パブリックIPアドレス
パブリックIPアドレスはインターネット上で一意のIPアドレスです。パブリックIPアドレスを割り当てられたAWSリソースは、インターネットなどVPC外のネットワークと通信できるようになります。パブリックIPアドレスは、インスタンスをパブリックサブネットに作成するときに自動で割り当てられます。
Elastic IPアドレス(後述)ではないパブリックIPアドレスは、AWSリソースが停止する時にIPアドレスが解放(AWSに返却)され、AWSリソースが起動する時に新規のIPアドレスが割り当てられます。

○Elastic IPアドレス
Elastic IPアドレスは、インターネットと通信可能な固定のパブリックIPアドレスです。Elastic IPアドレスはAWSアカウントと紐づいており、AWSリソースに手動で割り当てます。割り当てたElastic IPアドレスは、AWSリソースが停止・起動してもIPアドレスが変わりません。

Elastic IPアドレスは割り当てたAWSリソースが終了しても同一のIPアドレスが保有されるので、利用料金が発生し続けます。また、保有しているElastic IPアドレスを使用して、同一のIPアドレスを別のAWSリソースに再び割り当てられます。

【ルートテーブル】
VPC内での通信において、どのネットワークへデータを転送するかを定義する機能です。ルートテーブルに従って、送信先ごとに指定したターゲットへデータを転送することを「ルーティング」といいます。VPC内の各サブネットは、1つのルートテーブルを関連付けることができます。ルートテーブルが関連付けられていないサブネットは、VPC全体に適用される「メインルートテーブル」に従ってルーティングが行われます。
【インターネットゲートウェイ】
VPC内のAWSリソースとインターネットを接続する機能です。インターネットゲートウェイへのルーティングが設定されたサブネットは、パブリックサブネットになります。パブリックサブネットでは、インターネットとサブネット両方からの接続開始要求を通します。インターネットゲートウェイは一つのVPCに一つしか作成できないので、複数のパブリックサブネットで共有して利用します。
[インターネットゲートウェイのイメージ]

[インターネットゲートウェイ向けルートテーブルの例]

【NATゲートウェイ】
プライベートサブネットからインターネットへの通信を可能にするIPv4専用の機能です。NAT(Network Address Translation)とは、IPアドレスを別のIPアドレスに変換する機能のことです。プライベートサブネット内にあるAWSリソースのプライベートIPアドレスを、NATゲートウェイのパブリックIPアドレス(Elastic IPアドレス)に変換し、インターネットへ接続します。
NATゲートウェイを利用するには、Elastic IPアドレスを割り当てたNATゲートウェイをパブリックサブネット内に作成し、プライベートサブネットのルートテーブルにターゲットがNATゲートウェイのルーティングを設定します。
NATゲートウェイはプライベートサブネット内リソースからインターネットへの接続開始要求は通しますが、インターネットからプライベートサブネット内リソースへの接続開始要求は通しません。
[NATゲートウェイのイメージ]

[NATゲートウェイ向けルートテーブルの例]

NATゲートウェイはAWSによってAZ内で冗長化されており、NATゲートウェイの機器障害時やトラフィック増加時でも継続して利用できます。ただし、AZに障害が発生した場合には利用できなくなるため、さらに可用性を高める場合は複数のAZにそれぞれNATゲートウェイを配置する必要があります。
【NATインスタンス】
NATゲートウェイと同じく、プライベートサブネットからインターネットへの通信を可能にするIPv4専用の機能です。NATゲートウェイはマネージドサービスなのに対し、NATインスタンスはEC2インスタンスとしてユーザー自身が構築・管理する必要があります。障害対応やOSパッチの適用、インスタンス監視などをユーザーが担うので、設計・運用の負担が大きくなります。また、処理能力はインスタンスタイプのネットワーク帯域幅やCPU性能に依存するため、トラフィックが増えるとスケールアップや構成変更も必要です。これらの点から、AWSでは可用性・拡張性・運用効率に優れたNATゲートウェイへの移行を推奨しています。
NATインスタンスを利用するには、パブリックサブネットにパブリックIPアドレスまたはElastic IPアドレスを割り当てたNATインスタンスを作成した後、プライベートサブネットのルートテーブルにターゲットがNATインスタンスのルーティングを設定します。
[NATインスタンスのイメージ]

NATインスタンスは、プライベートサブネット内リソースからインターネットへの接続開始要求は通しますが、基本的にインターネットからプライベートサブネット内リソースへの接続開始要求は通しません。ただし、後述する「ポート転送」や「踏み台サーバー」のカスタマイズ設定をすることで、特定の条件下に限りインターネットからプライベートサブネット内リソースへの接続を許可することも可能です。
NATインスタンスはEC2インスタンスをベースとしているので、NATゲートウェイでは利用できないポート転送機能の設定や、VPC外からプライベートサブネット内へ接続する際の踏み台サーバーとして利用できます。ポート転送とは、インターネットからNATインスタンスの特定のポート番号に接続した時、プライベートサブネット内にあるインスタンスの特定のポートへ転送する機能です。踏み台サーバーとは、例えばインターネットからプライベートサブネット内にあるサーバーの保守をしたい場合に、一旦NATインスタンスへSSH接続をした後、NATインスタンスから目的のサーバーへ再度SSH接続をすることで、VPC外からは直接接続できないプライベートサブネット内のサーバーへの接続を可能にするものです。
【Egress-Onlyインターネットゲートウェイ】
NATゲートウェイとインターネットゲートウェイの特徴を併せ持つIPv6専用の機能です。VPCからインターネットへ(Egress)の接続開始要求は通しますが、インターネットからVPCへ(Ingress)の接続開始要求は通しません。
Egress-Onlyインターネットゲートウェイを利用するには、VPCにEgress-Onlyインターネットゲートウェイを作成し、プライベートサブネットのルートテーブルに、送信先が「::/0(デフォルトルート)」、ターゲットが「Egress-OnlyインターネットゲートウェイID」となるルートを追加します。
[Egress-Onlyインターネットゲートウェイ向けルートテーブルの例]

【ENI(Elastic Network Interface)】
AWSリソースのネットワークインターフェイスです。オンプレミス環境におけるNIC(Network Interface Card)と同じ役割を持ち、VPC内のEC2インスタンスやNATゲートウェイなどに割り当てて利用します。
■Elastic Fabric Adapter (EFA)
Elastic Fabric Adapter (EFA)は、AWSが提供する高性能なネットワークインターフェースで、科学研究、工学、機械学習などの高パフォーマンスを要求する計算タスクに最適です。EFAは特定のEC2インスタンスタイプでのみ利用可能で、これらのインスタンスに接続して使用します。
[EFAの設定画面]


【拡張ネットワーキング(Enhanced Networking)】
拡張ネットワーキング(Enhanced Networking)は、Amazon EC2インスタンスのネットワーク性能を向上させる機能です。インスタンス間での高スループット・低レイテンシーを実現できるため、リアルタイム性が求められるアプリケーションに最適です。さらに、追加料金もかかりません。
【VPCフローログ】
VPC内のENIに流れるネットワークトラフィック情報を出力する機能です。ログはAmazon CloudWatch LogsまたはS3へ保存されます。
VPCフローログには、送信元/送信先IPアドレス、送信元/送信先ポート番号、プロトコル番号、通信の許可/拒否の結果などが記録されます。VPCフローログを利用することでVPC内のリソースが受信した不審な通信や、VPC内のリソースから発信された不要な通信の発見に繋がります。
[VPCフローログの中身]

【VPCエンドポイント】
VPC内のAWSリソースから、S3やDynamoDBなどインターネットから直接利用できるVPC外のAWSサービスへアクセスは、通常インターネットゲートウェイを経由して通信します。VPCエンドポイントは、セキュリティ上の制約でインターネットとの通信が制限されているプライベートサブネット内のAWSリソースから、インターネットゲートウェイを経由せずにVPC外のAWSサービスへアクセス可能にする機能です。
VPCエンドポイントにはゲートウェイ型とAWS PrivateLink(インターフェイス型)の2種類があり、それぞれ利用できるAWSサービスが異なります。また、ゲートウェイ型は無料で利用できるのに対し、PrivateLinkは従量課金制です。
■ゲートウェイ型
S3とDynamoDBで利用できます。S3やDynamoDBへ接続したいリソースが配置されているVPCにVPCエンドポイントを割り当て、ルートテーブルにターゲットがVPCエンドポイントのルーティングを設定します。
[VPCエンドポイント(ゲートウェイ型)でS3やDynamoDBにアクセスする時のイメージ]

[VPCエンドポイント(ゲートウェイ型)向けルートテーブルの例]

■AWS PrivateLink(インターフェイス型)
CloudWatch LogsやSecrets Manager(※)などの多数のVPC外AWSサービスで利用できます。接続元リソースがあるサブネットにプライベートIPアドレスを持つENIを作成し、ENIと接続先サービスをリンクしてアクセスします。
(※)CloudWatch Logs:AWSサービスのログを収集し、一元管理するサービス
(※)Secrets Manager:データベースなどにアクセスする際の認証情報を管理するサービス
[PrivateLinkでCloudWatch LogsやSecrets Managerにアクセスする時のイメージ]

○異なるVPCやAWSアカウント内のAWSサービスへのアクセス
PrivateLinkは、異なるVPCやAWSアカウント内のAWSサービスへ、プライベートな一方向アクセスを提供します。接続先のVPC側では、NLBを介してトラフィックが適切なリソースにルーティングされます。特に、VPC間でCIDRブロックが重複している場合や、高いセキュリティが求められる環境において有効です。
[PrivateLinkで異なるアカウント内のAWSサービスへアクセスする時のイメージ]

○サードパーティ製SaaSへのアクセス
PrivateLinkは、AWS上でホストされるSaaSへのアクセスにも利用できます。SaaS側が自社VPCでNLBを用いてエンドポイントを作成・公開し、利用側は自分のVPCにインターフェイス型VPCエンドポイントを作成して当該サービスに接続します。通信はAWSのバックボーン内で完結し、SaaS側の特定ポートのみを公開対象とできるため、インターネット非許可の要件や最小権限の原則を満たしやすく、運用もシンプルです。
[PrivateLinkでサードパーティ製SaaSへアクセスする時のイメージ]

【VPCエンドポイントポリシー】
VPCエンドポイントを作成すると、VPC内のリソースはVPCエンドポイントからVPC外のAWSサービスへアクセスできるようになります。VPCエンドポイントからの接続先を制限するには「VPCエンドポイントポリシー」を使用します。VPCエンドポイントポリシーは、VPCエンドポイントのゲートウェイ型とAWS PrivateLink(インターフェイス型)の両方で利用できます。
VPCエンドポイントポリシーを設定するには、許可/拒否する接続先のAmazonリソース名(ARN)を指定します。
[VPCエンドポイントポリシーの設定画面]
下記の設定では、S3バケットの「A-bucket」への通信を許可しています。

【VPC内のファイアウォール】
VPCにはネットワークアクセスを制御する機能として「セキュリティグループ」「ネットワークACL」「AWS Network Firewall」があります。
■セキュリティグループ
VPC内において、インスタンスなどのリソース単位でネットワークアクセスを制御するファイアウォールです。EC2インスタンスやElastic Load Balancing(ALB・NLB)などの各種リソースに関連付けて適用できます。各リソースに関連付けられたセキュリティグループが、そのリソースの入出力トラフィックを制御します。設定は許可ルールのみ指定し、拒否ルールは指定できません。デフォルトの設定では、すべてのインバウンド通信(外部から内部への通信)を拒否、すべてのアウトバウンド通信(内部から外部への通信)を許可しているので、インスタンスへのインバウンド通信には許可ルールを設定する必要があります。
セキュリティグループは通信の状態を管理する「ステートフル」なファイアウォールです。インバウンドまたはアウトバウンドで許可されている通信に関連する後続の通信(リクエストに対応するレスポンスなど)は、明示的に許可設定をしなくても通信が許可されます。
セキュリティグループでは送信元や宛先にIPアドレスの範囲を指定する他、別のセキュリティグループも指定できます。指定したセキュリティグループに所属するインスタンスからの通信を一括して許可できるので、送信元や宛先のインスタンス台数が変化する場合に便利です。
■ネットワークACL
VPC内において、サブネット単位でネットワークアクセスを制御するファイアウォールです。IPアドレスを元に許可ルールと拒否ルールの両方を設定可能です。ルールはユーザーが付与したルール番号の順番に評価され、ルール間で矛盾がある場合はルール番号が小さい数字のルールが適用されます。デフォルトの設定ではインバウンド通信、アウトバウンド通信ともにすべての通信が許可されています。
ネットワークACLは通信の状態を管理しない「ステートレス」なファイアウォールです。通信の関連を考慮しないので、インバウンド/アウトバウンド両方に許可設定が必要になります。例えば、インバウンドで特定のリクエストの受付を許可していても、アウトバウンドでレスポンスの送信を許可していない場合は正常に通信できません。
[セキュリティグループとネットワークACLの比較表]

[セキュリティグループとネットワークACLのイメージ図]

■AWS Network Firewall
AWS Network Firewallは、VPC向けのファイアウォール機能を提供するマネージドサービスです。侵入防止システム(IPS)やドメイン名によるトラフィックのフィルタリングなど、セキュリティグループやネットワークACLよりも高度な機能を備えています。
Network Firewallは、VPC内のアウトバウンド及びインバウンド両方のトラフィックを検査できます。インターネット上の特定のドメイン名を含むURLへのアクセスのみを許可したり、特定の送信元からのトラフィック以外は全てブロックするなど、きめ細かな通信の制御が可能です。セキュリティグループとネットワークACLがシンプルな機能の無料サービスである一方、Network Firewallは高度な設定が可能な有料サービスです。
Network Firewallは3つのコンポーネントから構成されます。
○ファイアウォール
Network Firewallの本体となるコンポーネントです。ファイアウォールポリシーに基づきネットワークトラフィックの監視及び制御を行います。
VPCのサブネットに紐づけることで、指定したサブネット内にファイアウォールエンドポイントが作成されます。ネットワークトラフィックはこのエンドポイントを通じてファイアウォールとやりとりをするため、ルートテーブルの設定で、このエンドポイントにトラフィックをルーティングする必要があります。
○ファイアウォールポリシー
ルールグループをまとめたものです。ファイアウォールに紐づけることで、実際の動作を定義します。
○ルールグループ
詳細なフィルタリングのルールをまとめたものです。ファイアウォールポリシーに紐づけて使用します。
[プライベートサブネットからインターネットへの通信を制御する場合のイメージ]

プライベートサブネットのルートテーブルでファイアウォールエンドポイントにルーティングし、ファイアウォールサブネットのルートテーブルでNATゲートウェイにルーティングすることで、プライベートサブネットとインターネット間の通信をNetwork Firewallで制御できます。
【VPCの相互接続】
VPCで作成されるネットワーク空間は、各VPCが独立しているプライベートネットワークです。そのため、デフォルトでは他のVPCと通信できません。他のVPCと接続するには「VPCピアリング」または「AWS Transit Gateway」を利用します。
■VPCピアリング
VPC同士を1対1で接続する機能です。同一アカウントのVPC同士や他のAWSアカウントのVPC、異なるリージョンのVPCでも、同一のプライベートネットワーク内に存在しているかのように相互に通信できます。
[VPCピアリングのイメージ]

■AWS Transit Gateway
複数のVPCや複数のオンプレミスネットワークを相互に接続するハブ機能を持つサービスです。VPCピアリングはVPC同士を1対1で接続するサービスなのに対し、Transit Gatewayは複数のVPCを1つのハブで相互に接続できるのでネットワーク経路を簡素化できます。
[VPCピアリングを使用したVPC同士の接続]

[Transit Gatewayを使用したVPC同士の接続]

Transit GatewayはVPC間の他に、AWS Direct ConnectやAWS VPNで接続されたオンプレミスネットワークとも接続できます。AWS Direct ConnectとAWS VPNはともに、オンプレミスなどAWS外のネットワークとAWS内のネットワークをセキュアに接続するサービスです。
【Amazon VPC Lattice】
Amazon VPC Latticeは、複数のVPCやアカウントにまたがるアプリケーション間の通信を簡素化し、一元的に管理するフルマネージドサービスです。HTTP、HTTPS、gRPCなどのアプリケーション層の通信プロトコルをサポートしており、VPC Latticeを介して各アプリケーションを接続できます。さらに、VPC Latticeにはサービスディスカバリー機能が組み込まれており、他のサービスの位置情報(例えば、IPアドレスやポート番号)を動的に検出できます。これにより、マイクロサービスアーキテクチャの複雑なネットワーク構成を効率的に管理できます。
[VPC Latticeを使用した接続の例]

よく似たサービスとして、AWS Transit Gatewayがあります。Transit Gatewayはネットワークレベルでの接続を提供し、複数のVPCやオンプレミスネットワークを一元的に接続するハブとして機能します。一方、VPC Latticeは主にアプリケーション層での通信管理を提供し、アプリケーション間の通信を最適化します。
解説文の誤り?
R
Rrrr3ika
投稿日 2024/07/08
解説内の
■AWS PrivateLink(インターフェイス型)
CloudWatch LogsやS3など多数のサービスで利用できます。
は正しくは「S3」ではなく「SNS」ではないでしょうか。
スタッフからの返信
この投稿に対して返信しませんか?
s staff_satomi
2024/07/08 16:44
Rrrr3ika様 ご指摘の点を修正いたしました。 ご報告いただきまして、誠にありがとうございます。