説明
デフォルト VPC は利用を始める際に便利ですが、本番リソースのネットワーク境界は意図的に設計する必要があります。デフォルト VPC でもルーティングやセキュリティグループを制御できるため、利用しているだけで公開アクセスや脆弱性を意味するわけではありません。実際のサブネット、パブリック IP、アクセス規則を併せて確認してください。
想定される影響
- テストと本番のリソースが、意図せず同じネットワーク境界に配置される場合があります。
- サブネットやルーティングの方針を確認しないと、アクセス制御や分離の要件を満たせない場合があります。
対処方法
- 独立した分離が必要な場合は、本番用 VPC とサブネットを用意し、
vpc_subnet_idで指定してください。変数名ではなく、サブネットが実際に属する VPC を確認してください。 - ルーティング、セキュリティグループ、パブリック IP の割り当てを併せて確認し、必要な接続だけを許可してください。VPC を変えるだけではインスタンスは非公開になりません。
例
過去の amazon.aws.ec2 モジュールに対応するコレクションを前提とした抜粋です。実際の AMI と、対象 VPC の範囲内で重複しないサブネット CIDR を入力してください。VPC の取得結果、キー、アクセス規則は別途用意する必要があります。
変更前
yaml
- name: 기본 VPC에 서브넷 생성
amazon.aws.ec2_vpc_subnet:
state: present
vpc_id: "{{ defaultVPC.vpcs.0.id }}"
cidr: "{{ ec2_subnet_cidr }}"
tags:
Name: Database Subnet
register: my_subnet
- name: EC2 인스턴스 생성
amazon.aws.ec2:
key_name: mykey
instance_type: t2.micro
image: "{{ ec2_image_id }}"
wait: yes
count: 3
vpc_subnet_id: "{{ my_subnet.subnet.id }}"
assign_public_ip: yes
先にデフォルト VPC 内のサブネットを作成し、その ID でインスタンスを配置します。組織の分離要件に合うか確認する必要があります。
変更後
yaml
- name: 별도 VPC에 서브넷 생성
amazon.aws.ec2_vpc_subnet:
state: present
vpc_id: "{{ myVPC.vpcs.0.id }}"
cidr: "{{ ec2_subnet_cidr }}"
tags:
Name: Database Subnet
register: my_subnet2
- name: EC2 인스턴스 생성
amazon.aws.ec2:
key_name: mykey
instance_type: t2.micro
image: "{{ ec2_image_id }}"
wait: yes
count: 3
vpc_subnet_id: "{{ my_subnet2.subnet.id }}"
assign_public_ip: yes
別途管理する VPC を選択します。両方の例に assign_public_ip: yes が残るため、パブリック IP と実際のアクセス経路も確認してください。