LoginSignup
21
26

More than 3 years have passed since last update.

NATゲートウェイを使わずにプライベートサブネットをインターネットにつなぐ

Last updated at Posted at 2020-01-25

NATゲートウェイを使わずにプライベートサブネットをインターネットにつなぐ

概要

AWSを日々活用の皆様、セキュリティには苦労されていることと思います。
特に、プライベートサブネットの管理については頭を悩ませていることと思います。

私も、いろいろ悩んだ結果、↓のような工夫していたりします。
https://qiita.com/SSMU3/items/23c533066ff9456c3bd1

話を戻しますが、ご存じの通り、プライベートサブネットを作ることによるメリットデメリットは以下の通りです。

方向 メリット デメリット 備考
IN インターネットからアクセスされない為セキュアである。 インターネットからSSHやRDPで接続できない。
OUT インターネットに余計なデータを出力しない為、情報漏洩の危険が少ない。 インターネット経由のアップデートが出来ないため、インストールやアップデートが悩ましい。

INに関しては、踏み台を立てる。もしくはSSH経由の接続などでカバーできますので、あまり問題になることはないかと思います。
https://qiita.com/1Kano/items/1496d58b1293ff70c5ec

ただし、OUTに関してはインターネットに出ていく為にはNatゲートウェイ/インスタンスが必要|Natゲートウェイはサブネット事に必要かつ、1つにつき月2,000円程度の費用が必要(2020年1月時点)となります。しかも、それで役に立つのはアップデートや監視くらいです。

というわけで、やり方を考えました。
このやり方なら、メリットは以下のように変わります。

方向 メリット デメリット 備考
IN インターネットからアクセスされない為セキュアである。 インターネットからSSHやRDPで接続できない。
OUT インターネットに余計なデータを出力しない為、情報漏洩の危険が少ない。 Natゲートウェイ/インスタンスがなくてもインターネット経由のアップデータができる。必要であれば、通信制限もできる。 ここが違う

というわけで、わりとデメリットなく問題が解決します。

その方法とは・・・・

プライベートサブネットをインターネットGWにつなぎ、ネットワークACLで制御する。

以上です。
なんだ、それだけか、という話なんですが、そもそも要件が満たせるならインターネットゲートウェイを使わない理由はありません。
なんですが、世の中「プライベートサブネットはインターネットゲートウェイを使わないサブネットである」という認識が根深いようで、話すとわりと「ええー」といった反応が返ってきます。
面白いですね。

ただ、デメリットかどうかはわかりませんが、1点だけ、
インスタンスにグローバルIPを設定する必要がある
という点が問題になる場合があります。
ただそれも、ACLとセキュリティグループの2重防御で守られているので、あまり問題ではないと思います。

やり方

プライベートサブネットの所属するルートテーブルにインターネットゲートウェイを設定

ルートテーブルの設定

Before

WS000113.JPG

After

WS000114.JPG

ネットワークACLの設定

(1) 新しいネットワークACLを作成

WS000117.JPG

(2) 作成したネットワークACLのアウトバウンドのルールを編集

WS000119.JPG

単純な方法はアウトバウンドのすべてのトラフィックをPERMITにすることです。

ただ、アウトバウンドも最小限にしたい、ということであれば、以下のサイトの中で割り当てられたグローバルIPの属するレンジを許可してあげればアップデートは可能でしょう。
数が多いので、「ap-northeast」などで検索するとわかりやすくなります。
尚、EC2分だけでもいいですが、Route53なども許可してあげればヘルスチェックも可能になります。
https://qiita.com/uchidake/items/46309bf5f6919b3906c0#12-ap-northeast-1--2264752-ips-

(3) 作成したネットワークACLをサブネットに割り当て

WS000121.JPG

WS000124.JPG

雑感

単純にこれだけですべてが解決するわけではありませんが、セキュリティを保護しつつ、費用や工数を抑えるための一つの方法だと思えば、ありかなと思います。
必要な出口は作りつつ、ネットワークACLとセキュリティグループの2重の鍵で守る、というわけですね。
もちろん、ルートテーブル0.0.0.0/0ではなく、ネットワークACL同様に通信したい個所を限定して絞る手段もあると思います。

とはいえ、出口は作っちゃうわけなので、DBなどが置かれるサブネットにはこの方法は使わない方がいいと思います。
あくまで、アップデートなどが必要なサーバのみが対象、ということで。

画期的ではないですが、コロンブスの卵的な方法ではあると思います。

21
26
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
21
26