AWS VPC とは?初心者でもわかる仮想ネットワークの基本
はじめに
AWSを使ったサービス開発や運用において、 Amazon Virtual Private Cloud (VPC) は避けて通れない概念ではないでしょうか。 VPCを一言でいうと、AWS上に自分だけの仮想ネットワークを作れる機能です。 セキュリティやネットワーク構成を柔軟にカスタマイズできるため、多くの場面で活用できます。 しかし、ネットワークという言葉に苦手意識を持つ方もいるかもしれませんね。 そこで今回は、初心者の方でも理解できるように、AWS VPCの基本的な仕組みや構成要素、実際の導入シーンなどを具体的に説明していきます。
AWS VPCの概要
AWS VPCは、クラウド上に独自のネットワーク空間を持つことができる仕組みです。 オンプレミスのデータセンターのように、IPアドレス空間やサブネットを自由に設計できます。 ネットワークを自分で制御できるため、安全な通信や細かいアクセス制限が可能です。 AWSの各サービスを活用する際、このVPC上にEC2などのリソースを配置していくのが一般的でしょう。 実際にVPCを使うときは、プライベートサブネットやパブリックサブネットを作成し、ルートテーブルやゲートウェイを設定していきます。
VPCの基本構成要素
VPCを運用するには、複数のコンポーネントを正しく理解することが大切です。 例えば、サブネットはVPC内で分割されたネットワーク範囲を指し、用途やセキュリティレベルに応じてパブリック・プライベートで分けることが多いです。 ルートテーブルはサブネットごとに作成し、どの経路を使って通信を行うかを指定します。 また、外部インターネットとやり取りをするためには、 インターネットゲートウェイ (IGW) をVPCにアタッチします。 これらを連携させることで、内向きと外向きの通信経路を制御できるようになります。
サブネットの役割
サブネットは、VPCのIPアドレス空間をさらに細分化した区画です。 パブリックサブネットを通じてインターネットと通信し、プライベートサブネットで外部から隔離された環境を作ることがよくあります。 例えば、Webアプリケーションサーバーをパブリックサブネットに置き、データベースサーバーをプライベートサブネットに置く構成も一般的です。 そうすることで、データベースへの外部からの直接アクセスを防ぎ、セキュリティを高めることができます。 AWSでは柔軟にサブネットを増やせるので、用途やセキュリティレベルによって最適なネットワークを組むと良いでしょう。
ルートテーブルとゲートウェイ
サブネットの通信経路を決めるのがルートテーブルです。 このルートテーブルには「宛先IP」と「行き先(ターゲット)」を設定し、VPC内やインターネットへどうやってルーティングするかを定義します。 インターネットに出る場合はインターネットゲートウェイを使い、プライベートサブネットのインスタンスが外部アクセスを行う際はNATゲートウェイを利用することが多いです。 適切なルート設定を行わないと、インスタンスが外部から接続できなかったり、逆に外部に出ていけなかったりするので注意が必要です。 VPC内の通信で完結させたい場合など、ルート設定でインターネットへの出口を作らないことも可能です。
セキュリティとアクセス制御
AWS VPCではセキュリティを多層的に構成できます。 具体的には、セキュリティグループや ネットワークACL (アクセスコントロールリスト)を使って通信を制限します。 セキュリティグループはインスタンス単位で設定するファイアウォールのようなものですが、ステートフルという特性があり、送信元のやり取りが正しければ戻りのパケットを許可します。 一方でネットワークACLはサブネット単位で設定し、ステートレスなので送信と受信を個別に管理します。 このように二重でセキュリティ対策を行うことで、安全なネットワーク運用を実現できます。
セキュリティグループの使い方
セキュリティグループのルールは許可ベースで書くことが多いです。 例として、SSHで接続する際にTCPポート22を自分のIPアドレスからのみ許可するといった設定が考えられます。 同時にWebサーバーを公開したい場合はTCPポート80とTCPポート443をインターネット全体から許可することもあるでしょう。 こうした設定をインスタンスごとに行うことで、柔軟かつ堅牢なアクセス制御が可能となります。 不必要な通信は明示的にブロックすることで、リスクを抑えられますね。
ネットワークACLでの補強
ネットワークACLは、サブネット単位でのアクセス制御を行います。 ステートレスのため、送信元と返却先が同じでも個別にルールを設定しなければいけません。 ただし、サブネット全体で一定の規制を行いたい場合には便利です。 例えば、アプリケーションレイヤー以前の段階で、不特定多数のIPを一括でブロックしたいときに役立つかもしれません。 セキュリティグループとの使い分けはプロジェクトごとに検討が必要ですが、両方を併用することでセキュリティを強化できます。
VPCの活用例
VPCはさまざまな場面で役に立ちます。 例えば、Webサービスを提供する環境を作る場合、パブリックサブネットにNginxなどのWebサーバーを配置し、プライベートサブネットにデータベースを置く構成が一般的です。 また、オンプレミス環境との接続を行いたいときは、VPCピアリングやAWS VPNを使って安全に接続できます。 プライベートサブネットだけでEC2インスタンスを運用しつつ、NATゲートウェイ経由で更新プログラムを取得するといった手法もよく用いられます。 要件に応じてネットワーク構成を設計できる点がVPCの大きなメリットですね。
VPCフローログを活用すると、どのトラフィックが成功または拒否されたかを後から確認できます。 トラブルシューティングやセキュリティ監査に便利なので必要に応じて検討すると良いかもしれません。
実際のVPC構築例(AWS CLI)
ここではAWS CLIを使い、VPCを作成する方法を簡単に紹介します。 この例では、CIDRブロックを「10.0.0.0/16」で設定したVPCを作成し、その後でサブネットやインターネットゲートウェイを紐づけています。 CLIはマニュアル操作よりも再現性が高いので、自動化の観点で取り入れているケースも多いでしょう。 ここで示すコマンドはあくまで基本的なものですが、流れをつかむには十分だと思います。 コマンドを実行するときはAWS CLIが正しく設定されていることを確認しておいてください。
# VPCの作成 aws ec2 create-vpc \ --cidr-block 10.0.0.0/16 # インターネットゲートウェイの作成とVPCへのアタッチ IGW_ID=$(aws ec2 create-internet-gateway --query 'InternetGateway.InternetGatewayId' --output text) aws ec2 attach-internet-gateway \ --internet-gateway-id $IGW_ID \ --vpc-id <YOUR_VPC_ID> # パブリックサブネット作成 SUBNET_ID=$(aws ec2 create-subnet \ --vpc-id <YOUR_VPC_ID> \ --cidr-block 10.0.1.0/24 \ --query 'Subnet.SubnetId' \ --output text) # ルートテーブル取得&インターネットゲートウェイへのルート追加 RTB_ID=$(aws ec2 describe-route-tables \ --filters "Name=vpc-id,Values=<YOUR_VPC_ID>" \ --query 'RouteTables[0].RouteTableId' \ --output text) aws ec2 create-route \ --route-table-id $RTB_ID \ --destination-cidr-block 0.0.0.0/0 \ --gateway-id $IGW_ID # サブネットをルートテーブルに関連付け aws ec2 associate-route-table \ --subnet-id $SUBNET_ID \ --route-table-id $RTB_ID
上記のような手順を踏むことで、AWS上に独自のネットワークを用意できます。 特にCIDRブロックのサイズやセキュリティグループなどは事前にしっかりと設計し、誤った設定がないように注意すると良いですね。 また、TerraformやCloudFormationといったIaC(Infrastructure as Code)ツールを使うと、大規模なインフラを管理しやすくなることも覚えておくと便利です。
運用時に気をつけたいポイント
VPCを構築して終わりではなく、運用面にも気を配る必要があります。 例えば、サブネットに紐づいているIPアドレスの枯渇は見落としがちではないでしょうか。 また、プライベートサブネットからインターネットへアクセスするときはNATゲートウェイの設定が正しいかどうかに注意が必要です。 セキュリティに関しても、不要なポートを開放していないか定期的にチェックしておきたいところです。 ネットワーク関連のトラブルは原因を特定しにくい場合もあるため、監視体制やログの活用が重要になります。
インフラ規模が大きくなるほどネットワーク構成も複雑になるので、構成図やドキュメントで整理することをおすすめします。 このように情報を整理しておけば、新しいメンバーが加わったときもスムーズに運用を引き継げます。
まとめ
ここまで、AWS VPCの基本的な仕組みや構成要素、そしてセキュリティや運用のポイントについて解説しました。 VPCによって、AWS上で自由にネットワークを設計し、オンプレミスと同様の感覚でリソースを配置できるようになります。 初心者の皆さんは、まずパブリックサブネットとプライベートサブネットの概念をしっかり理解するところから始めると良いでしょう。 その後にセキュリティグループやネットワークACLの役割を覚えると、スムーズに構築が進むのではないでしょうか。 トラブルシュートのためにVPCフローログを確認できるようにしておくなど、運用時に役立つオプションもあるので、必要に応じて検討してみてください。