【AWS】ネットワーク・セキュリティについて（ゲートウェイ、VPC）

## はじめに
株式会社ジールの@suguru_y_zdh です。
AWSを使ったデータ分析基盤関係の業務に従事しております。
その中で得たノウハウをQiitaをとおして発信していきたいと思います。

今回は社内のAWSネットワーク・セキュリティ勉強会で私が担当したゲートウェイ、VPCのセキュリティについて記事にします。


## 記事の概要
・インターネットゲートウェイとNATゲートウェイの違い
・NATゲートウェイ有無のインタネット接続イメージ
・セキュリティグループとネットワークACLの違い




## インターネットゲートウェイとNATゲートウェイの違い
インタネットゲートウェイとNATゲートウェイの違いを簡単に説明すると下記です。
・インターネットゲートウェイ：プライベートIPとグローバルIPを　１対１　変換する
・NATゲートウェイ： プライベートIPとグローバルIPを　多対１　変換する
　※動的NAPT(Network Address Port Translation)を用いて多対１を紐づけている
下記がイメージ図でございます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/f5f769ff-0dce-57c8-416e-5d0b1fa04010.png)

## NATゲートウェイ有無のインタネット接続イメージ
### NATゲートウェイ無の場合
下図はNATゲートウェイ無のインターネット接続イメージです。
（パブリックサブネット内のEC2はプライベートIPアドレスとグローバルIPアドレスを設定している）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/19a995c1-a221-1207-2ca4-3f9038ec8989.png)


インターネットゲートウェイを通過する際に毎回１つのプライベートIPアドレスと１つのグローバルIPアドレスが変換されます。
この変換がインターネットゲートウェイで行われる　１対１変換です。

パブリックサブネットのインターネット接続イメージを紹介したので、パブリックサブネットの危険性について少し触れます。


#### パブリックサブネットの危険性
パブリックサブネットはVPC内外からインターネットにアクセスできるルートを設定しているためセキュリティ上の危険性が高いです。悪意のあるユーザーからのサイバー攻撃を受けたり人為的なミスで情報漏洩をする可能性もあります。
そのため機密性の高い情報（お客様情報、会社情報など）をパブリックサブネットに載せることは非常に危険です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/6a9883bd-7401-37b5-edab-2e447efea59a.png)
しかし、実際には会社サービスなどでインターネットと接続するケースは多々あります。その際に使用される一般的なネットワーク構築としてDMZ(DeMilitarized Zone)と呼ばれるネットワーク領域を使用します。DMZについてはこちらのサイトが参考になりました。
[【マンガ解説付】5分でざっくりわかる「DMZ」、役割や構築方法をやさしく解説](https://www.sbbit.jp/article/cont1/37677)

#### DMZ(DeMilitarized Zone 直訳：非武装地帯)
DMZとはDeMilitarized Zoneの略で直訳すると非武装地帯となります。
内部のネットワークと外部のネットワークの中間に位置し、どちらからもアクセスできる緩衝地帯の役割を持ちます。

会社のエントランスをイメージしていただくと分かりやすいと思います。
外部の人も内部の人も行き来できる場所で、エントランスには機密情報を置くことはないです。構成図でいうと下図の黒枠部分がDMZにあたります。
問題がない通信に関してはファイアーウォール通過して相互に通信ができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/b1253d5c-4b63-6bfc-4788-dd0c98a4ab44.png)


こちら万が一攻撃を受けたとしても、DMZ内でとどまり機密情報が洩れる心配はありません。安全を担保するうえで機密情報をパブリックサブネットから切り離しておくことがとても重要になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/b7240454-d179-0f34-7fc9-cab13ef49899.png)

### NATゲートウェイ有の場合
下図はNATゲートウェイ有のインターネット接続イメージです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/77ec97bd-e41e-b965-0312-bab9dc0a09fc.png)
NATゲートウェイの特徴として下記３点挙げます。
・プライベートサブネットのリソースからインターネットへの接続を可能にするためのゲートウェイ
・プライベートIPアドレスをグローバルIPアドレスに変換して、インターネットゲートウェイに連携する
・インターネットから始まる通信は通さない

上記のイメージにIPアドレスを明示的に示し、より詳細に説明していきます。

下図はNATゲートウェイを介してプライベートサブネットからインターネット接続をするイメージです。（NATゲートウェイにグローバルIPアドレスを設定している）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/bcf75526-044e-14d2-0395-a3b2749a7b94.png)

このようにNATゲートウェイに対して複数のインスタンスがインターネットと通信する際、それぞれのプライベートIPアドレスをグローバルIPアドレスに変換して通信をすることになります。
この複数のプライベートIPアドレス　対　１つのグローバルIPアドレス　の変換が多対１の変換です。

しかし複数のプライベートアドレスを１つのグローバルIPアドレスに変換した場合
外向きの通信　図の黄色の矢印の通信はできても　
内向き　図の緑色矢印の通信はできるのかという疑問が生まれた方もいると思います。
その際NAPT(Network Address Port Translation)という技術を用いて内向きの通信を確保しております。下図がNAPT技術のイメージです。NAPTについてこちらのサイトが参考になりました。
[【図解/AWS】インターネットGWとNAT-GWの違い〜各メリット、パブリックサブネットとは〜】](https://milestone-of-se.nesuke.com/sv-advanced/aws/internet-nat-gateway/)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/aa208afd-860c-2b1f-3baf-9543f5ba9460.png)

NAPTはIPアドレスとTCP/UDP ポート番号を用いて送信元のIPアドレス特定します。
具体的には右側の吹き出し部分のように、NAPTにより各IPアドレスにどのポート番号を使って通信するかという情報が載ったNATテーブルを作成し、NATテーブルを基に変換します。少し分かりづらいと思いますのでマンションを使って説明します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/c8290454-c77f-d8c3-bb62-ea9e099dfd6a.png)

