1. ホーム
  2. ruby-on-rails

[解決済み] パスワードを(平文ではなく)環境変数として設定ファイルに保存することは安全ですか?

2022-05-05 15:51:57

質問

私はrailsとdjango(と少しのphp)でいくつかのアプリに取り組んでいます。そして、それらのいくつかで私がやり始めたことの1つは、データベースや他のパスワードを特定の設定ファイル(またはdjangoアプリのsettings.py)で平文ではなく環境変数として保存することです。

このことをある共同研究者に相談したところ、彼はこのやり方は良くない、おそらくこれは一見して完璧に安全とは言えないと指摘しました。

そこで教えていただきたいのですが、これは安全なやり方なのでしょうか?これらのファイルにパスワードをプレーンテキストで保存する方がより安全なのでしょうか(もちろん、これらのファイルを公開レポなどに残さないように注意してください)。

解決方法は?

より理論的なレベルでは、私はセキュリティのレベルを次のように考えることが多い(強度の高い順に):

  • セキュリティなし。 平文です。 見る場所を知っている人なら誰でもデータにアクセスできる。
  • 難読化によるセキュリティ。 データ(平文)を環境変数や設定ファイルのようなトリッキーな場所に保存します。 攻撃者は最終的に何が起こっているのかを理解するか、それにつまずくことになります。
  • 破るのが簡単な暗号化によって提供されるセキュリティ、(シーザー暗号を考えてみてください!)。
  • 多少の努力で解読できる暗号化によって提供されるセキュリティ。
  • 現在のハードウェアでは解読が不可能な暗号化によって提供されるセキュリティ。
  • 最も安全なシステムは、誰も使うことができないシステムだ :)

環境変数とは より プレーンテキストのファイルよりも安全で、保存ではなく揮発性/使い捨てだからです。 例えば、"set pwd=whatever,"のようにローカル環境変数のみを設定し、スクリプトを実行した場合です。 スクリプトの最後にコマンドシェルを終了させるようなことをすると、その変数はもう存在しません。 あなたの場合は、最初の2つに該当し、かなり安全性が低いと言えるでしょう。 もし、このようなことをするのであれば、イントラネットやホームネットワークの外に展開することはお勧めしませんし、その場合は、テスト目的の場合に限ります。