
私は、自分のアプリケーションが (データベースに接続するために) 読み取ることができるが、管理者権限のないユーザーは読み取ることができないように、データベース パスワードを作業マシンに保存する方法を探しています。管理者がパスワードを変更できるようにする必要があります (できれば自動的に)。
私が考えているのは、PostgreSQL の .pgpass ファイルLinux 環境では、Windows 環境でも同様に可能ですか?
パスワード ファイルは管理者のみがアクセスできるようにできると思います。しかし、ユーザーが実行できるプログラムもこのファイルにアクセスできますか? さらに、グループ ポリシーを使用して、このようなファイルをネットワーク経由で配布することは可能ですか?
私が考えている他の解決策(おそらくもっと手間がかかります):
- パスワード ファイルを暗号化します。ファイルを復号化して変更/読み取りできる有効なキーを持っているのは、アプリケーションと管理者だけです。
- ネットワーク リソースからパスワードを取得します。パスワードも暗号化されていると思われます。
答え1
管理者のみのアクセスに関するご質問への回答です。
Windows は、ユーザーの権限でサービスを実行します (管理者または別のユーザーとして明示的に実行しない限り)。そのため、ユーザーがファイルにアクセスできない場合は、プログラムもアクセスできません。
グループポリシーの質問に対する回答:
はい、グループ ポリシーを使用して、グループ ポリシーの基本設定を通じてファイルを配布できます。(参照:https://www.adamfowlerit.com/2016/07/group-policy-preferences-replace-existing-file/)
答え2
興味のある方のために:私は次の解決策を思いつきました。
パスワードは XML ファイル (「パスワード コンテナ」) に暗号化されて保存されます。コンテナは管理者パスワードを使用して開いたり編集したりできます。暗号化は対称的です。コンテナはネットワーク ディレクトリ内のネットワーク リソースに配置されます。
アプリケーションにはパスワード コンテナーの場所が与えられ、管理者パスワードがコード内に保存されているため、パスワード コンテナーを開くことができます。
パスワードをコード内に保存してはならないため、このソリューションは 100% 安全ではないことは承知しています。ただし、これらの要件 (データベース パスワードはユーザーから隠す必要がある、データベース パスワードは管理可能である必要がある) を満たすには、このソリューションで十分です。