サードパーティのクラウドサービスからユーザーのドキュメントを同期するMacアプリを構築しています。設定すると、すべてのドキュメントがローカルハードディスクに同期され、その時点でFinderでアクセスできるようになります。
この質問の目的のために、私がサードパーティのDropboxクライアントを構築していると想像できます。私はそうではありませんが、この質問には十分な近似値です。重要な点は、私がクラウドサービスを制御していないことと、同期された後はFinderを介してデータにアクセスすることです。
後の時点で、サーバーがOAuthトークン/保存されたパスワードを拒否し、ユーザーが機能するパスワードを提供できないとします。一定の試行回数または一定の時間が経過した後合格、誤用を防ぐために同期されたすべてのドキュメントを削除する必要がありますか?
シナリオ1:攻撃者はユーザーのパスワードを推測し、それを使用してアプリからクラウドサービスにログインし、ユーザーのドキュメントにアクセスします。ユーザーは自分のパスワードを知り、変更したり、認証トークンを取り消したりします。この時点で、ユーザーは自分のドキュメントを攻撃者のハードディスクから削除することを望んでいます。または、ユーザーがラップトップを誰かに販売/譲渡/貸し出し、私のアプリからのログアウトを忘れて、後でそれを認識してパスワードを変更したり、認証トークンを取り消したりした場合、同期済みのドキュメントをから削除する必要があります。ラップトップのハードディスク。
シナリオ2:ハッカーがアカウントを乗っ取り、ユーザーをロックアウトします。または、クラウドプロバイダーがミスを犯し、ユーザーをアカウントからロックアウトします。次に、ユーザーは、貴重なデータにアクセスできなくなるのではなく、ローカルハードディスクにデータをバックアップする必要があります。
既存の同期されたドキュメントをすべて削除すると、シナリオ2でユーザーが失敗しました。同期されたデータをすべて削除しないと、シナリオ1でユーザーが失敗しました。
これに関するベストプラクティスはありますか?ユーザーがログインできなくなった場合にクラウドサービスのクライアントが行うべき一般的なガイドラインは?
ユーザーが私のアプリではなくFinderを介してデータにアクセスするため、Macのハードディスクにデータを保持することはできませんが、アクセスを拒否することに注意してください。データを削除するか削除しないかを選択できます。
ユーザーを管理し続ける必要があります。そうは言っても、次のことができます。
このようにして、ユーザーは自分のファイルを管理し、ログアウトに失敗したときに他のデバイスからファイルを削除できます。
これは機能である必要があります。たとえば、コントロールパネルのユーザーは、ファイルを同期しているさまざまなデバイス/場所を確認でき、ログインに失敗したときにバックアップを消去する場所/デバイスを選択できます。
これにより、ユーザーは、最初にすべてのデバイスでパスワードを更新し、同期が新しいパスワードで機能した後、他のすべての場所からの削除を要求できるようになります。
最も単純なシナリオでは、バックアップを削除するのは適切ではありません。これは、ユーザーをほこりの中に置き、制御できなくなるためです。
シナリオ1は、攻撃者が愚かである場合にのみ機能します。男が誰かのパスワードを盗んで自分のマシンのクラウドフォルダを同期することに成功した場合、次にすべきことは、盗まれたデータのコンテンツを保存することです他の場所同期を確認するためだけに問題はそれを変えることができませんでした。
その場合、同期されたフォルダを消去しても効果はありません...
データを削除するのではなく、ローカルバージョンのデータを暗号化する方が速く、安全で、簡単です。クライアントは復号化キーをローカルハードディスクに書き込むことはなく、認証するたびにサーバーからダウンロードします。
クライアントがサーバーから切断された場合、クライアントは復号化キーにアクセスできず、事実上削除されます。クライアントが再接続すると、再認証して復号化キーを取得できます。
さらに、クラウドサービスが一方的に切断された場合や、ハッカーがユーザーを切断した場合に備えて、復号化用のバックアップキーを保持するようにユーザーに指示することができます。
これの欠点は、キーを取得するためにプログラムの起動時にクライアントをサーバーに少なくとも1回接続する必要があることです。そうしないと、ユーザーがクラウドサーバーに接続するか、バックアップキーを入力するまで、ユーザーのフォルダーにアクセスできません。