Railsのログに個人情報などのカラム情報を記録しない方法
概要
皆さんはRailsのログを見ていますか?
開発中であれば、Railsのログはlog/development.log
のような場所に書かれていることが多いです。
実際にログを見てみるとデータベースへのSQLクエリを見つけることができ、INSERT文ではどのようなデータを挿入しようとしているのか確認することができます。
このようなことが分かるということは、ユーザアカウントを登録する際のパスワードのような個人情報がログに記録されているということになります。
そこで、セキュリティの向上のために、ログに特定のSQLクエリのカラム情報を記録しないようにする方法を紹介します。
環境
- Rails 5.1
方法
実は、カラム名がpasswordのデータについては、ログに情報が記録されません。
なので、このpasswordを記録しないようにしている方法と同じようにして、個人情報などが保存されるカラムの情報をログへ記録しないようにします。
この設定は、config/initializers/filter_parameter_logging.rb
というファイルで設定します。
filter_parameter_logging.rb
を見てみると、このようになっています。
# Be sure to restart your server when you modify this file.
# Configure sensitive parameters which will be filtered from the log file.
Rails.application.config.filter_parameters += [:password]
このように、ログへ記録しないようにする指定は、Rails.application.config.filter_parameters
を使います。
すでに、:password
のように書かれているため、カラム名がpasswordの場合にはログへ記録されないようになっています。
例えば、カラム名がemailの場合にはカラム名を追加してログへ記録されないようにします。
Rails.application.config.filter_parameters += [:password, :email]
まとめ
ログに個人情報のようなものを記録しないでおくと、ログの共有や分析がしやすくなります。
さらに、ログの流出による情報の流出も最小限に抑えることができます。
意外と忘れやすいことだと思うので、気をつけてやっておきたいことのひとつだと思います。