0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人的備忘録:AWS VPCにおけるサブネットとセキュリティグループの構成を体系的に整理してみた

Last updated at Posted at 2025-02-20

はじめに

AWS 上でアプリケーションを運用する際、適切なサブネット構成とセキュリティグループの設計 は不可欠です。
本記事では、以下のポイントを整理します。

  • パブリックサブネットとプライベートサブネットの役割
  • ECS、ALB、RDS の適切な配置
  • セキュリティグループによるアクセス制御

書こうと思ったきっかけ

受講している IT スクールのハッカソン で、インフラ担当として AWS の構成を設計することになったため、理解を深める目的 で投稿しました。

実際に作成しているAWS構成

Screenshot 2025-02-21 at 7.29.34.png

1. サブネット構成

本構成では、ALB(ロードバランサー)用のパブリックサブネットと、ECS・RDS 用のプライベートサブネットを分け、適切な通信制御を行っています。

1.1 サブネット一覧

サブネット名 CIDR ブロック AZ ルートテーブル NATゲートウェイ 用途
public1 10.0.0.0/20 ap-northeast-1a public なし ALB 用
public2 10.0.16.0/20 ap-northeast-1c public なし ALB 用
private1 10.0.128.0/20 ap-northeast-1a private1 public1 にある NAT GW ECS, アプリ用
private2 10.0.144.0/20 ap-northeast-1c private2 public1 にある NAT GW ECS, アプリ用
private3 10.0.160.0/20 ap-northeast-1a private3 なし(NAT未設定) RDS
private4 10.0.176.0/20 ap-northeast-1c private4 なし(NAT未設定) RDS

1.2 パブリックサブネットの役割

パブリックサブネット(public1, public2)は、インターネットと直接通信できるサブネットです。

  • ALB(Application Load Balancer)を配置し、外部からのリクエストを受け付ける
  • ECS(アプリケーション)は ALB 経由でアクセスされるため、ECS 自体はプライベートサブネットに配置

Terraform 設定例

resource "aws_subnet" "public1" {
  vpc_id            = aws_vpc.main.id
  cidr_block        = "10.0.0.0/20"
  availability_zone = "ap-northeast-1a"
  tags = { Name = "Terraform-subnet-public1-ap-northeast-1a" }
}

resource "aws_subnet" "public2" {
  vpc_id            = aws_vpc.main.id
  cidr_block        = "10.0.16.0/20"
  availability_zone = "ap-northeast-1c"
  tags = { Name = "Terraform-subnet-public2-ap-northeast-1c" }
}

1.3 プライベートサブネットの役割

プライベートサブネット(private1, private2, private3, private4)は、外部から直接アクセスできないサブネットです。

  • private1, private2(ECS 用)

    • インターネットアクセスが必要なため、NAT ゲートウェイ経由で外部通信を許可
    • ECS のタスクは NAT を介してインターネットにアクセス可能(例: 外部 API 呼び出しやパッケージ更新)
  • private3, private4(RDS 用)

    • NAT ゲートウェイなしでインターネットとの通信を遮断
    • ECS からのみアクセス可能な状態を維持し、データベースのセキュリティを確保

2. セキュリティグループ構成

適切なセキュリティグループ(SG)を設定し、不要な通信を制限します。

セキュリティグループ名 対象リソース インバウンドルール アウトバウンドルール 備考
ecs_sg ECS (アプリケーション用) ALB から TCP/1323 アクセスを許可 すべてのトラフィックを許可 (0.0.0.0/0) ECS タスク用の通信制御
public_sg ALB (パブリック) 全インターネットから TCP/443 (HTTPS) を許可 すべてのトラフィックを許可 (0.0.0.0/0) ALB の受信トラフィック用
rds_sg RDS (MySQL) ECS のセキュリティグループ (ecs_sg) から TCP/3306 を許可 すべてのトラフィックを許可 (0.0.0.0/0) RDS へのアクセス制御

ポイント

  • ecs_sg(ECS のセキュリティグループ)

    • ALB(public_sg)からのアクセスのみ許可し、外部からの直接アクセスを制限
  • public_sg(ALB のセキュリティグループ)

    • インターネットから HTTPS(TCP/443)のみ許可し、ALB がリクエストを受け取れるよう設定
  • rds_sg(RDS のセキュリティグループ)

    • ECS(ecs_sg)からの MySQL 接続(TCP/3306)のみ許可し、外部からの直接接続は制限

まとめ

リソース 配置サブネット ポイント
ALB public1, public2 インターネットからの HTTPS 通信を受け付ける
ECS (アプリケーション) private1, private2 ALB 経由でアクセス、NAT 経由でインターネット通信可
RDS (データベース) private3, private4 ECS からのみアクセスを許可、外部からの通信不可

この構成により、セキュリティを確保しつつ、アプリケーションとデータベースを適切に分離したネットワーク環境を構築できます。

ECS 上でのアプリケーション運用をより安全かつ効率的に行いましょう!

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?