パブリック IP を自動割り当てする VPC サブネット

インスタンス起動時のパブリック IPv4 アドレス自動割り当ては、必要なサブネットだけで有効にしてください。

説明

サブネットの map_public_ip_on_launch = true は、インスタンス起動時にパブリック IPv4 アドレスを自動割り当てする既定の動作を設定します。実際の割り当ては起動設定で上書きでき、パブリックアドレスがあるだけでインターネットから到達できるわけではありません。インターネットゲートウェイへのルート、セキュリティグループ、ネットワーク ACL も接続可否に影響します。

内部専用のワークロードにも公開アドレスを割り当てると、不要な露出の可能性が高まります。サブネット単位で自動割り当てを無効にすると、このようなミスを減らせます。

想定される影響

  • 意図しない公開アクセス: アドレス、経路、アクセスルールがすべて許可すると、外部から接続できる可能性があります。
  • 攻撃対象の拡大: 過剰なセキュリティグループルールと組み合わさると、サービスがスキャン対象になる場合があります。
  • 運用ミスの波及: 同じサブネット内の複数インスタンスに、不要なアドレスが繰り返し割り当てられる可能性があります。

対処方法

  • 自動割り当てが不要なサブネットには map_public_ip_on_launch = false を設定してください。
  • 外部公開が必要なリソースと内部専用のリソースを区別し、ルーティングとアクセス方針も併せて設定してください。
  • インスタンスの起動オプションと既存の公開アドレスも別途確認してください。サブネット設定を変えても、割り当て済みのアドレスは削除されません。

例

変更前

hcl
resource "aws_vpc" "main" {
  cidr_block = "10.0.0.0/16"
}

resource "aws_subnet" "example" {
  vpc_id     = aws_vpc.main.id
  cidr_block = "10.0.1.0/24"

  tags = {
    Name = "Positive"
  }

  map_public_ip_on_launch = true
}

変更後

hcl
resource "aws_vpc" "main" {
  cidr_block = "10.0.0.0/16"
}

resource "aws_subnet" "example" {
  vpc_id     = aws_vpc.main.id
  cidr_block = "10.0.1.0/24"

  tags = {
    Name = "Negative2"
  }

  map_public_ip_on_launch = false
}

変更前はサブネットのパブリック IPv4 自動割り当てを有効にし、変更後は無効にします。この抜粋にはルートとセキュリティグループがないため、完全なネットワーク分離を保証するものではありません。必要な外部通信経路は別途用意してください。

参考資料