ユーザー アカウント制御

このブログでは、Windows 7 のエンジニアリングという観点から話題を提供することを約束しました。パフォーマンスからユーザー インターフェイスまで、技術的なトピックや技術以外のトピック、シンプルなトピックや議論を呼ぶようなトピックなど、あらゆるトピックをカバーしていきます。今回は、ユーザー アカウント制御 (User Account Control = UAC)に関するポストです。執筆者は Ben Fathi (Core OS Division、副社長) です。UAC は、セキュリティ、アカウント、ユーザー インターフェイス、設計など、Windows アーキテクチャの多くの側面に関わる機能です。このポストには複数のメンバーが協力しています。

これまでどおり、ここでのポストから生まれる議論は貴重なものだと考えています。そして、今回のポストでは、控え目な読者からもコメントが寄せられるのではないか、というより、そうなると賭けてもいい (もちろん文字通りの賭けではありませんが) とさえ思っています。コメントを建設的に活かしながら、このトピックについて話し合っていきましょう。

ところで、blogs.msdn.com サーバーでは、スパムを減らすためにコメントの制御機能を使用することができます。しかし私たちはこの機能を制御しておらず、すべての「モデレータなし」オプションがオンになっています。目的から考えて、スパム保護規則を公開することはできません (また、そのような規則も知りません)。もし頂いたコメントが届かないようなことがあった場合はお詫びします。 -- Steven

ユーザー アカウント制御 (UAC) は、おそらく Windows Vista で最も論争の的になっている機能の 1 つです。なぜマイクロソフトはこのようなポップアップを追加したのでしょうか。実際にこれでセキュリティが向上するのでしょうか。誰もが単に [続行する] をクリックしているだけではないでしょうか。レドモンド(マイクロソフト本社、ワシントン州)でユーザーがレビュー担当者にフィードバックをしているのを実際に聞かれた方はいらっしゃるのでしょうか。さらに、この機能についてのテレビ コマーシャルを見た人がいるのでしょうか…

Windows 7 に向けた取り組みの中で、私たちは UAC に厳しい目を向け、ユーザーのフィードバック、データ量、ソフトウェア エコシステム、および Windows そのものを調査してきました。まずは、UAC が生まれた経緯についてと、Vista でのアプローチを見てみましょう。

UAC の「なぜ」

技術的詳細はさておき、UAC は実際には、ユーザーのコンピューターに「システム レベル」の変更が行われる前にそれをユーザーに通知し、ユーザーがシステムを制御できるようにするためのものです。「望ましくない変更」は、ファイアウォールを無効にするウイルスや、知らない間にコンピューターを支配するルートキットなどのように、悪意のあるものである場合があります。しかし、「望ましくない変更」は、家庭用コンピューターで保護者による制限をかいくぐろうとする子供や、業務用コンピューターに禁止されたソフトウェアをインストールする社員など、権限の限られた人物からのアクションである場合もあります。Windows NT は、このような変更で必要とされる管理者特権を持たない「標準ユーザー」をはじめとして、複数のアカウントタイプを常にサポートしてきました。企業はほとんどの社員に標準ユーザー アカウントを提供し、少数の IT プロフェッショナルに管理者特権を提供することができます (通常はこのようにしています)。標準ユーザーは、たとえ偶然にでも、悪意のある Web サイトの閲覧や誤ったプログラムのインストールによってシステムレベルの変更を行うことはできません。大多数のユーザーがコンピューターに加えることのできる変更を制御することにより、ヘルプ デスクに電話をかけることが減り、企業の総保有コスト (TCO) も削減されます。家庭では、保護者は子供用に標準ユーザー アカウントを作成し、保護者による制限を使用して子供を保護することができます。

