はじめに
セキュリティーグループのアウトバウンドは設定しないことが多いですが、
セキュリティー要件が厳しいシステムだと細かく制御を求められることがあります。
そんなとき、
「VPCエンドポイント宛の通信ってどうやって指定するんだ??」、
「そもそもVPCエンドポイントにIPアドレスあったっけ??」なんてお悩みがわきませんか??
本記事はそんなお悩みをもった方に向けたものです。
また以降の図ではクライアント側はEC2としていますが、ECSやLambda(VPC内)などセキュリティーグループをアタッチできるリソースは同様の設定方法となります。
1.インターフェース型VPCエンドポイントの場合
・VPCエンドポイントのIPアドレスを指定する
まずは素直にIPアドレスを指定する方法です。
インターフェース型のVPCエンドポイントは作成時に指定したサブネット内にてENIが作成されVPCエンドポイントに割り当てられるので、ENIのプライベートIPアドレスを指定することができます。
またこのENIはVPCエンドポイントを削除しない限りは消えないため、IPアドレスが変化することもありません。
またVPCエンドポイントを複数作成する場合は、VPCエンドポイント用のサブネットを用意してサブネットのIP CIDRごと許可する
、といったアプローチも考えられます。
こうすることで設定値の煩雑さを多少軽減できます。
・VPCエンドポイントのセキュリティーグループを指定する
次にVPCエンドポイントに割り当てたセキュリティーグループのID
を指定する方法です。
個別にIPアドレスを設定する必要もなく、
他のVPCエンドポイントとセキュリティーグループを共有することもできるので、
IPアドレス指定に対する熱いこだわりがなければ、この方法がおすすめです。
2.ゲートウェイ型VPCエンドポイントの場合
・マネージドプレフィックスリストを指定する
ゲートウェイ型VPCエンドポイントはENIは存在せず、宛先がグローバルIPアドレスとなります。
例として、S3で利用されているIP CIDRのリストは以下ドキュメントに記載があります。
愚直に上記でIP CIDRを調べて設定してもいいですが、
AWS側が予め各IP CIDRを設定したマネージドプレフィックスリストを用意してくれているので、ありがたく使いましょう。
セキュリティーグループの送信先としてS3のマネージドプレフィックスリストのIDを指定すれば、一括でS3で利用されているIP CIDRを許可できます。
余談ですがマネージドプレフィックスリストはリージョンごとに固定であり、今現在東京リージョンのIDはpl-61a54008
です。
3-最後に
以上、セキュリティーグループのアウトバウンドルールでVPCエンドポイントを指定する方法でした。
また本記事では記載しませんでしたが、
VPCエンドポイント側のセキュリティーグループのインバウンドルールで、接続元のIPアドレスを設定する
ということもできます。
正直、個人的にはそこまで細かく制御する意味は薄いと思いますが、
セキュリティー要件の厳しい案件に出会った際は設定を検討してみてください。