こんにちは。 エキサイト株式会社の三浦です。
Amazonが提供しているAWSでは、サーバやDBなどを配置する箱として「サブネット」と呼ばれるものがあります。 そしてサブネットは、「プライベートサブネット」と「パブリックサブネット」の2種類が存在します。
今回は、その違いについて説明していきます。
サブネットとは
AWSには、「サブネット」と、それを入れるための「VPC」と呼ばれるものがあります。
公式では、以下のように説明されています。
VPC の基本
サブネットの基本
サブネットは、VPC の IP アドレスの範囲です。
知らない人にとってはおそらく「なんのこっちゃ」だと思いますが、言ってみれば、「VPC」は「サブネット」を入れるための箱で、「サブネット」はサーバやDBなど、具体的なAWSサービスを入れるための箱です。
例えばEC2を作成する時、「VPC」、及び「サブネット」を作成し、その内部にEC2を建てるようにすることで、そのまま作成するよりもセキュアにEC2を作成することができます。
1つのVPCには複数のサブネットを配置することができます。
そしてこのサブネットですが、「プライベートサブネット」というものと「パブリックサブネット」というものがあります。
プライベートサブネットとパブリックサブネットの違い
この「プライベートサブネット」と「パブリックサブネット」には明確な役割の違いがあり、「インターネットから直接アクセスさせたくないもの」はプライベートサブネットに、「インターネットから直接アクセスさせたいもの」はパブリックサブネットに入れます。
例えば、外部からアクセスする必要のないバッチサーバなどはプライベートサブネットに、SSHなどで外部からログインしたい踏み台サーバなどはパブリックサブネットに配置する、といった具合です。
Webサービスであれば、多くの場合パブリックサブネットに配置するのは踏み台サーバやユーザアクセス用のALBくらいのもので、他はすべてプライベートサブネットに置くので、ほとんどプライベートサブネットばかり使うことになると思われます。
では、このインターネットからのアクセスの差はどこから生まれているのでしょうか?
NATゲートウェイとインターネットゲートウェイ
実はプライベートサブネットとパブリックサブネットの違いは、インターネットとの接続に「NATゲートウェイ(NAT GW)」を使っているか「インターネットゲートウェイ(IGW)」を使っているか、というものです。
パブリックサブネットで使われるIGWは、サブネット内のサーバ等に付与されるプライベートなIPアドレスとグローバルIPアドレスを、1 : 1で紐付けることができます。
結果、インターネット側からパブリックサブネット内に存在するサーバ等を認識することができるのです。
一方でプライベートサブネットで使われるNAT GWは、NAT GW自体が持つグローバルなIPアドレスに、複数のプライベートIPアドレスを紐付けます。 つまり、グローバルなIPアドレスとプライベートなIPアドレスの対応が 1 : n となり、1つのグローバルIPアドレスで複数のサービスがインターネットの情報にアクセスできるようになるのですが、逆にインターネット側からは、個別のIPアドレスを識別することができません。
結果、インターネット側からはプライベートサブネット内に存在するサーバ等を認識することができず、インターネットから直接アクセスできないのです。
(ちなみにNAT GW自体はグローバルIPアドレスと 1 : 1 で紐付いている必要があるので、パブリックサブネット内に存在しています。)
この仕組みを利用することで、よりセキュアにAWSサービスを扱えるようになるというわけです。
最後に
ざっくりとプライベートサブネットとパブリックサブネットの差を紹介してみました。
クラウドでインフラを作成する時は、セキュリティに気をつけないと思わぬ攻撃を受けて取り返しのつかないことになるので、きっちりと考えて使っていきましょう。