しかし、企業および保護者による制限以外の場合、ほとんどのコンピューター (75%) には管理者特権をフルに備えた単一アカウントがあるだけです。これは、コンピューターには管理者が必要であるため、最初のユーザー アカウントが既定で管理者に設定されるということや、ユーザーは自分のコンピューターを管理していたいと考えるということ、を原因としています。ほとんどのユーザーが Administrator アカウントを持つことから、大部分のアプリケーションと一部の Windows コンポーネントでは、ユーザーがシステムに対してシステム レベルの変更を加えることができる、ということを前提とする環境が作り上げられてきました。この方法で作成されたソフトウェアは、上記のような企業ユーザーや保護者による制限付きのアクセス権を持つユーザーなどの標準ユーザーでは機能しません。さらに、すべてのアプリケーションにコンピューターへのフルアクセス権を与えれば、故意 (マルウェア) の場合でも、意図しない (ソフトウェアの不備) 場合であっても、システムに損害を与えるような変更が簡単に加えられる状態を、そのままにしてしまうことになります。

 

図 1. 2008 年 1 月から 2008 年 6 月までの1 つ以上のユーザー アカウントを備えたコンピューター (サーバー以外) の割合

Vista では、ユーザー アカウント制御は 2 つの重要な問題点に対処することを目的に実装されました。1 つ目は、ユーザー タイプ間でのソフトウェアの非互換性であり、2 つ目は、システム レベルの変更に関するユーザーの知識不足です。私たちは、アカウント タイプを広げて、システムの最初のアカウントの既定タイプである、“保護された管理者 (PA)”を追加しました。PA ユーザーがシステムにログインする場合は、2 つのセキュリティ トークンを与えられます。1 つ目は、ほとんどの基本特権に十分対応する標準ユーザー トークンと同じで、2 つ目は完全な管理者特権を備えたトークンです。標準ユーザーは基本トークンだけを受け取りますが、必要に応じて別のアカウントから管理者トークンを得ることができます。

ユーザーが管理者特権を必要とする操作を実行しようとしていることをシステムが検出すると、画面が「セキュア デスクトップ」モードに切り替わり、ユーザーには承認を求めるプロンプトが表示されます。画面が「セキュア デスクトップ」に切り替わるのは、悪意のあるソフトウェア攻撃が UAC インターフェイスを模倣して (UI スプーフィング)、ユーザーに UAC プロンプトで、 [はい] をクリックさせようとすることを避けるためです。デスクトップがこの「セキュアな」状態にある場合、そのような攻撃を行うことはできません。このように、保護された管理者ユーザーはすべてのシステム変更を通知され、操作を承認するために [はい] をクリックするだけです。標準ユーザーにも同様のダイアログが表示されますが、表示されるのは、操作の完了に必要な管理者特権を得るために別のユーザーの管理者資格情報 (パスワード、スマート カード PIN、指紋など) を入力することのできるダイアログです。保護者による制限を利用する家庭のシステムの場合、保護者は自分のログイン名とパスワードを入力してソフトウェアをインストールすることで、システムに追加されるソフトウェアやシステムへの変更を保護者の管理下に置くことができます。企業の場合は、IT 管理者がグループ ポリシーを使用してプロンプトを制御することで、たとえばシステムの状態を変更できないことを通知するメッセージを標準ユーザーに表示することができます。

私たちが学んだこと

私たちは常に Windows の向上に努めており、ユーザーに影響を与える領域には特に注意を払っています。ここでは、エコシステム、Windows、およびエンド ユーザーに関連するデータについて見ていきます (データそのものを取り上げてもこのポストの多くの読者が感じているかもしれない苛立ちやフラストレーションの説明にはならないことはわかっています)。

UAC は、ソフトウェア エコシステム、Vista ユーザー、および Windows 自体に大きな影響を及ぼしました。これまでのポスト中で言及されているように、ユーザーは Windows の機能をどのように使用しているかについて、いくつかの方法によって任意に匿名でデータを送信することができます (カスタマ エクスペリエンス向上プログラム、Windows フィードバック パネル、ユーザー アンケート、実地試験中のユーザー、ブログポスト、および社内ユーザビリティ テスト)。収集されたデータおよびフィードバックは、機能設計に関する意思決定の情報源となるとともに優先順位付けに役立てられます。これらのデータから、UACの影響に関して多くのことを学びました。

