WindowsのUACという機能について

WindowsにはUAC(User Account Control)というセキュリティに関連する機能が存在します。これはVistaから導入された機能で、ユーザーの意図しない動作によってシステムが破壊されてしまうことを防ぐための機能の一つです。

0. これ見ればいいよってまとめ

  • 従来のWindows
    • ユーザー権限とユーザーが一対一対応
      • 管理者ユーザーなら管理者権限で、通常ユーザーなら通常権限で操作を行う
    • セキュリティ的には重要であるにもかかわらず、通常ユーザーと管理者ユーザーの使い分けという運用があまりなされなかった
      • 管理者権限を利用する必要のあるソフトウェアは一定数存在し、いちいちユーザーの切り替えが必要な運用は面倒だった
      • 利用範囲という観点からは管理者ユーザーのほうが通常ユーザーよりも広く、大は小を兼ねる的理屈で管理者ユーザーを使うユーザーが多かった
      • 管理者ユーザーで通常利用を行うと、ウィルスが管理者権限で実行されるというセキュリティリスクが存在した
  • Windows Vista以降
    • ユーザー権限とユーザーが一対一対応ではなくなった
      • 管理者ユーザーは管理者権限と通常権限の両方を、通常ユーザーは通常権限のみを保有する、という構造に
      • 管理者ユーザーであっても通常の利用範囲では通常権限での操作しかできない。管理者権限での操作の実行には「昇格」という操作が必要。
      • 通常ユーザーであっても「昇格」操作は可能。ただし、この際、管理者ユーザーのアカウントが必要となる。
    • 「昇格」操作はアドホックに行われる
      • 管理者権限を必要とする操作が要求された場合に、OSはユーザーに対して昇格を行うか確認するダイアログを表示する

1. 従来のWindowsで

従来のWindowsでは、ユーザーアカウントの種類とユーザーアカウントによる操作に付与される権限とは一対一の関係にありました。すなわち、管理者ユーザーの行う操作は管理者権限で、通常ユーザーの行う操作は通常権限で行われていました。これは一見自然なしくみに見えますが、大きな問題がありました。すなわち、管理者権限を要する操作を行うには管理者権限のあるユーザーでログインしなければならず、また管理者権限で操作を実行したくない場合には通常ユーザーでログインしなければならなかったという点です。このユーザー切り替えの不便さから、管理者権限のある操作をする可能性のあるユーザーは通常利用においても管理者ユーザーを使ってしまい、結果的に攻撃的なプログラムに対して管理者権限での実行を許容する下地となってしまっていました。

2. Windows Vista以降で

この運用の問題を解決するために、Windows Vista以降ではUACという機能が導入されました。UACが有効な環境下においては、管理者ユーザーの行う操作も、通常は通常権限で行われます。このことにより、攻撃的なプログラムが管理者権限で実行されることがなくなります。また、管理者権限でなければ行えない操作を行おうとした場合には、OSはユーザーに対して「権限昇格」を促す通知を出します。Windowsを利用しているとしばしば目撃する「次のプログラムにこのコンピューターへの変更を許可しますか?」という画面を暗転させるダイアログがこれです。このダイアログで承認しない限り、操作が管理者権限で行われることはありません。一方で、通常ユーザーが操作を行っている場合にも、この「権限昇格」ダイアログを出してくれます。この場合には、管理者ユーザーのログイン情報が同時に必要ではありますが、通常ユーザーからユーザーを切り替えることなしに管理者権限を要する操作をすることが可能になります。このようにUACはアドホックな権限切り替えを行えるようにしたことで、ある程度のセキュリティを保ったまま、通常の利用を可能にする仕組みとなっています。

参考