AWS WAF の地理的一致ルールで IP アドレスを使って地域を判別する仕様について
この記事は何?
AWS WAF では、リクエスト元の IP アドレスから国や地域を判別し、その情報をルールに組み込める地理的一致ルールステートメントという機能が提供されています。
今回、この地理的一致ルールステートメントの仕様に関して、自分が勘違いしていたことを元に(自戒を込めて)記事にしました。
何番煎じかは知らないけど、自分の煎じ方で記載していますので、やさしい気持ちで読んでください。
最初に結論
この記事で伝えたいことはただひとつ!
「AWS WAF の地理的一致ルールステートメントで IP アドレスをもとに国単位で条件を設定する際は IANA や RIR の割当ではなく、MaxMind GeoIP を参照してるよ!」 ってことです!
AWS WAF に詳しい方であれば、そんなの常識だよーと思われるかもしれません。
さらに、アクセス元の IP アドレスから国を判定するサービスやツール[1]なども広く知られてきているので、人によっては当たり前の話かもしれません。
ただ、自分は理解していなかったので、記事にしました!
そもそもの話
結論は冒頭の通りですが、もうすこし用語や仕様について説明します。
AWS WAF の地理的一致ルールステートメントについて
AWS WAF については割愛しますが、その機能の中での「地理的一致ルールステートメント」の説明をします。
この機能は、WAF がリクエストや送信元の情報を精査するための条件(文字列一致ルールステートメント)のうちの一つです。
他には、IP アドレスを条件にするものや、リクエストのサイズのバイト数を比較条件にするものなどがあります。
そして、この「地理的一致ルールステートメント」はリクエスト元の IP アドレスから国や地域を特定し、その情報を条件にするものです。
例えば、この機能を用いることで、海外(要は日本以外)からのリクエストに対して、何かしらのアクションを設定できます。
また、国単位だけでなく、地域ごとの指定も可能です。細かい話ですが、各国での地域単位は ISO 3166-2 で決められた単位になります。
日本においては、ISO 3166-2:JP で決められている都道府県の単位で指定が可能です。
[2]、IANA[3]、RIR[4] について
ICANNIP アドレスは有限個しかありません。IPv4 であれば約 43 億個、IPv6 であれば約 340 澗個(3.4×10の38乗個)です。
なので、世界共通のインターネットリソースである IP アドレスを世界中で好き勝手に使用してしまうことは避けなければなりません。
それらを回避するため、インターネットリソースを管理する組織が ICANN であり、その ICANN の中の IANA[5] や RIR(または、RIR の下位組織)が主に管理を担っています。
また、RIR は以下の 5 つの組織で構成されています。
日本の IP アドレスはこの中の APNIC に所属している JPNIC が中心に管理を行なっています。
上記のとおり、すべての IP アドレスは管理されているので、ある IP アドレスがどの国に割り当てられているかが調べればわかります。
たとえば、以下で確認することができます。
自分が陥った事象
ここからは、この記事のきっかけである勘違いについて、脚色ツヨツヨで簡単にまとめておきます。
ある日のこと
ワイ「なんかアラートが出てるやん。。。原因を調べないとあかんやん。。。」
カチャカチャ、カチャカチャ、タッーーーン!(キーボードの音)
ワイ「特定の IP アドレス群から大量のアクセスが来てるやん。。。」
ワイ「IP アドレスを特定してブロックするんは、イタチごっこになるからなぁ。。。」
ポク、ポク、チーーーン(頭の中で閃いた音)
ワイ「このサービス、国内向けやさかい、海外のアクセスからだったら国単位でブロックしたろ。ワイちゃん天才でんがな!」
ワイ「よっしゃ、このアドレス群を調べて、国を割り出したろ。」
カチャカチャ、カチャカチャ、タッーーーン!(キーボードの音)
ワイ「おっ!全部、某国からのアクセスなんか、よっしゃ、AWS WAF で国指定でブロックしたろ。ぐへへ。」
設定した翌日
ワイ「また、アラートかいな。ほんま、たのんますわ。」
カチャカチャ、カチャカチャ、タッーーーン!(キーボードの音)
ワイ「あれ、某国からの大量アクセスやん。。。なんでや、昨日ブロックしたやん。。。(焦)」
ワイ「こういう時は、公式ドキュメントを見るんや。。。!!」
AWS WAF の地理的一致ルールステートメントの説明
ワイ「あっ!AWS WAF で国判定は MaxMind GeoIP データベースを参照しているだと。。。」
ワイ「た、試しに、アクセス元の IP アドレスを GeoIP で調べてみよ。。。」
カチャカチャ、カチャカチャ、タッーーーン!(キーボードの音)
ワイ「某国とは別の国やないかーい\(^o^)/」
余談:なぜ IP アドレスが払い出された国以外で使われているのか?
そもそも、IP アドレスは国単位で払い出されているのに、どうして違う国や地域が使っているのでしょうか?
それは、上でも書いた通り、IPv4 の枯渇 が起因しています。
枯渇への対応として、2011 年頃から RIR 間での IPv4 アドレスの国際移転が議論され始め、ポリシーの策定を経て、特定の地域間での国際移転ができるようになっています。
ここでは、その歴史的な詳細は記載しませんが、気になる方は調べてみると面白いかもです。
まとめ
今回の話で、以下を学びました。
- AWS WAF の地理的一致ルールでは MaxMind GeoIP を確認しよう
- IP アドレスは枯渇問題対応での国際移転されて、割当国と違う国で利用している可能性がある
- 勘や経験をもとにした判断ではなく、公式ドキュメントを参照するようにしよう
もし誰かのお役に立てられれば幸いです!
-
今回の MaxMind GeoIP だけでなく、digital element や中国の IPIP.Net などがありますね。 ↩︎
-
The Internet Corporation for Assigned Names and Numbers の略。 ↩︎
-
Internet Assigned Numbers Authority の略。 ↩︎
-
Regional Internet Registry の略。 ↩︎
-
IANA は発足当初は組織でしたが、役割・機能が ICANN に引き継がれてからは機能の名称となるようです。参考:IANA とは ↩︎

私たち BABY JOB は、子育てを取り巻く社会のあり方を変え、「すべての人が子育てを楽しいと思える社会」の実現を目指すスタートアップ企業です。圧倒的なぬくもりと当事者意識をもって、子どもと向き合う時間、そして心のゆとりが生まれるサービスを創出します。baby-job.co.jp/
Discussion