私のソフトウェアでは、一部のユーザーが特定のセキュリティ対策を故意に無効にしたり、セキュリティを悪用したり(ソフトウェアをroot/adminとして実行するなど)しています。前者の場合、これを行うにはいくつかの正当な理由があります(開発中など)が、一般的には悪い考えです。第二に、正当な理由はありません。
セキュリティ対策が無効になっている場合は、ログインするたびにソフトウェアの通知領域に表示されるポップアップでユーザーをわざわざ煩わしくして、再度表示しないオプション(一部のマイナー機能も無効になっています)を表示します。管理者として実行する場合は、意図的に起動を5秒遅らせ、実行してはいけないというメッセージをユーザーに表示します。ソフトウェアが適切にシャットダウンされない場合も同様です。
意図的に迷惑をかけずに、本当に望まないことをしているユーザーに対処するためのより良い方法はありますか(ただし、短期間で、限られた状況では必要になる可能性があります)。
適切な間隔の後、安全な動作にリセットすることはどうですか?
たとえば、車には、再起動しても「オン」のままにできる機能がいくつかありますが、他の機能(クルーズコントロール、シートヒーターなど)は、車を始動するたびに再度有効にする必要があります。
あなたのシステムでは、ログアウト時にセキュリティ対策を再び有効にすることができます。
または、対策を無効にするように求められたときに、しばらくの間プロンプトを表示することもできます。 LastPassはこれを実行します。「パスワードを(X)分間入力しないでください」は、パスワードを入力するときに使用できるオプションです。 Sudo
も同様に機能し、過去5分間使用されなかった場合にのみパスワードを要求します。
迷惑なユーザーエクスペリエンスは、意図的かどうかにかかわらず、壊れたユーザーエクスペリエンスです。
なぜワークフローの苦労?ユーザーが(必要だと思う)なぜセキュリティをオフにするのですか?彼らは他の方法ではできないことを行うことができますか?
なぜ彼らは何をすべきではないのですか?彼らはセキュリティをオフにできるはずですか?許可ソリューションはありますか?
ユーザーが何をするのかを理解することが、この問題を解決する根本です。あなたもユーザーも、常に苛立たせたり、煩わされたりしたくありません。全体像はここにあるとは限りませんが、何が起こっているのかを理解し、インタラクションデザインを再評価するために、この経験を調査で解決することをお勧めします。
あなたが説明したことはすべて 最小特権の原則 によって対処されます。
ソフトウェアを特権ユーザーとして開始する正当な理由がない場合は、開始を完全に拒否(または)一度開始した特権を削除することを許可する構成を要求します。これは、構成または更新が誤っている場合にソフトウェアが攻撃の対象になることを防ぐため、礼儀正しい動作です。
ただし、なぜ人がプログラムを特権で実行することを望むのかを考えるには、時間をかける必要があります。彼らがそうした場合、彼らにとって何がより簡単になりますか?インストールプロセスが不完全または混乱していますか?
2番目の問題については、懸念の分離を扱っています。私は次の仮定をしています:
プッシュさせたくないボタンは表示しないでください。自動的にリセットされる事前定義された時間の間、中央認証を無効にできる管理者以外の別の種類のユーザーがいることは理にかなっていますか?おそらく、15分、30分、1時間のドロップダウンでしょうか。彼らのUIが十分に異なっていて、この設定を変更できる管理者になるためだけに開発者としてログインするのではないでしょうか?
これを行うことができれば、不在の開発者が手動で行うのを忘れた場合、ソフトウェアは安全な構成に自動的にリセットされるため、ソフトウェアも丁寧になります。
より複雑なACLがなくても、中央認証を限られた時間しかオフにできない場合は、煩わしい警告を表示する必要はありません。この状態で他の機能を低下させる可能性がありますが、場合によっては意味があります。
{無関心、無知、中毒など}の名の下に危険なことをしつこく主張するユーザーは常にいます。あなたはそれらを止めることはできません、あなたはワークフローが許す限り優雅にそれらを遅くすることができるだけです。
開発者と管理者を分離することをお勧めしますが、タイマーを中央の認証バイパスに接続するだけですぐに解決できます。
レスリーMは言った
ユーザーが(必要だと思う)なぜセキュリティをオフにするのですか?
ユーザーは怠惰です。限目。多くの場合、セキュリティ権限を設定することは簡単な作業ではないため、ユーザーは面倒を避ける傾向があります。
「ソフトウェアがセキュリティを無効にして正常に動作しているときに、セキュリティを正しく設定する方法に関与する必要があるのはなぜですか?」
したがって、基本的には、ユーザーが行う費用対効果の単純なトレードオフがあります。
シナリオ1:ソフトウェアをセキュリティなしで実行しています。利点:1)ソフトウェアの実行、2)セキュリティ設定の煩わしさ、主観的な目標の達成:100%コスト:最小。
シナリオ2:適切なセキュリティでソフトウェアを実行します。利点:1)ソフトウェアの実行、目標達成:100%コスト:1)セキュリティ設定について学習して正しく適用する必要がある、2)正しく表示されない設定に関する問題(「パスワードはまた何だったのか!」など) )
どうやら、ユーザーにとっての主観的なメリットはどちらのシナリオでも同じです。したがって、問題は次のとおりです。
好みのシナリオ(#2)でユーザーの主観的なコストを削減できますか?また、シナリオ1のコスト以下に削減できますか?
落胆したシナリオ(#1)でユーザーの主観的なコストを増やすことはできますか?
主観的なコストまたはメリットはさまざまな方法で影響を受ける可能性があります。「推奨セキュリティ対策を適用しないと、すぐにハッキングされる可能性があります」という文書内の大きな赤いステートメントは、認識されたコスト/メリットの比率をすでに優先する方向。
もちろん、より良い解決策は、シナリオ#2の主観的なコストを削減することです。おそらく、インストール/構成ツールなどを提供して、ユーザーに「正しい」手順を容易に導入できるようにすることができます。
結局のところ、私はそれをやや子供っぽいがおそらくおそらく効果的な方法で迷惑な方法で進めていると思います。決定。"
すでに述べたように、これはおそらくユーザーエクスペリエンスに関しては最善の解決策ではなく、実際には特定の割合のユーザーに対してユーザーまたはソフトウェアに悪影響を与えるでしょうが、ある程度のトレードオフを行う必要があるようです。
ほとんどのソフトウェアのコンテキストでは、あなたがやっていることは完全に合理的に聞こえますが、確かに良い考えです。これは、MySQLアカウントなどを作成する必要がある筆者が作成したソフトウェアで、他の誰かが述べたように、最小特権ユーザーの原則とまったく同じです。
しかし、それはあなたがMinecraftサーバーを制御することについて話しているように聞こえます
個人的には、私はゲームのコピーを所有していますが、友達とプレイしていて、コピーを持っていない人が終わったとき、そのゲームのインスタンスのためだけに、認証をスキップするようにビルドを変更しました。サーバーに接続しているクライアントのクラックされたコピーを許可している理由をよく知っているので、私は個人的にソフトウェアを使用してサーバーを制御していません。
あなたは「本当にやりたくないことをしているユーザーに対処する」と言いますが、私見では、ソフトウェアクラッキングの倫理観に対する見方に加えて、使用のニーズ(およびコーナーケース)を考慮する必要があります。
ユーザーが望まないことをユーザーに強制することは、開発者やシステムができる最も厄介なことです。これは趣味のプロジェクトであり、ユーザーに代わって決定するように呼ばれたと思います。これは通常、自動化傾向のある開発者/管理者が原因です-私は、プロとしてのキャリアの中で多くの人に会いました。ほとんどの場合、何かを強制する必要があることを頭に入れている人々にすべての問題が生じます。ほとんどの場合、私は特定の「セキュリティ」対策に本当の理由がないことを理解しました。
1か月前と同様に、私の銀行は、オンラインバンキングシステムにログインするための別のセキュリティ対策を導入しました。セキュリティ対策の最初の行は、ルールを守り、AVを更新したり、危険なサイトを閲覧したりせず、一般に十分賢い人々にとっては十分でした。しかし、遅延と無能の割合が少ないため、今では誰もが新しい迷惑なセキュリティ対策に対応する必要があります。銀行はそれをオフにすることを提案していません。
別の例-MailChimpは新しいセキュリティ対策も導入しました。現在、セキュリティ/パスワードのリセットに関する質問を3つ(3!)提供する必要があります。つまり本気?
私はこれらの愚かなセキュリティオーバーキルを導入しないソフトウェアを探し始めており、私が開発したソフトウェアについても同じことを行います。
明らかに、ある程度のセキュリティは重要ですが、それを合理的に維持する必要があります。