上図のとおりパブリックサブネットにあるNATマンションがあるとします。このNATマンションのフロントがNATゲートウェイだと思ってください。
フロントにあるNATテーブル上にはNATマンションの101号室に住んでいるという住人の情報が記載してあります。こちらの101号室がポート番号のことだと考えてください。
Aさんから外の世界へ手紙を出す場合にNATテーブルの情報、つまり差出人情報が載った状態になるので外の世界と相互にやり取りすることが可能になります。（Aさんから始まる通信はNATテーブルに情報が載っているのでフロントで正しく変換されて外の世界と相互に通信ができます。）

続いて外の世界から始まる通信について説明します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/992831ca-e5dd-de3d-0382-4b7a8a3d376b.png)
外の世界の外部さんはNATテーブルの情報を知りえません。そのため外の世界の外部さんから始まる通信はNATマンションまでしか到達することができません。またその通信はフロントのNATテーブルには情報が載っていないので正しく変換されず部屋との通信はできません。

NATゲートウェイの特徴として挙げた、
インターネットから始まる通信は通さないというのはこの仕組みのためです。


## セキュリティグループとネットワークACLの違い
下図はセキュリティグループとネットワークACLの違いのイメージです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/d8a5305a-debe-69f7-06ad-831c1f98c450.png)

### セキュリティグループ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/73656a59-5e2b-1fea-8dbc-0111cc38c88c.png)

セキュリティグループとは、同一グループ外のインスタンスと通信を行う際のトラフィックを制御するファイアウォールのことです。
上図のようにサブネットの中にセキュリティグループというファイアーウォールを作るイメージです。（便器上パブリックサブネットに作成しておりますが、プライベートサブネットにも作成することもできます。）
特徴として３点挙げます。
・インスタンス単位で通信制御ができる（EC2,RDSなど）
・通信制御としてインバウンド(内向きの通信)とアウトバウンド(外向きの通信)がある
・通信制御の設定は作成した全てのルールが適用される

作成した全てのルールが適用されるについて説明します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/a8d208b3-2693-5de4-1774-e1b6f38bcc2f.png)
上図のようにセキュリティグループの設定項目は
①プロトコル
②ポート範囲
③ソースの設定
を設定できます。

例えば右側に記載のポート番号22でソース10.0.3.11　と　12　の二つのルールを作成した場合
このセキュリティグループの通信制御の設定はポート番号２２のソースが10.0.3.11と12両方を許可するという設定になります。
これが全てのルール適用するということです。

### ネットワークACL
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/d2f665fa-39f3-38f3-9f66-8f08df5c2dc9.png)
ネットワークACL(Access Control List)とは、セキュリティグループと同様ファイアーウォールのことです。セキュリティグループはインスタンス単位の制御だったのに対してネットワークACLはサブネット単位の制御を行います。
上図ようにサブネットに対してネットワークACLというファイアーウォールを作るイメージです。（便宜上パブリックサブネットに作成しておりますが、プライベートサブネットにも作成することもできます。）

特徴として３点挙げます。
・サブネット単位通信制御ができる
・通信制御として先ほど同様インバウンドとアウトバウンドがある
・作成したルールを番号順に照合し最初に一致したルールを適用する

通信制御の設定は作成したルールを番号順に照合し最初に一致したルール適用するについて説明します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777457/7095775a-c635-31ee-5400-dc5a5e83f666.png)

上図のようにネットワークACLの設定項目は
①プロトコル
②ポート範囲
③送信元
④許可か拒否か
を設定できます。

例えばネットワークACLのルールが右側のように100番、101番、102番と続いていたとします。
ここで100番のルールと合致した場合は100番が適用され101番以降は適用されません。
また、100番のルールに合致せず、101番のルールに合致した場合、100番と102番以降のルールは適用されません。
こちらが番号順に照合し最初に一致したルール適用するということです。



## おわりに
AWSのゲートウェイ、VPCのセキュリティについて私なりの解釈でまとめました。誤り等あれば気軽にコメントいただければと思います。こちらの記事が皆様の参考になれば幸いでございます。



## 参考URL
・NAT-GW関連
[【図解/AWS】インターネットGWとNAT-GWの違い〜各メリット、パブリックサブネットとは〜】](https://milestone-of-se.nesuke.com/sv-advanced/aws/internet-nat-gateway/)

・DMZ（DeMilitarized Zone）関連
[【マンガ解説付】5分でざっくりわかる「DMZ」、役割や構築方法をやさしく解説](https://www.sbbit.jp/article/cont1/37677)

#
株式会社ジールでは、初期費用が不要で運用・保守の手間もかからず、ノーコード・ローコードですぐに手元データを分析可能なオールインワン型データ活用プラットフォーム「ZEUSCloud」を提供しております。
ご興味がある方は是非下記のリンクをご覧ください：
https://www.zdh.co.jp/products-services/cloud-data/zeuscloud/