1. はじめに
以前、Azure Log Analytics / Sentinel を用いて、送信元/宛先 IP アドレスの国情報を判定させるために、Maxmind GeoLite2 Country Database にルックアップして出力するテクニックを記事にしたのですが、
2023.6 時点で、KQL 側になんと組み込まれていました!!
geo_info_from_ip_address
を用いれば、常に Azure 基盤側で最新の GeoLite2 Database を参照することが出来るようになっています。
2. 触ってみる
Azure Firewall IDPS シグニチャ検出の送信元 IP を geo_info_from_ip_address
関数を用いて参照します。
AZFWIdpsSignature
| extend geoinfo = geo_info_from_ip_address(SourceIp)
| extend GeoCountry = tostring(geoinfo.country)
| extend GeoCity = tostring(geoinfo.city)
| extend GeoLatitude = tostring(geoinfo.latitude)
| extend GeoLongitude = tostring(geoinfo.longitude)
参照された情報は JSON で city
/ country
/ latitude
/ longitude
/ state
の情報が返されます。
参照元の GeoLite2 Country/City Database の精度に依存しますが、city
情報の精度はそれほど高くないようで、NULL
で戻ってくるケースもあるようです。
公式 Docs にも掲載が有る通り、IP Location 情報は本質的に不正確なので、あまり精度を気にせず接続元の目安が分かる程度の使い方がお勧めになります。
IP 位置情報は本質的に不正確です。場所は、多くの場合、人口の中心に近いです。 この関数によって提供される場所は、特定の住所や世帯を識別するために使用しないでください。
3. 可視化してみる
Azure Monitor ブックの視覚化「マップ」より、接続元を可視化してみます。
マップの可視化の詳細は以下公式 Docs を参照下さい。
「マップの設定」より、「国または地域」を選択し、「国/地域フィールド」の欄に KQL で集計した国情報のフィールド(上記例だと GeoCountry
)を適用します。
設定を正しく完了すると以下のようなマップ情報が表示されます。
geo_info_from_ip_address
の応答値から、緯度/経度を使ったり、国 country
ではなく都市 city
をマッピングも出来ますが、地図情報に当て込むと大きさからほとんど変わらないような気がします。
そもそも IP Location 情報の精度は参考値なので、あまり厳密に設定するのではなく、国情報レベルの可視化が良いのかもしれません。
4. まとめ
これまで Maxmind GeoLite2 Country/City DB をお客様側が用意していましたが、Azure 基盤側で提供されたことによってかなり楽になります。本記事がどなたかの参考になれば幸いです。
*本稿は、個人の見解に基づいた内容であり、所属する会社の公式見解ではありません。また、いかなる保証を与えるものでもありません。正式な情報は、各製品の販売元にご確認ください。
6.参考情報