ソフトウェア エコシステムへの影響

UAC は、不必要に管理者特権を要求するアプリケーション数の大幅な減少をもたらしました。このことは、ソフトウェアの全体的な品質を向上させ、コンピューター上でシステムへの完全な管理者アクセス権を要求するソフトウェアが持つ本質的なリスクを軽減する要因になると思います。

Vista が使用可能になってからの数か月の間に、ユーザーは「セッション」の 50% で UAC プロンプトを経験しました。セッションとは、ログオンからログオフまでの間、または 24 時間の中で起こるすべてのことです。また、775,312 の一意なアプリケーション (注: これは Windows がサポートする一意なソフトウェアの数です) でプロンプトが生成されました (インストーラーとアプリケーション自体は同じプログラムとして数えられていません)。これは大きな数のように見えます。ソフトウェア エコシステムの多くが動作のために不必要に管理者特権を要求していたことから、この数は確かに大きなものだと言えます。ソフトウェアが更新されるのに伴い、管理者特権を必要とするアプリケーションははるかに少なくなっています。2008 年 8 月からのカスタマ エクスペリエンス向上プログラムのデータでは、プロンプトを生成するアプリケーションとタスクの数は 775,312 から 168,149 まで減少しました。

 
図 2. UAC プロンプトを生成する一意なアプリケーションとタスクの数

この減少は、より多くプログラムが、実行のたびにプロンプトを出したり、偶然に管理設定やシステム設定を変更したりすることなく、標準ユーザーで正常に動作することを意味します。さらに、私たちは、コンピューターの使用期間が長くなるほどユーザーが新しいソフトウェアをインストールしたり Windows の設定を行ったりする頻度が低くなり、結果としてプロンプトが少なくなると期待しています。逆に、コンピューターが新しいときには、管理ニーズという意味では通常より多くの作業が行われると考えられます。カスタマ エクスペリエンス向上プログラムのデータでは、Vista SP1 では 1 つ以上の UAC プロンプトが発生したセッションの数が 50% から 33% に低下したことが示されています。

 
図 3. 時間の経過に伴う“プロンプトあり”のセッションの割合

Windows への影響

すぐに現れた UAC の成果は、Windows のエンジニアリング品質の向上でした。現在では、システムへのフル アクセス権を持つ Windows コンポーネントの数ははるかに少なくなりました。また、現在もシステムにフルにアクセスする必要のあるすべてのコンポーネントは、ユーザーに許可を求めなければならなくなりました。データから、すべての UAC プロンプトの約 40% を Windows 自体が占めていることがわかっています。最も頻繁に表示されるプロンプトに注目してみると、このことがよりよくわかります。Windows コンポーネントは、Vista では、トップ 50 の UAC プロンプトのうちの 17 を占めていましたが、Vista SP1 ではトップ 50 のうちの 29 を占めています。Vista SP1 で目標とされたいくつかの改善により、コピー エンジンなどの頻繁に使用されるコンポーネントで Windows プロンプトが削減されましたが、さらに多くのコンポーネントで明らかに削減が可能であり、私たちはそれを行うつもりです。エコシステムでもプロンプトの削減に熱心に取り組んだため、トップ 50 のリスト内で Windows コンポーネントが占める数は増加しました。Windows には、Windows 7 でより根本的なアーキテクチャ変更の機会があるため、Windows 7 では Windows コンポーネントのプロンプトのさらなる減少が期待できます。ソフトウェア エコシステムと Windows におけるプロンプトの削減は、ウィンウィンの提案です。これにより、ユーザーは、システムを潜在的に不安定にさせるような変更を行わないソフトウェアの選択肢が広がったことに確信が持てるようになります。また、重要なプロンプトをより簡単に識別できるようになるため、ユーザーはシステムを管理下に置いていることについて、さらに自信を持つことができます。

