【AWS】Amazon VPC ~ 基礎知識編 ~

■ はじめに

今まで何となくしか分からなかった VPC (Virtual Private Cloud) について
コツコツと少しづつまとめてみる

目次

【0】動画
 1)AWS公式
 2)その他
【1】VPC (Virtual Private Cloud)
【2】サブネット
  1)プライベートサブネット
  2)パブリックサブネット
【3】ルートテーブル
【4】ゲートウェイ
 1)インターネットゲートウェイ
 2)NATゲートウェイ
【5】VPCエンドポイント
 1)ゲートウェイ VPC エンドポイント
 2)インターフェイス VPC エンドポイント
【6】ENI (Elastic Network Interface)
【7】Elastic IPアドレス(EIP)
【8】仮想ファイアウォール
 1)セキュリティグループ
 2)ネットワークACL 

【0】動画

VPC に関する動画。

1)AWS公式

Amazon VPC
https://www.youtube.com/watch?v=aHEVvsk6pkI

2)その他

VPC に関して、コンパクトにまとめられているので
まずは、動画を見てみるといいかも。

リージョン、アベイラビリティゾーン、サブネット
https://www.youtube.com/watch?v=mHi2yFWLz9M
ルートテーブル、インターネットゲートウェイ、NATゲートウェイ、ENI、Elastic IPアドレス
https://www.youtube.com/watch?v=6muiXYF6CjE
セキュリティグループ、ネットワークACL
https://www.youtube.com/watch?v=wrHDWQEZOiA
EC2作成例
https://www.youtube.com/watch?v=_LEDOr1Y57o
https://www.youtube.com/watch?v=JQS5libJqDw

【1】VPC (Virtual Private Cloud)

AWSユーザ専用の仮想ネットワーク

公式サイト
https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/what-is-amazon-vpc.html

【2】サブネット

* VPCを小さな単位に分割するためのネットワーク群
* 以下の2種類。
1)プライベートサブネット
2)パブリックサブネット

1)プライベートサブネット

* インターネットに直接アクセスする目的で使用するサブネット
 => ルートテーブルにインタネットゲートウェイへのルーティングされている

2)パブリックサブネット

* 内部アクセスする目的で使用するサブネット
 => ルートテーブルにインタネットゲートウェイへのルーティングされていない

【3】ルートテーブル (Route table)

* サブネットまたはゲートウェイ
 から外部に向けて通信をどこに向けて発信するかを
 設定するテーブル

https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_Route_Tables.html

【4】ゲートウェイ (Gateway)

* VPCに関するゲートウェイは、以下の2種類。
1)インターネットゲートウェイ (Internet GateWay : IGW)
2)NATゲートウェイ

* NAT(NAPT)については、以下の関連記事を参照のこと。

NAT / NAPT / UPnP
https://dk521123.hatenablog.com/entry/2016/09/21/231938

1)インターネットゲートウェイ (IGW)

* Internet GateWay : IGW
* VPC とインターネットとの間の通信を可能にするコンポーネント

=> VPC 内の AWSリソースがインターネットで接続するには
 このインターネットゲートウェイにアタッチする必要がある

=> 逆に、VPCをインターネットに繋がない場合は、不要

https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_Internet_Gateway.html

* インターネットゲートウェイをVPCにアタッチ(関連付ける)するのは
 以下のサイト(と動画)を参照のこと

https://aws.amazon.com/jp/premiumsupport/knowledge-center/create-attach-igw-vpc/

* サブネットのルートテーブルをインターネットゲートウェイに向ける

ルートテーブル設定イメージ

送信先 ターゲット
10.0.0.1/21 local
0.0.0.0/0 IGW

2)NATゲートウェイ

* プライベートサブネットからインターネット接続を可能にするコンポーネント

* アウトバウンド(中 ⇒ 外)はできるが、インバウンド (外 => 中)はできない
 => 内側から出れるが、外からは入ってこれない
 => プライベートサブネットからNATゲートウェイを介して、
  インターネット接続できる

使いどころ

* 社内だけで使いたいが、ソフトウェアをアップデートするために
 インターネットに繋ぎたい場合

【5】VPCエンドポイント

* VPCと非VPCのサービスを直接繋げるための仮想ネットワークサービス
=> 「VPC」と「VPC外のサービス (S3, DynamoDB)」と接続において
  プライベート(外部ネットワークに出ずに)で
  通信可能にする仮想ネットワークサービス

