開発者からデータベースのパスワードを保護する

開発者からデータベースのパスワードを保護する

私の職場には、データベースを使用するアプリケーションがあります。現在、ユーザー名とパスワードを使用して認証しています (信頼できる IP 接続を使用することもできますが)。アプリケーションとデータベースが存在する特定のマシンの IP を使用して移動を行うため、信頼は使用しません。

現在、アプリケーションの構成ファイルに設定されているユーザー名/パスワードを適用しているため、システム管理者である私の上司と、その部下 6 名 (私がチーフ) に加えて、開発者もパスワードを把握しています。これは、私たちの誰かが交代で管理者となり、アプリケーションの保守と展開を行っているためです。そのため、パスワードを安全に保つリスクは私たち全員にあります。

私がしたこと 最近、パスワードをより頻繁に変更するようになりましたが、このパスワードを自分だけが知っているようにしたいのです。上司の指示により、データベースで直接クエリを実行できるのは私だけです。上司でさえ、それを直接知る必要はありません (私が不在で記録に残っている場合など)。私は、以下のことを実行しようと考えました。

  1. アプリケーションのみが読み取り可能なテキスト ファイルをサーバー上に作成します。
  2. 開発者に、プレーンテキスト パスワードについてはこのファイルを参照するようにアプリケーションをコーディングしてもらいます。
  3. アプリケーションはこれを使用してログインします。

開発者がアプリケーション内にパスワードを公開するコードを保存していれば、開発者はパスワードを公開できるのではないかと考えています (開発者が悪意を持っているわけではなく、私たちは集団的なリスクを集団的に合理化しようとしているだけです)

質問 このアプローチを完璧にするより良い方法はありますか。また、これ以外に使用できる別の方法はありますか。

プラットフォーム: Linux (Ubuntu Server)、PostgreSQL、Java

答え1

古い Unix/Linux の方法は次のとおりです。

vi /etc/my_app.conf
database_ip=192.168.123.123
database_instance=db1
database_user=my_app
database_password=secret_in_plaintext

これですぐに問題が解決するわけではありませんが、将来的にはまったく同じアプリケーションバイナリ(war/jar)をデプロイすることができます。違うアプリケーション サーバー (本番、プレ本番、テスト、開発)。これらはすべて異なるデータベース (本番、プレ、テスト、開発) を持つことができます。この方法では、開発者は最終的に本番にアクセスする必要がまったくなくなります。

関連情報