Securing Java Cloud Computingのアプリケーションデータ に関するこの投稿は、Java KeyStoreを使用して、ただし、コメントの1つで述べられているように、クラウド上のキーストアのパスワードをどのように保護しますか?
AWSパブリッククラウドでSAASウェブアプリケーションを設計しています。これには、多くのエンドユーザーがいます(数百万にスケーリング)。すべてのユーザーデータは、ユーザーごとに標準の暗号化で暗号化されます。パスワードで保護された暗号化キーは、リモートの安全なキーサーバーに保存されます。アクセスするには、API秘密キーが必要です。これは上記の質問で述べたのと本質的に同じ問題があり、キーサーバーAPIの秘密鍵はキーストアのパスワードに直接相当します。クラウド上のキーサーバーAPIの秘密鍵をどのように保護しますか?
Webアプリケーションは、ユーザーデータを暗号化および復号化するためのユーザーごとのキーを取得できるように、この秘密キーにアクセスする必要があることに注意してください。私たちはAES-256対称暗号化を使用していますが、秘密鍵を保護する必要があるため、PKIソリューションでも根本的な問題が残っています。また、リモートのキーサーバーの代わりにキーストアを使用することもできますが、これは前の質問に戻り、基本的な問題が残っています。
さらにいくつかの制約:
では、シークレットをクラウドに保存するためのベストプラクティスは何ですか? Webアプリはこのような秘密をどのようにロードする必要がありますか?私は特にJava=ソリューションに興味がありますが、これはどの言語でも一般的な問題です。
「クラウド内」とは、「契約関係にある大企業のインフラストラクチャ上で実行される仮想マシン上」を意味します。定義により、「クラウド」に物を保存するとき、あなたはtrustingクラウドプロバイダーです。そのプロバイダーは、コードとデータの内臓の細部、およびこれらのマシンに格納されているすべてを細かく調べる技術的な力をすべて持っています。
それは、全身麻酔下ですでに手術台にいて外科医がメスを手にしているときに、身体の完全性を維持しようとするようなものです。外科医を疑うのは少し遅れます...
秘密が重要な場合は、クラウドに保存しないでください。別の言い方をすると、専用のハードウェアサーバーの追加コストを支払う余裕がない場合、秘密データcannotはそれだけの価値があります-またはおそらく自分の利益のためにあまりにも貪欲です。