https://docs.aws.amazon.com/ja_jp/vpc/latest/privatelink/vpc-endpoints.html

* Endpoint Type は、以下の2種類。
1)ゲートウェイ VPC エンドポイント
2)インターフェイス VPC エンドポイント

使い分け

https://qiita.com/miyuki_samitani/items/9d9f7a0c417cb75a6c85
a)対応サービス

* ゲートウェイエンドポイント:S3、DynamoDBのみ
* インターフェイスエンドポイント:S3、DynamoDB以外

b)ポリシー

* ゲートウェイエンドポイント:フルアクセス設定可能
* インターフェイスエンドポイント:フルアクセス設定不可

1)ゲートウェイ VPC エンドポイント

* ルートテーブル(※)を元にルーティングする

※ ネットワークトラフィックの経路を判断する情報が記載

https://docs.aws.amazon.com/ja_jp/vpc/latest/privatelink/vpce-gateway.html

2)インターフェイス VPC エンドポイント

* AWS PrivateLink (VPC内のENI)を使用するサービスに接続できる

https://docs.aws.amazon.com/ja_jp/vpc/latest/privatelink/vpce-interface.html

* AWS PrivateLink については、以下のサイトを参照。

https://blog.mmmcorp.co.jp/blog/2017/11/15/aws_privatelink/

【6】ENI (Elastic Network Interface)

* Elastic = 柔軟性、伸縮する
* VPC環境における仮想ネットワークインタフェース
 => 物理的な環境におけるNIC(Network Interface Card)
 => IPアドレスを割り当て、EC2などのAWSサービスにアタッチして使用する

【7】Elastic IPアドレス(EIP)

* AWS上で使用する静的なIPアドレス
* ENI に Elastic IPアドレス をアタッチして使用する

【8】仮想ファイアウォール

* VPC の 仮想ファイアウォール は、以下の2種類。 
1)セキュリティグループ
2)ネットワークACL

* 個人的には、
 「ネットワークACL」でざっくり弾いて、
 「セキュリティグループ」で細かく(※)フィルタリングするイメージ

※ 例えば、
HTTP(Port:80)/HTTPS(Port:443)は、通すが、
SSH(20)は、社内からの接続しか通さない

違いについて

* AWS公式サイトの比較表を参照のこと

https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_Security.html#VPC_Security_Comparison

一部抜粋

# セキュリティグループ ネットワーク ACL 備考
1 インスタンスレベルで動作 サブネットレベルで動作 サポート範囲が違うので使い分ければいい
2 ルールの許可のみがサポート ルールの許可と拒否がサポート
3 ステートフル: 返されたトラフィックは自動的に許可 ステートレス: 返されたトラフィックがルールによって許可する必要がある

1)セキュリティグループ(Security Group)

* AWSの仮想ファイアウォール
 => 同一グループ外のインスタンスと通信を行う際のトラフィックを制御できる
 => インバウンドとアウトバウンドルールでアクセス制御できる

https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_SecurityGroups.html

セキュリティグループ設定イメージ

タイプ プロトコル ポート範囲 ソース 説明-オプション
http TCP 80 0.0.0.0/0 HTTPは全て通す
ssh TCP 22 自分のIPアドレス sshは自分のPCのみ許可

2)ネットワークACL (Network Access Control List)

* サブネット単位で設定する仮想ファイアウォール
* 個々のインスタンスに対して設定する必要がない

https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-network-acls.html

参考文献

https://dev.classmethod.jp/cloud/cm-advent-calendar-2015-aws-re-entering-vpc/
https://techplay.jp/column/541
http://raptor-falcon.hatenablog.com/entry/2017/09/27/064309
https://dev.classmethod.jp/cloud/aws/vpc-connect-hardware-vpn/
https://dev.classmethod.jp/cloud/aws/vpc-knowhow-2014-04/

■ 関連記事

Amazon VPC ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2021/01/24/000000
Amazon IAM (Identity and Access Management)
https://dk521123.hatenablog.com/entry/2017/02/26/231046
Amazon EC2 ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2017/02/16/235120
CodeBuild ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/01/21/221122
Amazon Redshift ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2020/04/07/124519
IPアドレス
https://dk521123.hatenablog.com/entry/2015/02/18/234221
NAT / NAPT / UPnP
https://dk521123.hatenablog.com/entry/2016/09/21/231938