[AWS Transit Gateway] マネージドサービスだけでオンプレミスからS3にプライベートアクセスしたい!

こんにちは、菊池です。

「オンプレからインターネットに出ず、プライベートなネットワークのみを経由してS3にアクセスしたい」という要望はよくあります。しかし、Direct Connectから直接S3エンドポイントにアクセスするには、敷居の高いパブリック接続が必要だったり、VPCを経由する場合はプロキシを挟む必要があったりと、かなり構築・運用のハードルが高い要件でした。

上記のエントリではプロキシをマルチAZ構成で構築することで実現していますが、EC2の構築・運用が必要です。可能ならば、構築・運用面での負荷が小さいマネージドサービスだけで実現したいところです。

その、要望が多かった、マネージドサービスによるS3へのプライベートアクセスがついにできました。Transit Gatewayを利用することで!

S3へのプライベートアクセス構成

いきなりですが、実際に検証した構成です。

ポイントは以下の2点です。

  • Transit GatewayとNAT Gatewayを利用する
  • Transit Gatewayのアタッチサブネットと、NAT Gatewayを配置するサブネット/ルートテーブルを分ける

クライアント側からルートの設定を見ていきます。

  1. カスタマールーター:S3エンドポイントのIPアドレス範囲をVPNトンネルへルーティング
  2. Transit Gateway:デフォルトルート(0.0.0.0/0)をVPC側のアタッチメントへルーティング
  3. Transit GatewayをアタッチするVPCサブネット:デフォルトルート(0.0.0.0/0)をNAT Gatewayへルーティング
  4. 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は今までできなかった制約を取り払い、デザインパターンを大きく変える可能性をもつサービスです。

PRもっと安く使いたい