0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS】VPC(Virtual Private Cloud)とネットワーク図の考察

Last updated at Posted at 2025-02-12

VPCの主な構成要素

1. サブネット

・VPCネットワークをさらに分割したやつ、ホスト部の間借りをしたもの

・パブリックサブネット:インターネットと直接通信するサブネットである。Webサーバーなど外部公開するリソースを配置する。

・プライベートサブネット:インターネットと直接通信しないサブネットで、DBサーバーなど内部で使用するリソースを配置する。

2.ゲートウェイ
・VPC内のリソースがインターネットと通信するための出入り口である。これをVPCに接続することで、パブリックサブネット内のリソースがインターネットにアクセスできる。

3.ルートテーブル(AWSのルートテーブルはちょっと特殊なので参考文献を参照してください。)
・ネットワーク内のトラフィックの行き先を決定するための設定である。どのサブネットやゲートウェイにパケットを送るかをここて定義する。

4.セキュリティグループとネットワークACL
・セキュリティグループ:特定のリソース(例:EC2インスタンス)に対するファイアーウォールの役割を果たし、どのIPアドレスやポートからのアクセスを許可するかを設定する。

・ネットワークACL(アクセスコントロールリスト):サブネット単位でパケット制御をし、セキュリティグループよりも広範囲なアクセス制御が可能。

5.NATゲートウェイ
・プライベートサブネット内のリソースがインターネットにアクセスする際使用する。内部から外部への通信は許可されるが、外部から内部への直接的なアクセスはブロックされる。(原則exgress通信はOK,ingress通信はNGだよというお話。)

具体例を用いてネットワーク図の考察をしてみる(参考文献2より)

AWS-VPC-Components.png

・VPC:10.0.0.0/16 (us-east-1リージョンに存在している。)

・サブネット
パブリックサブネット 10.0.0.0/24
プライベートサブネット 10.0.1.0/24 (us-east-1b)
→別リージョンにおいている。(CAP定理の観点から

・ゲートウェイ
インターネットゲートウェイ(パブリックサブネットのインターネット接続用)
NATゲートウェイ(プライベートサブネットのインターネット通信用)
VPNゲートウェイ(オンプレミスとの接続用)

・エンドポイント
S3エンドポイント(プライベートサブネットのインスタンスがS3と直接通信可能)

・外部サービス
Amazon DynamoDB
S3
オンプレミス(この場合VPN経由でデータセンターに接続している。)

復習がてら

VPCとサブネットの関係である。

VPC(10.0.0.0/16)
・10.0.0.0~10.0.255.255までのアドレスをカバーしている。(ホスト部を間借りしているので、変化するのはホスト部の下位16bitのみ)

・つまり、10.0.x.xの範囲すべてのIPがこのVPCに含まれる。

サブネット
10.0.0.0/24(パブリックサブネット) → 10.0.0.0 ~ 10.0.0.255
10.0.1.0/24(プライベートサブネット) → 10.0.1.0 ~ 10.0.1.255
→どちらも 10.0.0.0/16 の範囲内に含まれる!

サブネット間の通信
VPC内では、デフォルトですべてのサブネット間の通信が許可されている。
そのため、特別にルーティング設定をしなくても通信はできる。

もし通信を制限したい場合
→セキュリティグループやネットワークACLで制限を掛ける。
→パブリックサブネットからプライベートサブネットへのSSH接続を禁止にするなどの設定が可能となる。

やったほうがいいセキュリティ設定の一例とその理由

パブリックサブネットからプライベートサブネットへのSSH接続の禁止

理由:セキュリティの向上
プライベートサブネットにあるEC2は外部から直接アクセスできないようにするのが基本である。(公式でもこれがベストプラクティスだとされている。)
パブリックサブネットが乗っ取られたら、公開してはいけないDBの中身とかを覗けるようになってしまうので必要な設定ですね。

インバウンドトラフィックの制限
理由:不要な通信をブロックするため。
セキュリティグループを設計するときも最小権限の原則的思想を忘れずに!

対象 許可するポート 許可する送信元 説明
Webサーバー(公開用) 443(HTTPS) 0.0.0.0/0 誰でも接続していいよー、インターネット公開
Webサーバー(公開用) 22 コンソールに繋いでいる制御用のPCのIPアドレス 管理者だけ
アプリケーションサーバー(非公開) 8080など Webサーバー自体のIPアドレス Webサーバーからのみ通信可能にし、web3層構造を実現する。
DB(非公開) 3306(MySQLの標準ポート番号) アプリケーションサーバー自体のIPアドレス アプリケーションサーバーからのみ通信可能

内部ネットワークに管理者PCがある場合である。
セキュリティグループ定義の際に、管理者PCのプライベートIPアドレスを登録する。

NATゲートウェイの制限
理由:不要な外部アクセスを防ぐ
プライベートサブネットのEC2は、NATゲートウェイ経由でインターネットにアクセスできる。
ただし、すべての外部に対する通信を許可するのはリスキーである。特定のAPIエンドポイントのみに設定などが適切である。

IAMロールの最小権限設定

ダメな例です。すべてのユーザーがすべてのリソースに対してすべての操作が可能

{
  "Effect": "Allow",
  "Action": "*",
  "Resource": "*"
}

いい例です。特定のs3に対してのみ読み書きできるようになっています。

{
  "Effect": "Allow",
  "Action": [
    "s3:GetObject",
    "s3:PutObject"
  ],
  "Resource": "arn:aws:s3:::my-secure-bucket/*"
}

VPCフローログの有効化
理由:ネットワークの可視化&セキュリティ監査
VPCフローログを有効化すると、どのIPアドレスがどこに通信しているかをCloudWatch LogsやS3に記録できる。

参考文献(いずれも参照日2025年2月12日)↓わかりやすいです。

参考文献1

参考文献2

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?