【入門編】 プライベートサブネットの定義とセキュリティ分離の原則 – クラウドインフラと仮想化ネットワーク実践ガイド

「インターネットから見えない要塞」を作る:プライベートサブネットの真実

こんにちは!インフラエンジニアとして日々クラウドの裏側を覗き込んでいるSREです。

AWSを触り始めると必ずぶつかるのが「サブネット」という概念。「パブリック?プライベート?何が違うの?」と戸惑う方も多いはずです。今回は、このネットワークの「境界線」について、小難しい専門用語を一旦置いておいて、日常の風景に例えながら紐解いていきましょう。

—

郵便配達で考える「インターネットゲートウェイ」

まずは、皆さんが住んでいる「マンション」を想像してみてください。

  • パブリックサブネット = マンションの「エントランス(共有部)」

誰でも出入りが可能な場所です。郵便屋さんはここまで荷物を届けに来てくれますよね。AWSの世界では、この「外の世界と繋がる扉」を Internet Gateway (IGW) と呼びます。

  • プライベートサブネット = 「各部屋の奥の金庫」

ここには直接外部の人は入れません。マンションの管理人が一度エントランスで受け取った荷物を、個別の部屋へ運ぶ仕組みが必要です。

つまり、プライベートサブネットとは「外部から直接アクセスできない隔離された部屋」のこと。データベースや機密データを扱うサーバーは、この「奥の部屋」に置くのがクラウド設計の鉄則なんです。

—

なぜ「隔離」が必要なのか?

もし、大切な情報を扱うデータベースがエントランスのすぐ横に置いてあったらどうでしょう? 誰でもノックできてしまいますよね。悪意ある攻撃者は、その扉を片っ端から叩いてこじ開けようとします。

プライベートサブネットに配置するということは、「そもそも、外からはあなたのサーバーの場所が見えないし、ノックする手段もない」という状態を作ることです。これがセキュリティの第一歩、「最小権限の原則」というやつですね。

—

どうやって隔離を実現するのか?

AWSでこれを実現するには、大きく分けて2つの「通行手形」を管理します。

1. ルートテーブル(道路の案内板)

パブリックサブネットの案内板には「外に出るには Internet Gateway を使いなさい」と書かれています。一方、プライベートサブネットの案内板からは、この記述を削除します。これで、サーバーは外の世界への出口を見失い、自分から外に出ることも、外から入ってくることもできなくなります。

2. セキュリティグループ(部屋のドアの鍵)

サブネットという境界線の他に、個別のサーバーにも「誰が通信していいか」という鍵をかけます。プライベートサブネットにあっても、この鍵が空いていれば侵入されてしまいます。

—

実践:Terraformで「プライベート」を定義する

実際にインフラコード(Terraform)で定義すると、こんなにシンプルです。ポイントは「 map_public_ip_on_launch 」を false にすることです。

# プライベートサブネットの定義
resource "aws_subnet" "private_subnet" {
  vpc_id     = aws_vpc.main.id
  cidr_block = "10.0.2.0/24"

  # ここを false にすることで、自動的に外から見えるIPを割り当てないようにする
  map_public_ip_on_launch = false

  tags = {
    Name = "my-private-subnet"
  }
}

# プライベートサブネット用のルートテーブル
resource "aws_route_table" "private_rt" {
  vpc_id = aws_vpc.main.id

  # ここには Internet Gateway へのルートを記述しない!
  # これが「外に出られない」ことの証明になります
}

—

「外と話せないと困る」時はどうする?

「プライベートサブネットに置いたサーバーで、アップデートのために外部のサイトを見に行きたい!」という状況はよくありますよね。そんな時の魔法の道具が NAT Gateway です。

これは「マンションの管理人さん」のようなもの。住人(プライベートサーバー)が管理人(NAT Gateway)に「あれ買ってきて!」と頼むと、管理人が代わりに外へ買い出しに行ってくれるイメージです。

  • サーバーから外へ:管理人(NAT Gateway)経由で通信可能。
  • 外からサーバーへ:管理人(NAT Gateway)は誰からの注文か知っているので、勝手な訪問者はシャットアウト。

この仕組みを使うことで、「セキュリティは堅牢に、でも必要なアップデートは可能に」というバランスを実現できるのです。

—

最後に:ネットワークは「思いやり」

ネットワーク設計は、パケットという「手紙」がどこを通って、誰に届くのかを想像するクリエイティブな作業です。

「このサーバーは外から見える必要があるか?」「このデータは誰に見られるべきか?」と一つずつ問いかけること。それが、あなたの作ったインフラを強固な要塞に変えていきます。

最初は難しく感じるかもしれませんが、まずは「エントランス」と「奥の部屋」の区別をつけるところから始めてみてください。一歩ずつ、着実に。現場のSREとして、皆さんのクラウドデビューを心から応援しています!

コメント

タイトルとURLをコピーしました