web-dev-qa-db-ja.com

Webアプリケーションのサーバー側でユーザー固有のメールサーバー資格情報を安全に保存する方法

私は、ユーザーがアクションを実行したときに電子メールを生成するasp.net Webアプリを持っています...これらの電子メールは通常、他のユーザーへの通知であり、何かを表示または実行する必要があります。ユーザーは会社の内部でも外部(下請け業者)でもかまいません。

これらの電子メールはデータベースに保存され、電子メールサービスによって取得されます。データベースと電子メールサービスは、多くの場合、Webアプリとは別のサーバー上にあります。

これまでのメールサービスでは、一般的なアカウントからメールを送信するか、送信者をユーザーのメールに設定して、直接送信されたように見せていました。

私が抱えている問題は、新しい顧客の設定のいくつかは、どこかから送信されたと主張され、実際にはどこかから送信された電子メールを許可しないということです。私が見ている解決策は、ユーザーにsmtp設定を入力してもらい、サービスがこれらの設定を使用して実際にそのユーザーからメールを送信することです。 ...しかし、サービスがそれらを取得できるように、パスワードを含むsmtp設定を安全に保存できる必要があります。

誰かが設定を安全に保存する方法を提案できますか、それが不可能な場合は、他にどのようにこの問題に取り組むことができますか?

前もって感謝します。

4
RazorUK84

しないでください。リスクを取らないでください。

たとえば、JiraはFrom: <user name> [email protected]およびreply to: [email protected]

次に、ユーザーはfromに適切な人物の名前を表示し、正しいメールに返信します。メッセージはドメインから送信されます(Jiraをドメインに置き換えます)。次に、ドメインで、DKIM、DMARC、および適切なSPFを使用していることを確認します(Amazon SESおよびSendgridは、適切に構成されたSMTP配信を外部委託するための優れたオプションです)。

これで、ドメインの評判が良いため、受信メールサーバーがドメインからのメールを信頼することを決定できます。そして、ユーザーはそれが彼らの友人から来ているように見えるメールを受け取ります。

5
Jonathan

資格情報を保存する必要がある場合(この場合は必要ないと思います)、次のことを行う必要があります。

  1. それらを暗号化し、
  2. キーを保護する
  3. 復号化を監視する

Hashicorp VaultやHSM(ハードウェア暗号化モジュール)などのマイクロサービスを使用すると、暗号化サービスを除いて、キーとデータを別々に保つことができます。

0
Jonathan