[AWS Transit Gateway] マネージドサービスだけでオンプレミスからS3にプライベートアクセスしたい!
こんにちは、菊池です。
「オンプレからインターネットに出ず、プライベートなネットワークのみを経由してS3にアクセスしたい」という要望はよくあります。しかし、Direct Connectから直接S3エンドポイントにアクセスするには、敷居の高いパブリック接続が必要だったり、VPCを経由する場合はプロキシを挟む必要があったりと、かなり構築・運用のハードルが高い要件でした。
上記のエントリではプロキシをマルチAZ構成で構築することで実現していますが、EC2の構築・運用が必要です。可能ならば、構築・運用面での負荷が小さいマネージドサービスだけで実現したいところです。
その、要望が多かった、マネージドサービスによるS3へのプライベートアクセスがついにできました。Transit Gatewayを利用することで!
S3へのプライベートアクセス構成
いきなりですが、実際に検証した構成です。
ポイントは以下の2点です。
- Transit GatewayとNAT Gatewayを利用する
- Transit Gatewayのアタッチサブネットと、NAT Gatewayを配置するサブネット/ルートテーブルを分ける
クライアント側からルートの設定を見ていきます。
- カスタマールーター:S3エンドポイントのIPアドレス範囲をVPNトンネルへルーティング
- Transit Gateway:デフォルトルート(0.0.0.0/0)をVPC側のアタッチメントへルーティング
- Transit GatewayをアタッチするVPCサブネット:デフォルトルート(0.0.0.0/0)をNAT Gatewayへルーティング
- NAT GatewayをアタッチするVPCサブネット:S3のVPCエンドポイントをルートテーブルに紐付け
S3のIPアドレス範囲は、こちらから確認することができます。各ルートテーブルに設定する宛先ネットワークには、対象リージョンのS3のアドレス範囲全てか、デフォルトルート(0.0.0.0/0)を設定します。デフォルトルートを設定する方が簡単ではありますが、それとは別にインターネットアクセスが必要な場合には対象リージョンのS3のアドレス範囲全てを設定します。そもそもこの要件のユースケースとして、AWS側は完全なプライベートにしておきたいということが多いかと思いますので、それであれば上記のようにカスタマールータのみ注意しましょう。
検証
実際のアクセス検証は、バケットポリシーでVPCエンドポイント経由以外のアクセスを禁止したS3に対し、クライアントからアクセスすることで実施しました。
まずはエンドポイントのIPと、経路に問題ないか確認。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | $ nslookup s3.ap-northeast-1.amazonaws.com Server: 8.8.8.8 Address: 8.8.8.8 #53 Non-authoritative answer: Name: s3.ap-northeast-1.amazonaws.com Address: 52.219.136.2 $ traceroute 52.219.4.158 traceroute to 52.219.4.158 (52.219.4.158), 30 hops max, 60 byte packets 1 gateway (10.10.10.254) 4.586 ms 4.463 ms 4.467 ms 2 * * * 3 10.255.0.238 (10.255.0.238) 15.622 ms 15.523 ms 15.439 ms <- NAT GatewayのプライベートIP 4 * * * 5 * * * 6 * * * 7 * * * |
NAT GatewayのIPから応答が取れたので、VPNを通ってVPCを経由してます。
そしてS3へアクセス。ちゃんと応答が取れました!
1 2 3 4 | $ aws s3 ls tgw-s3-access-xxxx 2019-12-18 15:57:26 5 test .txt $ aws s3 rm s3: //tgw-s3-access-xxxx/test .txt delete: s3: //tgw-s3-access-xxxx/test .txt |
まとめ
長年の夢(?)だった、マネージドサービスだけでS3へプライベートアクセスするというのがついに実現できました。最大のポイントは、Transit Gatewayが任意のルートを書けるという点です。Transit Gatewayは今までできなかった制約を取り払い、デザインパターンを大きく変える可能性をもつサービスです。