Railsアプリのログの一部をフィルタリング(見えないように)する

あらゆるアプリケーションにおいて、ログは非常に重要な役割を果たす。デバッグはもちろんのこと、各種不正アクセスの検知など、定期的なログの確認は、アプリ開発において重要なタスクの一つである。しかし、ログの全てを記録・保存することは、逆にアプリケーションの脆弱性を高めることになる。また一方で、不要なログが保存されていることで、ログの視認性は著しく低下する。そんな中、Railsアプリにはパスワードや不要なログなどをフィルタリング、つまり不可視化する機能がデフォルトで備わっている。

filter_parameter_logging.rbの設定

デフォルトで用意されているconfig/initializers/下のfilter_parameter_logging.rbにてフィルタリングするパラメータを記載すると、不要なログを記録しないように設定することができる。

上記のように設定することで、パスワードをログに記載しないことでよりセキュアなRailsアプリとなる。またスマートフォンなどから投稿されたバイナリファイルを記載しないことで、より視認性の高いログファイルが記録されるようになる。

以下、params[:smartphonefile]がフィルタリングされたログの一例。

通常、バイナリファイルを送信すると”smartphonefile"=>"数千行ものバイナリデータ"となり、視認性の低いログが記録されるが、フィルタリングすることで"smartphonefile"=>"[FILTERED]"と記述され、ログの確認が容易になる。

参考

雑感

システム管理者にとってログってのはめっちゃ重要で、定期的なログの確認が必須になる。独自のログ解析ツールを書く人も多いやろーし、システムトラブル時には事細かくログを確認する。そんな時にスッキリ見やすい、加えてセキュアなログ、そんなログをいつも確認したいもんやでな。

コメントを残す

メールアドレスが公開されることはありません。