この記事は
- 便利なgem見つけたのでメモです
やりたかったこと
- Cloudfrontの後ろにRailsが配置されている状況で、Railsのrequest.remote_ipでブラウザのIPアドレスをセキュアに取りたかったです
方法
- とりあえず下記のgem入れておけばOK
- cloudfront-rails
仕組み
- そもそもソースIP取得のためにX-FORWARDED-FORの仕組みを利用する場合、偽装対策の一環として、中間機器を「信頼されたIP」とみなして、判定時にX-FORWARDED-FORリストから除去する必要があります
- そのためにRailsでは
ActionDispatch::Railtie.config.action_dispatch.trusted_proxies
という設定値があり、ここにリバースプロキシのIPを入れるという機構があります- ここに入れておくと、X-FORWARDED-FORのIPリストから該当IPを除去してくれるという仕組みになっています
- 上記のgemは、ここで公開されているAWSのIPリストを自動的にダウンロードして、上記のRailsの設定に入れ込んでくれるというものでした
終わりに
- Rails最近ディスられやすいけど、こういうのがgem一発なのほんとやめられないよね