説明
RDS のサブネットグループに含まれるサブネットには、VPC の範囲内で有効なアドレスブロックを指定する必要があります。サブネットの cidr に 0.0.0.0/0、または ipv6_cidr に ::/0 を指定する構成は、AWS では有効ではありません。
AWS では、インターネットゲートウェイへの直接のルートを持つサブネットがパブリックサブネットです。プライベート CIDR を使っていても、このようなルートがあればパブリックサブネットになります。ルートの宛先としての /0 と、サブネット自体のアドレス範囲を区別して確認してください。
想定される影響
- 無効な
/0のサブネット設定は、デプロイの失敗につながります。 - プライベート CIDR だけでネットワークの分離を判断すると、実際のインターネット接続経路を見落とすおそれがあります。
- ルーティング、公開アクセス設定、セキュリティグループがそろって外部接続を許可していると、RDS に対する望まない接続試行が発生する可能性があります。
対処方法
- VPC の範囲内で、有効かつ重複しない CIDR ブロックをサブネットに指定してください。CIDR の変更だけでは、サブネットは非公開になりません。
- 内部専用のデータベースには、インターネットゲートウェイへの直接のルートがないサブネットを選び、サブネットグループの実際の構成を確認してください。
publicly_accessible、セキュリティグループ、アプリケーションの接続経路を合わせて確認してください。アベイラビリティーゾーンに関するサブネットグループの要件も、利用する RDS 構成に応じて確認してください。
例
以下はサブネットのアドレス設定を比較する抜粋であり、デプロイ用の構成ではありません。最初の例の /0 は有効なサブネット CIDR ではなく、どちらの例も二つ目のサブネット定義とルーティング設定を省略しています。古いモジュール名、リソース識別子、RDS の設定も利用環境に合わせて確認してください。
変更前
yaml
- name: create minimal aurora instance
community.aws.rds_instance:
engine: aurora
db_instance_identifier: ansible-test-aurora-db-instance
instance_type: db.t2.small
password: "{{ password }}"
username: "{{ username }}"
cluster_id: ansible-test-cluster
db_subnet_group_name: my_subnet_group
- name: Add or change a subnet group
community.aws.rds_subnet_group:
state: present
name: my_subnet_group
description: My Fancy Ex Parrot Subnet Group
subnets:
- "{{ subnet1.subnet.id }}"
- "{{ subnet2.subnet.id }}"
- name: Create subnet for database servers
amazon.aws.ec2_vpc_subnet:
state: present
vpc_id: vpc-123456
cidr: 0.0.0.0/0
register: subnet1
変更後
yaml
- name: create minimal aurora instance
community.aws.rds_instance:
engine: aurora
db_instance_identifier: ansible-test-aurora-db-instance
instance_type: db.t2.small
password: "{{ password }}"
username: "{{ username }}"
cluster_id: ansible-test-cluster
db_subnet_group_name: my_private_subnet_group
- name: add private subnet group
community.aws.rds_subnet_group:
state: present
name: my_private_subnet_group
description: private database subnets
subnets:
- "{{ subnet_private_a.subnet.id }}"
- "{{ subnet_private_b.subnet.id }}"
- name: create private subnet
amazon.aws.ec2_vpc_subnet:
state: present
vpc_id: vpc-123456
cidr: 10.0.1.16/28
register: subnet_private_a
補足:
- 変更前:
0.0.0.0/0はサブネットのアドレス範囲として使用できません。パブリックサブネットにも、有効な CIDR と適切なルーティングが必要です。 - 変更後: サブネットのアドレス範囲を
10.0.1.16/28に変更しています。この範囲が VPC 内にあり、ほかのサブネットと重複しないことを確認してください。名前にprivateが含まれることやプライベート CIDR を使うこと自体は、インターネットへの経路を遮断しません。