IPv4のEC2の同じENIにSG-AとSG-Bが付いている。SG-Aは全IPv4宛ての全送信をAllowし、SG-Bは送信ルールなしである。固定宛先10.30.50.10/32のAPIへ新規TCP 443接続だけを許可したい。
経路・NACL・APIの待受けは確認済みである。対象は通常の新規IPv4 TCP接続とし、AmazonProvidedDNS等のSG対象外通信や、既存tracked接続の即時切断は要件に含めない。
関連するSGの送信ルールをどう変更するか。
全関連SGの広い送信Allowを除き、固定APIのIPとTCP 443だけを許可する。
詳細解説
複数SGの許可は合算されるため、広いAllowを残さず対象IPとポートを許可する。新規接続ではどの関連SGにも他の送信許可がないことを確認する。
SG-Bを狭めてもSG-Aが他宛先を許可し続ける。SGを追加すると許可の共通部分だけになるわけではない。
SGの宛先にはIP/CIDR、prefix listや対応するSG参照等を使い、FQDNを直接指定する機能ではない。ドメイン単位の制御は別の設計が必要である。
inboundは新規の受信を制御する。EC2から開始する新規接続の宛先制限にはegressを変更する必要がある。
公式資料で確認する
以下の項目を公式資料の記述と照合して確認します。
承認された検証ENIの全SGとegressを確認する。変更前に到達できるAPIと別の検証先を用意し、変更後の新規接続でAPIの443成功、別IPや別ポートの拒否を経路・NACLと合わせて比較する。
参考にした公式資料
確認できる内容
対象APIの新規TCP 443だけが許可される。SGの許可は合算され、既存tracked接続の即時切断やAmazonProvidedDNSの遮断まで検証したとは扱わない。
理解のポイント
- Security Group egress
- CIDR
- コネクショントラッキング
確認時の注意
- 確認環境: AWS公式SOA-C03試験ガイドとAWS公式ドキュメントの確認
- AWS公式SOA-C03試験ガイドと各サービスの公式ドキュメントを確認する。
基礎のおさらい
関連SG全体のAllowを確認する
複数SGは許可を合算し、最も狭いSGで他のSGを上書きしない。SG-Aの広い送信Allowを除去し、関連SG全体で対象IPのTCP 443以外に新規送信の許可がない状態にする。SGは明示Denyを持たない。
固定IPと開始方向を確認する
本問は固定IPv4なので/32とTCP 443で表現する。FQDNをSGへ直接登録することはできず、IPが変わるサービスに同じ固定IP設計をそのまま適用しない。EC2発の接続制限はegressであり、inboundの443許可だけでは代わりにならない。
新規通信と既存状態を分ける
SGはstatefulなので、許可された送信の応答に別のinbound Allowを要求しない。ただしNACLや経路は別に成立する必要がある。tracked接続の即時切断は保証せず、新規接続で検証する。AmazonProvidedDNSもSGで遮断できる通信として扱わない。