0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

<Terraform学習>AWSのNetwork ACLとルールの作成

Posted at

前提条件

学習のため細かく分けて作成していきます。
今回の構成では、Public Subnet では SSH (22番ポート) のみを許可し、それ以外を拒否。
Private Subnet では Public Subnet からの SSH のみを許可し、他は拒否とします。

バージョン情報

  • Terraform: Terraform v1.10.5
  • AWS CLI: aws-cli/2.24.11 Python/3.12.9 Windows/11 exe/AMD64

前提条件

学習のため細かく分けて作成していきます。
今回の構成では、Public Subnet では SSH (22番ポート) のみを許可し、それ以外を拒否。
Private Subnet では Public Subnet からの SSH のみを許可し、他は拒否とします。

バージョン情報

  • Terraform: Terraform v1.10.5
  • AWS CLI: aws-cli/2.24.11 Python/3.12.9 Windows/11 exe/AMD64

Terraform ファイルの内容と実行結果

terraform init

terraform init

出力(抜粋):

Terraform has been successfully initialized!

terraform plan

terraform plan

出力結果(要約):

  • aws_network_acl: Public/Private 用に 2 つ作成される
  • aws_network_acl_rule: 各 ACL に対してインバウンド/アウトバウンドルールが追加される
  • 合計 8 リソースが追加される予定

terraform apply

terraform apply

出力結果(要約):

Apply complete! Resources: 8 added, 0 changed, 0 destroyed.

作成したリソースの詳細

aws_network_acl リソースのパラメータ一覧

引数 (Arguments)

パラメータ名 説明
vpc_id 関連付ける VPC の ID。必須。
subnet_ids ACL を適用するサブネット ID のリスト。任意。
ingress インバウンドルールの定義。attribute-as-blocks モードで処理される。任意。
egress アウトバウンドルールの定義。attribute-as-blocks モードで処理される。任意。
tags タグのマップ。任意。

ingress / egress に指定できるキー

キー名 説明
from_port マッチさせる開始ポート。
to_port マッチさせる終了ポート。
rule_no ルール番号。評価順に使用される。
action 許可(allow)または拒否(deny)。
protocol 対象プロトコル(例: tcp, -1など)。
cidr_block 対象の IPv4 CIDR ブロック。
ipv6_cidr_block 対象の IPv6 CIDR ブロック。
icmp_type ICMP のタイプ。
icmp_code ICMP のコード。

IANA ICMP Parameters 参照

属性 (Attributes)

属性名 説明
id Network ACL の ID。
arn Network ACL の ARN。
owner_id 所有する AWS アカウントの ID。
tags_all すべてのタグのマップ。
aws_network_acl_rule パラメータ一覧

引数 (Arguments)

パラメータ名 説明
network_acl_id 関連付ける Network ACL の ID。
rule_number ルール番号(昇順で評価)。
egress 送信ルールかどうか。
protocol プロトコル。-1 はすべてを意味する。
rule_action allow または deny
cidr_block 対象のネットワーク範囲(IPv4)。
ipv6_cidr_block 対象の IPv6 ネットワーク範囲。
from_port 開始ポート。
to_port 終了ポート。
icmp_type ICMP のタイプ。
icmp_code ICMP のコード。

属性

属性名 説明
id Network ACL Rule の ID。

気づいたこと・勘違いしていたこと

  • ACL はステートレスなため、インバウンド/アウトバウンドを両方定義する必要がある
  • ドキュメントにはcidr_blockのパラメータはオプションと記載されていたが、cidr_blockを入れないとエラーが起きて作成に失敗した

まとめ

  • Terraform を使って VPC 内のサブネットに ACL を設定
  • aws_network_aclaws_network_acl_rule を組み合わせることで柔軟なアクセス制御が可能
  • Network ACL はステートレスであるため、ルールは入出力の両方に必要
  • 最小権限の原則に基づき、CIDR 指定を適切に行うことが重要

次回は セキュリティグループの作成 と最小権限の設計について学びます。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?