AWSのIPアドレスを判定する

こんにちは。GMOアドマーケティングadcloud開発チームのN.Sです。
サーバへのアクセスを分析する中で、アクセス元がクライアント端末かサーバかで処理を分けたいというニーズが発生しました。
まずは試しにIPアドレスが公開されているAWSからのアクセスを調べてみようということで、今回はAWSのIPアドレス一覧の作成から判定までの流れをまとめようと思います。

▼流れは以下の通り
①AWSのWebページから取得
②JSONをパースし、整数値のレンジに変換
③実際のアクセスをレンジ内か判定

①AWSのWebページからの取得方法

AWSのIPアドレスはWebページに掲載されています。
https://ip-ranges.amazonaws.com/ip-ranges.json
JSON形式でIPv4、IPv6ごとにIPアドレスをCIDR表記でまとめられています。

②JSONをパースし、整数値に変換

ローカルに持ってきたはいいものの、JSON形式なのでこのままでは使えません。 ここではひとまずIPv4のIPアドレスを取得し、整数値のレンジとしてリストを作成します。

IpManager.java

CidrNode.java

③実際のアクセスをレンジ内か判定

さて、これでようやくアクセスが来た際に比較するためのリストができました。
あとはアクセスが来た際にIPアドレスをIpManager#existsで判断してやるだけです。

これでAWSからのアクセスを判別することができるようになります。

最後に

主にIPアドレス判定用リスト作成の話になってしまいましたが、いかがだったでしょうか。
数あるクラウドサービスの中でもIPアドレスを公開しているのは自分の知る中ではAWSくらいなのですが、他サービスも公開してくれるとアクセスを分析しやすくなるため、非常に助かります。
(セキュリティへの懸念もあるとは思いますが。)