ユーザーアカウント制御 (UAC) について
ユーザーアカウント制御(User Account Control, UAC)は、Windows Vista以降の
オペレーティングシステムに導入された、セキュリティの根幹をなす技術です。UACの主な目的は、ユーザーが意図しない
マルウェアなどの不正な
ソフトウェアが、システムに重要な変更を加えることを防ぐことです。この目的を達成するために、UACはアプリケーションを標準ユーザーの権限で実行することを基本としています。
管理者承認モード
Windows XP以前のバージョンでは、管理者アカウントは常に完全な管理特権を持っていました。これにより、
マルウェアを含むすべての
ソフトウェアが管理者権限で実行され、OS全体に自由にアクセスできてしまうというセキュリティ上のリスクがありました。一方、管理者ではないユーザーは、権限が必要な操作を実行しようとすると、エラーメッセージが表示され、操作を行うことができませんでした。
Windows Vista以降では、管理者アカウントでログオンした場合、2種類のアクセストークンが生成されます。一つは標準ユーザーと同じ権限を持つトークン、もう一つは完全な管理者権限を持つトークンです。管理者としてログオンした場合でも、通常は標準ユーザーの権限でアプリケーションが実行されます。セキュリティやOSの安定性に関わる操作を実行しようとすると、「昇格のプロンプト」と呼ばれるダイアログが表示され、ユーザーはプログラムの実行を許可するかどうかを選択する必要があります。ユーザーが許可すると、プログラムは管理者権限で実行されるようになります。標準ユーザーの場合も同様にダイアログが表示されますが、この場合は管理者の認証情報を入力する必要があります。認証が成功すると、選択した管理者の権限でプログラムが実行されます。
昇格のプロンプトは通常、「Secure Desktop」と呼ばれる特別なモードで表示されます。このモードでは画面が暗転し、権限昇格のためのウィンドウ以外の操作が一時的に制限されます。これは、権限の昇格を要求するアプリケーションが、ユーザーインターフェースやマウス操作を不正に操作することを防ぐための措置です。これにより、
マルウェアなどがユーザーの意図に反して実行許可を得ることを困難にします。最小化されたアプリケーションから権限昇格が必要になった場合、前面のウィンドウのフォーカスを失わないよう、Secure Desktopのウィンドウは最小化された状態で表示されます。ただし、通常のウィンドウとして表示させることも技術的には可能ですが、Microsoftは推奨していません。
その他の機能
権限が昇格された
コマンドプロンプトのウィンドウでは、タイトルバーに「管理者」という文字が表示されます。これにより、ユーザーは権限が昇格された
コマンドプロンプトとそうでないものを容易に区別することができます。
また、UACには、標準ユーザーでの実行を想定していないアプリケーションでも、標準ユーザーで実行できるようにする「ファイルと
レジストリの仮想化」と呼ばれる機能があります。ただし、HKLMのエントリ(
レジストリの特定の部分)を標準状態で削除しようとしても削除できません。このような操作を行う場合は、事前にプログラムの権限を昇格させる必要があります。
まとめ
UACは、Windowsのセキュリティを強化するための重要な機能であり、ユーザーが意図しない不正な
ソフトウェアの実行を防ぎ、システムを安全に保つために不可欠な存在です。
関連事項
ユーザーインターフェイス特権の分離 (UIPI)
外部リンク
Windows Vista デベロッパー センター - セキュリティ
デベロッパー センター - セキュリティで保護する
MSDN マガジン - 最小限の特権: アプリケーションで Windows Vista のユーザー アカウント制御を有効に活用する