web-dev-qa-db-ja.com

サードパーティのAPIキーを安全に保存して使用するにはどうすればよいですか?

私はここでいくつかの質問を同様の懸念をもって見ましたが、この特定の質問は質問も回答もされていないと感じたので、ここで私のケースを説明するために最善を尽くします。

問題:

  • 私が開発しているプラ​​ットフォームは、「サードパーティAPI」関数のアグリゲーターとノーマライザで構成されています。ユーザーはAPIキーを提供し、それらを保存する必要があります。
  • ユーザーはサードパーティのAPIにいくつかのAPIキーを提供する必要があります
  • ユーザーがログインしていない場合でも(バックグラウンドタスク中に)、アプリケーションはユーザーに代わってAPI呼び出しを行う必要があります。
  • サードパーティのAPIを呼び出すときは、これらのキーとシークレットのクリアテキスト形式が必要です

私のインフラストラクチャ:

  • 私は現在Heroku(httpサーバー用)を使用していますが、理論的には誰もSSHや他の手段でマシンにアクセスできないことを保証しています。
  • 私のパスは、選択された量のユーザー(理想的には2要素認証を使用)のみがコントロールパネル、つまりENV変数、つまりデータベース資格情報にアクセスできることを保証します

私の現在の計画:

  • 将来の認証のために独自のトークンを発行する別のサーバーにAPIキーを保存する
  • 自分のhttpサーバーからのAPI呼び出しのみを受け入れる(ある種のプライベートVPNを使用)
  • いくつかの選択された機能へのアクセスのみを提供し、他のサーバーで使用されるAPIを公開します。これにより、システムの攻撃面が最小限のソフトウェアがインストールされたこのマシン(最小限のnode.js http api)のみに限定されます。

私のパスの推奨:

  • Herokuを使用して「キーマネージャーservixe」を実行する
  • ENV変数にデータベース資格情報を保存し、パスダッシュボードにログインしてデータベースアドレス/資格情報を表示できる唯一の人物となる「キー管理者」以外の誰にもこのアカウントへのアクセスを許可しない

質問:

  • これらのキーを保存して使用する最も安全な方法は何ですか?
  • アドレス/資格情報が2要素認証のダッシュボードで保護されているデータベースにキーを単に保存するよりも安全なオプションはありますか?

ありがとうございました

3
kroe

あなたがあなたの質問について述べたことに基づいています。 Windowsで実行している場合は、JKSファイル、ファイル、PFXなどのプレーンな証明書ストアを使用し、ファイルシステムを保護するだけで、ファイルが保護されます。これは、秘密鍵を保存する場合ですが、アプリケーションがサードパーティサービスのクライアントである場合、必要なのは公開鍵だけであり、秘密鍵ほど保護する必要はありません。キーストアを開くには、アプリケーションにパスフレーズが必要です。ローテーション証明書など、証明書にはいくつかのセキュリティパターンがあります。

1
Hugo R