データベースにパスワードを適切に保存することについて私が見つけて読んだ情報のほとんどは、パスワードのクリアテキストを各ユーザーの一意のソルト値でハッシュし、そのハッシュをデータベースに保存する必要があると述べています。しかし、このプロセスは私のニーズには合いません...
特定のサービス アカウントを使用して、異なるデータセンター内の他のリモート マシンに接続する必要がある C# で記述された Windows サービスがあります。これらのサービス アカウントはドメイン ユーザー アカウントに似ていますが、背後に実在の人物は存在せず、特定のサーバーごとにサービス ペイロードを実行するための適切なアクセス許可を持っているだけです。サービス アカウント情報は、各アカウントのパスワードを含む SQL Server テーブルに格納されます。現在、対称暗号化 (Rijndael) を使用して DB テーブルのパスワードを難読化しています。キーは、厳密なアクセス許可を持つ別の構成ファイルに保存されます。
サービスにリモート マシンで実行するスケジュールされたペイロードがあるたびに、テーブルで適切なサービス アカウント情報を検索し、キーを使用して復号化します。基本的にこのサービスのさまざまな設定を管理するためのフロントエンドである内部 Web サイトもあり、そこで管理者はサービス アカウントのパスワードを表示および変更できます。
これは物事を安全に保つための良いアプローチですか? このスキームに明らかな欠陥はありますか?