Windows OSでは、管理者権限のあるアカウントでログオンして作業しがちだが、これは危険な行為である。だがWindows OSの仕様上、さまざまな場所で管理者権限を求められるので、ついこういった運用をしがちだ。このような状況を改善するために導入されたUACの仕組みを解説する。
前回は、レジストリの「リダイレクト」や「リフレクション」「仮想化」とレジストリを操作するツールなどについて解説した。今回はWindows OSの安全性を高めるための機能の1つ、UACについて見ていく。
Windows XPまでのWindows OSでは、PCに一般ユーザー(Usersグループ)権限ではなく、管理者(Administratorsグループ)権限でログインして利用することが多かった。もちろん管理が厳格な企業や組織では、管理者権限でPCを利用することの危険性に早くから気付いており、一般ユーザーには過剰な権限を与えずにPCを使うという習慣が普及していた。だがActive Directoryドメインもないような組織では、管理者権限で使うことが少なくなかった。このような運用方法が一般的だったのにはいくつか理由がある。
他にもいくつか理由があるが、使い分けるのが面倒だとか、Windows OSがその設計上、管理者権限を要求することがたびたびあるから、というのが主要な理由だろうか。
だがこれは望ましくないことは明らかだろう。管理者権限でPCを使っていると、ウイルスなどに感染した場合、システムが書き換えられたり、スパムメールやDoS攻撃の踏み台にされたりしてしまうなど、あっという間に被害が拡大してしまう。
このような事態を避けるため、たとえ管理者権限でログオンしていたとしても、システムの利用(設定変更)に制限を加える機能が用意された。それがUACである。
「UAC(ユーザーアクセス制御)」は、Windows Vista/Windows Server 2008以降のWindows OSで利用できる、管理者権限の利用を制限する機能である。たとえAdministratorsグループやDomain Adminsグループに所属するアカウントでログオンしていても、UACによる確認ダイアログに明示的に同意しないと、管理者権限が利用できない。
少し分かりづらいかもしれないが、UACは管理者アカウントで利用できる機能や権限を削減するものではない。従来のAdministratorsやDomain Adminsなどのアカウントが持つ権限はそのままで、その「管理者権限の利用を一時的に制限(保留)する」という機能である。利用できる機能(特権)を制限した、全く別の新しいユーザーアカウントやグループを用意する、といったものではないため、従来のアプリケーションなどとの互換性も高い。
UACが有効な場合は、管理者権限が必要な操作のためのUIには「盾(シールド)」のようなマークが表示され、そのままでは実行できないことを表している。例えば次の画面は、コントロールパネルでユーザーアカウントの種類を変更しようとしているところである。[アカウントの種類の変更]というリンクには盾のマークが表示されているが、これをクリックしてみよう。
すると画面が暗転し、次のようなUACによる確認ダイアログが表示される。ここで[はい]ボタンを明示的にクリックした場合にのみ、以後の操作が行えるようになる。
このような確認画面は、例えばアプリケーションが勝手に特権的な操作を行おうとした場合にも自動的に表示される。つまりウイルスや悪意のあるプログラムなどが勝手にシステムの重要な設定を変更しようとしても、このような画面が表示されるということだ。
もしこの操作がユーザーの意図したものなら[はい]ボタンをクリックすればよいが、そうでない場合は[いいえ]ボタンをクリックするか、[Esc]キーを押して操作をキャンセルすればよい。このようにUACを有効にしておくと、ユーザーの意図しない操作(システムの設定変更)からシステムを保護できる。
UACを有効にするか無効にするか、どのような操作に対してUACを有効にするかなどは、[コントロールパネル]の[ユーザー アカウントとファミリー セーフティ]−[ユーザー アカウント]を起動して、[ユーザー アカウント制御設定の変更]というリンクをクリックする。上の画面にある(4)のリンクをクリックしてもよい。すると次のような画面が表示されるので、左側のスライダーを使ってUACのレベルを変更する。
これはWindows 8.1におけるUACの設定画面の例である。Windows 7/Windows Server 2008 R2以降はこのように4段階の設定レベルがあるが、Windows Vista/Windows Server 2008にはオン/オフの2段階しかない。それぞれのOSにおける操作方法については、以下のTIPSを参照していただきたい。
4つのレベルにおけるUACの挙動は次の通りである。
レベル | 意味 |
---|---|
(1)常に通知 | ユーザーやプログラムがシステムの設定を変更したり、プログラムをインストールしたりしようとすると、常に確認を求める。Windows Vista/Windows Server 2008のデフォルト設定 |
(2)限定的な通知 | ユーザーによる操作の場合は確認画面を表示しないが、プログラムが設定を変更しようとしたり、新しいプログラムをインストールしたりしようとすると、確認を求める。Windows 7/Windows Server 2008 R2以降のデフォルト設定 |
(3)暗転無しの通知 | 上の「限定的な通知」と同じだが、画面が暗転しない。描画が乱れたり、遅くなったりするような場合に利用する |
(4)UAC無効 | UACを無効にする。UACによる確認画面が一切表示されなくなるので、システム的には脆弱になる。この設定はなるべく使わないようにすること ※Windows 8/Server 2012以降の場合:このレベルに設定しても、例えばコマンドプロンプトは管理者権限では起動しない(特権が制限されたモードで起動する)。UACを完全に無効にするには、上記のTIPS中の最後にある「UACを完全に無効化する」ための設定を行ってからシステムを再起動すること |
UACの通知レベル |
以上がUAC機能の概要である。UACを有効にしておくと、意図しないプログラムやウイルスなどからシステムの設定が変更されるのを防ぐことができる。だがそのために、いちいちユーザーに対してUACの確認ダイアログが表示されるため、煩わしいと思うかもしれない。けれども安全を高めるためには、ある程度操作に制限がかけられるのは仕方がないだろう。
以下では、UACの仕組みについて見ていこう。ただしUACの機能はWindows OSのログオンシステムやセキュリティメカニズムなどと密接に関連しているため、UAC機能の全貌を理解するのは容易ではない。本稿では、その概要を述べるだけにとどめる。より詳細なUACの機能解説や、ファイル/レジストリの仮想化、アプリケーションの昇格などについては、関連記事を参照していただきたい。
連載第1回「ユーザーとグループアカウント」で、「ユーザーアカウント」と、そのアカウントに対して割り当てられている「特権(privileges)」「権利(rights)」について解説した(特権と権利は少し意味が異なる。詳細は第1回の記事参照。以後両方まとめて特権と呼ぶ)。Windows OSではアカウントごとに利用できる特権が決まっているが、それは実際にはローカルセキュリティポリシーによって、特権と、それを利用できるアカウントが対応付けられているからである。
以下にローカルセキュリティポリシーの例を挙げておく。
あるアカウントが「管理者権限を持つ」ということは、実際には、この画面で示されているような「各種の権限がユーザーアカウントに対して割り当てられている」ということを意味している。
例えば「システム時刻の変更」という特権は、「LOCAL SERVICE」と「Administrators」に割り当てられている。システムにログオンしているアカウントがこれらのうちのいずれか(のグループ)に属していれば、時刻情報を変更できる。
だがUsersグループだけに属しているアカウントでは時刻情報の変更はできない。
このuser11アカウントにどのような特権が割り当てられているかは、「whoami /priv」コマンドを実行すると分かる。
Copyright© Digital Advantage Corp. All Rights Reserved.