多くのフィードバックが寄せられた 1 つの重要な領域に、Internet Explorer からのダウンロード中に発生するプロンプトの数があります。これは、アプリケーションのセキュリティ ダイアログとユーザー アカウント制御が重なった、よく見られる状況の具体例です。XP Service Pack 2 以降、IE は、インターネット プログラムを実行する前にユーザーに警告を発するセキュリティ ダイアログを使用しています。Vista では、多くの場合、これによって IE のセキュリティ ダイアログの後ですぐに UAC のダイアログが表示される二重プロンプトが発生しています。これは適切に対処すべき領域です。

 
図 4. 時間の経過に伴うトップ 50 内に占めるマイクロソフト プロンプターの数

ユーザーへの影響

デバイス マネージャの起動、ソフトウェアのインストール、ファイアウォールの無効化などの通常の操作に余分な 1 クリックがあると、ユーザーは紛らわしく感じたり、いらいらしたりする場合があります。ここに、Windows フィードバック パネルで受け取ったフィードバックの代表例を示します。

  • 「私がコンピューターに実行するように命令したことについて何度も確認されるのはいやだ。」
  • 「私が PC 上で実行するあらゆることに Vista から承認を求められているようで、腹が立つ。」
  • 「どんな変更にも常に入力を求められるのはうっとうしいが、子供が何かを変更しようとしたときにパスワードを聞いてくるので、それは良いことだと思う。」
  • 「とてもわかりにくく、面倒なこともあるので、ユーザー アカウント制御を簡略化してほしい。」

クリックが 1 つ増えることで、特にシステムに何が起こっているのかよくわかっている知識豊富なユーザー (またはやりたいことをただ終わらせようとしているユーザー) が面倒に感じる場合があることは理解できます。しかし、マルウェアや不備のあるソフトウェアが姿を現し、システムに潜在的な損害を与える前にユーザーの承認を得なければならないという意味では、UAC はほとんどのユーザーにとって潜在的な利点を持つ機能です。

これでシステムはよりセキュアになるでしょうか。すべての Windows ユーザーがあらゆる操作の因果関係を理解しているエキスパートだったとしたら、UAC プロンプトは本当に意味あるものとなり、悪意ある存在が滑り込む余地はありません。しかし、現実には、プロンプトを読まないためにプロンプトから利益を得られない (そして単にプロンプトを面倒に思う) ユーザーもいます。Vista では、UAC を無効にしている (一般に見つけにくい設定とされていますが) パワー ユーザーもいます。私たちはこれを推奨しませんが、UAC を無効にする機能を評価するユーザーの気持ちもわかります。しかし、そうではなく、UAC プロンプトを読んで何が起こっているのかを理解しようとするユーザーの場合は、時間をかけて各プロンプトを分析し、それが望ましいことかどうかを判断するようにすれば、確実なセキュリティ上の利点を得られる可能性があります。ただし、私たちはこれまで、UAC をユーザーにわかりやすくしていませんでした。Vista の中のダイアログは解読しにくく、多くの場合覚えられない内容になっています。私たちが行なったあるラボ研究では、Vista で UAC ダイアログが表示された理由について詳しく説明できた参加者は 13% だけでした。質問されたときに、ダイアログを見たことを覚えていない参加者もいました。また、消費者管理担当者が Vista のプロンプトの 89% および SP1 のプロンプトの 91% に賛成していることもわかりました。私たちは当然、多数のプロンプトが出るためにユーザーが習慣で応答してしまい、重要なプロンプトに的を絞って自信を持って意思決定することが難しくなっているということに関心を寄せています。多くの人はそんなことは完全に予測の範囲内だと言われるでしょう。

 
図 5. 時間の経過に伴うプロンプト タイプごとのプロンプトの割合

 
図 6. 時間の経過に伴う許可された UAC プロンプトの割合

今後の展望

