説明
CloudFormationのAWS::DMS::ReplicationInstanceでPubliclyAccessibleをtrueにすると、レプリケーションインスタンスにパブリックIPアドレスが割り当てられます。省略した場合もデフォルト値はtrueです。パブリックIPが不要なら、明示的にfalseを指定し、プライベートIPを使う構成にしてください。
パブリックIPが必要かどうかは、ソースとターゲットのシステムへの接続方式によって異なります。実際の外部アクセスは、サブネット、ルーティング、セキュリティグループ、ネットワークACLなどの設定に左右されます。パブリックIPがあるだけで、データや認証情報が公開されるわけではありません。
想定される影響
- パブリックIPとネットワーク規則が組み合わさって不要な外部接続を許可していると、レプリケーションインスタンス上で到達可能なサービスの公開範囲が広がる可能性があります。
- 一時的な移行用インスタンスと外部接続を許可する規則を作業後も残すと、不要なアクセス経路が維持される可能性があります。
対処方法
- ソースとターゲットのエンドポイントに必要な接続方式を確認してください。パブリックIPが不要なら、
PubliclyAccessibleを明示的にfalseにし、必要なサブネット、経路、セキュリティグループも構成してください。 - CloudFormationでこのプロパティを変更すると、レプリケーションインスタンスの置き換えが必要です。 適用前に、置き換えの手順、レプリケーションタスクの継続、エンドポイントへの接続を計画して検証してください。
- セキュリティグループとネットワークACLを実際に必要な通信だけに制限し、作業が終わったらインスタンスと関連するネットワーク規則を削除してください。
falseという設定だけで、すべての通信がプライベート経路を使うとは判断しないでください。
例
以下はパブリックIPの設定を比較する例です。EngineVersion: "3.4.3"は以前のリリースのため、デプロイ前にサポートされているバージョンを確認してください。どちらもサブネットとセキュリティグループの構成を省略しており、完全なデプロイ手順ではありません。
パブリックIPを使用する構成
yaml
Resources:
ReplicationInstance:
Type: "AWS::DMS::ReplicationInstance"
Properties:
ReplicationInstanceIdentifier: my-replication-instance
ReplicationInstanceClass: dms.r5.large
AllocatedStorage: 100
EngineVersion: "3.4.3"
PubliclyAccessible: true
パブリックIPを使用しない構成
yaml
Resources:
ReplicationInstance:
Type: "AWS::DMS::ReplicationInstance"
Properties:
ReplicationInstanceIdentifier: my-replication-instance
ReplicationInstanceClass: dms.r5.large
AllocatedStorage: 100
EngineVersion: "3.4.3"
PubliclyAccessible: false
説明:
- 最初の例:
PubliclyAccessible: trueはパブリックIPの使用を指定します。外部から実際に到達できるかは、ネットワーク経路と許可される通信によって異なります。 - 次の例:
PubliclyAccessible: falseはパブリックIPを使わない構成です。必要なソースとターゲットへの接続とセキュリティグループを別途設定し、検証してください。