Amazon VPC(Virtual Private Cloud)
Overview
AWS上にプライベートネットワーク空間を提供するサービス。
オンプレミスでプライベートネットワークを構築する場合は、データセンター内にスイッチやルーターなどのネットワーク機器を用意し、LANケーブルでサーバーやストレージなどを接続するといった作業が必要になる。
VPCを利用すると、ハードウェアや配線を意識せず簡単な操作で迅速にプライベートネットワークを構築できるメリットがある。
また、VPCはオンプレミス環境との接続も容易。
物理的な専用線で接続する Direct Connect
や仮想ネットワークで接続する VPN(AWS Virtual Private Network)
が利用できる。
利用用途
VPCは、主にプライベートなリソース(例:データベースサーバーやバックエンドアプリケーション)を保護し、インターネットから隔離するために使用される。
フロントエンドは一般的に公開されるコンポーネントであり、ユーザーから直接アクセス可能な部分。
そのためVPC内にフロントエンドを配置する必要はほとんどない。
一般的なアーキテクチャでは、フロントエンド(Next.jsなどのLambda関数を含む)はパブリックなインターネットに接続される場所へ配置される。
一般的に、フロントエンドはクライアントのブラウザから直接アクセスされ、ユーザーに対してウェブサイトやアプリケーションのコンテンツを提供する。
一方、バックエンドのリソースやデータベースなどは、セキュリティ上の理由からVPC内に配置することが一般的。
VPC内のリソースはインターネットから直接アクセスできないため、より高いセキュリティレベルでアクセス制御が可能となる。
ただし、特定の要件やセキュリティ上の懸念がある場合は、フロントエンドをVPC内に配置することも考えられる。
一般的なケースではフロントエンドはVPC外に配置することが多い。
適切なアーキテクチャを選択するためには、具体的な要件やセキュリティポリシーを考慮し、適切な設計をすることが重要。
VPCにフロントエンドは配置するべきなのか
一般的に、フロントエンド(プレゼンテーション層)はパブリックなインターネットに配置され、ユーザーから直接アクセスできるようになっている。
一方、バックエンド(アプリケーション層)とデータベース(データ層)はセキュリティ上の理由からVPC内に配置されることがよくある。
つまり、三層アーキテクチャを採用している場合でも、フロントエンドはVPC外に配置されることが多い。
フロントエンドはクライアントから直接アクセスされる部分であり、インターネットからのアクセスを受け付ける必要があるため。
一方、バックエンドとデータベースは、セキュリティを高めるためにVPC内へ配置されることが一般的。
IPアドレス
IPアドレスは、パソコンやスマートフォン、タブレットなどの物理機器に割り当てられるインターネット上の住所を表すもの。
VPCは、VPC内で利用できるIPアドレスを管理します。 VPCの管理するIPアドレス範囲を決定するには、CIDR(サイダー)ブロックと呼ばれる表記を用います。CIDRブロックは、プレフィックス表記とも呼ばれ、「/(スラッシュ)」の後ろにプレフィックス長(IPアドレスを0と1だけの2進数で表記する際に、先頭からいくつ1を置くか)の数字で表記されます。 VPCでは、CIDRブ ロックのサイズは16ビットから28ビットまでの範囲で作成できます。(例:10.0.0.0/16)現在一般的に利用されているIPv4アドレスでは利用できるIPアドレスの数に限りがありますので、需要に応じて適切なサイジングをしましょう。
0.0.0.0/0とは
0.0.0.0/0
はCIDR表記法を用いてIPアドレス範囲を示すもので、インターネットプロトコル(IP)におけるすべての有効なアドレスを表す。
具体的には、IPv4アドレス空間内のすべてのアドレスを含みます。
ここで、0.0.0.0
は起点となるIPアドレスを示し、/0
はサブネットマスクを示します。サブネットマスクの /0
は、サブネットに関連付けられているビット数を示しています。/0
は0ビットをサブネットに関連付けることを示しており、これによりすべてのIPアドレスがこの範囲へ該当になる。
AWSや他のネットワーク環境でのルートテーブル設定において、0.0.0.0/0
のルートを設定することで以下のような効果を持ちます:
-
すべての外部トラフィックのルーティング: このルートを使用して、ネットワーク外部へのトラフィックを特定のターゲット(たとえばインターネットゲートウェイやNATゲートウェイ)にルーティングすることが可能。
-
デフォルトルート: 通常、
0.0.0.0/0
ルートはデフォルトルートとして使用され、特定のルートが設定されていな いすべてのIPアドレス範囲へのトラフィックをハンドリングする。
VPCのCIDR (Classless Inter-Domain Routing) ブロックは、一般的に 10.0.0.0/16
がよく使用される理由
- プライベートなIPアドレス範囲
CIDRブロック
10.0.0.0/8
はプライベートなIPアドレス範囲に属している。 これは、インターネット上の他のデバイスとの衝突を避けるために、プライベートネットワーク内でのみ使用することを意味する。 - 大規模なIPアドレス範囲
/16
サブネットは65,536
のIPアドレスを含む広範なアドレススペースを提供する。 これにより、VPC内のリソースに対して十分なIPアドレスを割り当てることができる。 - AWSの推奨設定
Amazon Web Services (AWS) は、デフォルトで新しいVPCを作成する際に、CIDRブロック
10.0.0.0/16
を使用する。 これにより、多くのユーザーが同じCIDRブロックを利用することになり、VPC間でのIPアドレスの競合を防ぐ。 - CIDRの慣例
CIDRブロック
10.0.0.0/16
は、IPv4アドレスの範囲内で一般的に使用される慣例的な選択。 他のプライベートなIPアドレス範囲(たとえば、172.16.0.0/12や192.168.0.0/16)も利用されますが、10.0.0.0/16がもっとも広範で一般的。
ただし、必ずしも 10.0.0.0/16
を使用する必要はありません。VPCのサイズや要件に応じて適切なCIDRブロックを選択することが重要。
複数のVPCを設定する場合は、異なるCIDRブロックを選択してIPアドレスの競合を回避する必要があります。
サブネット
サブネットはネットワークレベルでのセグメンテーションを提供する。
VPCで定めたネットワーク範囲を分割したものを指す。
VPCを建物に例えるとサブネットは部屋に当たります。サブネットは簡単な操作で追加や削除が可能です。
VPCがインターネットへ接続するためには
VPC内のAWSリソースがインターネットに接続するためには、Elastic IPアドレスまたはパブリックIPアドレスが必要。
インターネット接続用のIPアドレスを持つリソースは専用のサブネットに配置し、インターネットと接続しないリソースを区別することがベストプラクティスとなる。