データとフィードバックが揃ったところで、そろそろ UAC の今後の発展について考えてみましょう。私たちはこれまでどおり、UAC に関して私たちが掲げている目標は好ましいものだと考え、この目標に反しない解決策を探すことこそ私たちの仕事だと自負しています。UAC はユーザーがシステムを管理下に置き、長期間の保有コストを削減し、ソフトウェア エコシステムを改善できるようにするために作成されたものです。これまでにわかったことは、Vista はその目標へ向かう途上にあり、私たちがその目標に反したことをしたと考えている人もいるということです。

私たちは、データおよびフィードバックから学んだことに基づき、Windows 7 では次の重要な問題点に対処する必要があると考えています。

  • 重要なプロンプトが簡単に識別できるように、Windows とエコシステムの不要または重複したプロンプトを削減する。
  • ユーザーがさらに自信を持ってシステムを管理下に置いていると感じられるようにする。
  • ユーザーが自信を持って選択を行えるようにプロンプトに詳細な情報を示す。
  • 制御をより容易にかつ明確に行えるようにする。

UAC がエコシステムと Windows にもたらした利点は明白であるため、私たちはそれが機能し続けるようにしなければなりません。標準ユーザーでより多くの作業を可能にしたことにより、UAC はシステムへの操作を一定ユーザーのみに限定して IT 管理者や保護者がより大きな制御権を得るようにするという目標を達成しました。上記のデータで示されているように、不必要に管理者特権を要求する外部アプリケーションと Windows コンポーネントの数は大幅に減少しました。これにより最も多く頻繁に寄せられる苦情である、表示されるプロンプト総数の削減、という直接の利益も得られました。また、将来的には、私たちはユーザーにとって最も重要だと思われるシナリオに着目して、そのようなシナリオに不要なプロンプトが含まれないようにしていきます。さらに、私たちは、「トップ プロンプター」 (最も多くプロンプトを出すもの) に着目し、サード パーティ ソフトウェア メーカーおよびマイクロソフト社内チームと引き続き協力しながら、不要なプロンプトをさらに削減していきます。

さらに重要なこととして、UAC を Windows 7 用に進化させる中で、私たちはプロンプトそのものに関するユーザーのフィードバックや満足度の問題に対処していきます。ユーザーにフラストレーションがたまっているという強い意見をはっきりと聞きました。ユーザーは、プロンプトが頻繁すぎ、面倒で、紛らわしいと感じておられるようです。それでも私たちは、ユーザーがシステムにどのような変更が起こりうるのかを制御できるようにしたいと考えています。ただし、それは、全体としてより良いユーザー エクスペリエンスによってです。2 つの重要な原則に重点を置くことで、これを達成できると信じています。1) UAC 通知に対するユーザー制御の範囲を広げる。システムに加えられる変更について、引き続きユーザーが制御できるようにしますが、Windows 7 では、管理者としてシステムを使用している場合には、受け取る通知の範囲を決定できるようにするなどのオプションも提供します。2) ユーザー インターフェイスでより多くの関連情報を提供する。ダイアログの UI を向上させ、ユーザーがより深い理解と多くの情報によって選択を行えるようにしていきます。社内ユーザビリティ テストを通じて、すでにこの原則に基づいた新しい設計概念を現実に動作させ、非常に肯定的な結果を得ています。参加者の 83% は UAC ダイアログが表示された理由について詳しく説明することができました。新しい概念は「シンプル」で、「確認済み発行元を強調」し、「ファイルの元の場所を提示」し、「意味のわかる質問を表示する」ことから、参加者は新しい概念の方を好みました。

最後に、これまでUAC の機能に対して肯定的な反応と否定的な反応の両方を得てまいりました。引き続き、UAC が標準ユーザーのエージェントとして、システムをよりセキュアなものにするために提供する利点を増強していく予定です。そうすることで、使い勝手の向上を求める皆様からの非常に多くのフィードバックに対しても、お応えしていくことができると考えています。

Ben Fathi