【3/18〜】Amazon、VMwareが語る『クラウドの未来』 スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷
   
[基礎解説]
Windowsセキュリティ・メカニズム入門(後編)

4.別のユーザーとして実行する機能とWindows Vista

畑中 哲
2006/06/16

「別のユーザーとして実行」する機能

 Windows 2000以降のOSでは、「別のユーザーとして実行」という機能(RunAs/Secondary Logon)がある。コマンド・プロンプト上でrunasというコマンドを利用するか、プログラムの起動時に[別のユーザーとして実行]を選択すると利用できる。

「別のユーザーとして実行する」機能
プログラムを起動する場合、右クリックしてポップアップ・メニューから「別のユーザーとして実行する」を選択する(Windows XP/Windows Server 2003の場合)。すると実行するユーザー・アカウントとパスワードを問い合わせるダイアログが表示される。また、プログラムのショートカットのプロパティを表示させ、[ショートカット]タブにある[詳細設定]をクリックして表示されたダイアログでも設定することができる。Windows 2000の場合は、ショートカットのプロパティ・ダイアログにある[別のユーザーとして実行]をチェックする。コマンド・プロンプト上から利用する場合は、runasコマンドを利用する。
  プログラムのショートカットを右クリックし、ポップアップ・メニューからこれを選択すると、別のユーザー資格情報で実行させることができる。

 この機能で行っていることは、「デスクトップにログオンしたときに作成されたトークンとは別のトークンを新たに作成し、そのトークンを持つプロセスを実行する」ということである。

 すでに解説したように、トークンの書き換えには特権が必要である。特権がない普通のユーザーは、トークンを書き換えることはできない。そのため、「別のユーザーとして実行」機能では、ユーザーの代わりに「RunAs Service(Windows 2000)」/「Secondary Logon(Windows XP以降)」というサービスがプロセスの起動を行う。これが可能なのは、RunAs/Secondary Logonサービスのプロセスが「私はローカル・システムです」というトークンを持っており、自由にトークンを書き換えられるからである(前回の最後の「トークンの書き換えとセキュリティ」参照)。

 Windows NT 4.0には「別のユーザーとして実行」の機能はないが、仕組みとしては Windows NT 4.0でも可能なものであった(Windows NT 4.0で同様の機能を持つサード・パーティ製アプリケーションもある)。

そしてWindows Vistaへ

 これまでの内容をまとめると、以下のようになる。

  • 「誰」であるかの境界線は、プロセス。

  • 身元と権利を示すのは、トークン。

  • 各プロセスは独立したトークンを持ち、各プロセスのトークンは独立して書き換えられる。デスクトップに誰がログオンしているかは関係ない。

  • オブジェクトに対するアクセスは、トークンのユーザー/グループと、オブジェクトの ACL とによって、許可/拒否が決定される。デスクトップに誰がログオンしているかは関係ない。

  • 特権的操作は、トークンに特権が与えられているかどうかによって、許可/拒否が決定される。デスクトップに誰がログオンしているかは関係ない。

  • いわゆる「管理者権限」というものはない。「管理者権限でログオンする」というのは、通常、ローカル Administrators グループに所属するユーザーとしてログオンすることをいう。

  • デフォルトのオブジェクトのACLでは、通常、ローカルAdministratorsグループに強力なアクセス権が認められている。

  • デフォルトでは、ローカルAdministratorsグループにさまざまな特権が与えられている。

  • そのため、ローカル Administrators に所属するユーザーとしてログオンすると、それ以降に起動するプロセスすべてで、さまざまなオブジェクトにフル・コントロールでアクセスでき、多くの特権的操作を行うことができる。だがそれは、ログオンしたユーザーに「管理者権限」というものがあるからではない。ローカルAdministrators にたまたま強力なアクセス権を認める ACL が付いているオブジェクトが多く、また、たまたまデフォルトで多くの特権が与えられているからにすぎない。

  • 「管理者権限でログオン」したとしても、トークンから「ローカルAdministratorsグループに所属している」という情報や各種特権が削除されれば、そのプロセスは、「管理者権限を必要とする」ような操作は何もできない。

 このような仕組みを利用すると、「Aliceがログオンしたら常にC:\Windowsフォルダへのフル・コントロールを認める」といったような静的な制御でなく、より柔軟な制御が可能になる。そのような柔軟性は、すでにこれまでのWindows OSでも活用されてきた。例えば、リモート・デスクトップ/ターミナル・サーバにログオンすると、同じユーザーがコンソールにログオンした場合とは異なるトークンがプロセスに与えられる。従って、同じユーザーが同じコンピュータ上の同じオブジェクトにアクセスする場合であっても、リモート接続かどうかによって、許可されるかどうかは動的に変化するのである(参照:Windows TIPS「リモート・ログオン・ユーザーからのファイル・アクセスを制限する」)。

 一方では、Windows OSのユーザーが、「管理者権限でログオンする」のが常態となっているという問題がある。トークンには本来柔軟性があるのだが、互換性や利便性といった理由から、常日ごろどんなプロセスも同じ「管理者権限」で動作させるのが習慣になっている。これはセキュリティ上好ましい習慣ではない。

 「別のユーザーとして実行」するという機能は、そのような習慣から脱却し、セキュリティ機能を有効に利用する助けとなるはずのものだが、あくまでユーザーが意識して使用しなければならず、利便性が十分ではない。また、「別のユーザーとして実行」機能はトークンを書き換えすぎるきらいがあり、互換性や実用上の問題もある。

 そこでマイクロソフトは、次期OSであるWindows Vistaに「ユーザー アカウント制御(User Account Control)」という機能を搭載することにした(ただしこれは現時点での予定であり、最終的な製品版でどのようになるかは不明)。これは基本的には、ログオン時に与えられるトークンから自動的に多くのグループや特権を取り除き、必要なときにだけすべてのグループと特権を書き戻す機能である。トークンを書き戻すには、ユーザーは、画面上に自動的に現れるダイアログにクリックで応答するだけでよい。残念ながら現時点ではダイアログがあまりに頻繁に現れるために、便利とはいえないようである。だが、互換性を保ちつつ、よりOSを安全に使用するための次の一歩であるとはいえるだろう。

Windows Vistaのユーザー・アカウント制御ダイアログ画面
これは、Windows Vistaで新たに導入される「ユーザー アカウント制御」の確認ダイアログの例(これはビルド5384のベータ版の画面)。「リモートの設定」ダイアログ([システムのプロパティ]にある[リモート]タブ画面)を起動しようとしたところ。たとえ管理者グループに属するアカウントでログオンしていても、特権的な操作を行おうとすると、画面全体がこのようにフェードアウトし、前面にこのような確認ダイアログが表示される。[続行]をクリックしない限り、特権的な操作は行えないので、知らないうちにシステムが書き換えられたり、間違って操作してしまうなどのミスを防ぐことができる。ただしこのベータ版では、このようなダイアログが非常に頻繁に表示されるため、うるさいと感じるユーザーも多いだろう。
  起動しようとしている機能。
  プログラムの発行元。
  これをクリックしないと、操作が行えない。

 Windowsのセキュリティ・メカニズムの基礎についてこれまで解説してきた。実は今回の記事は、Windows Vistaのユーザー・アクセス制御を解説する前段階として作成されたものだ。Vistaのユーザー・アカウント制御については、別途記事を公開する予定である。End of Article

 

 INDEX
  [基礎解説]
  Windowsセキュリティ・メカニズム入門(前編)
    1.セキュアなOSに必要なこと
    2.プロセスとトークンとACL
    3.トークンと特権的操作
    4.トークンの作成と書き換え
 
  Windowsセキュリティ・メカニズム入門(後編)
    1.管理者権限でログオンするとは?
    2.トークンの内容を確認する
    3.トークンの内容を書き換えてみる
  4.別のユーザーとして実行する機能とWindows Vista
 
目次ページへ  「基礎解説」

ホワイトペーパーTechTargetジャパン

Windows Server Insider フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)

- PR -
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  TomcatやJBossなどAPサーバ環境に関する
情報を集約! “業務”用APサーバ大百科

New!
  一気に解説! 最新のクラスタストレージ
「RAIDを超えたストレージ基準」……など

New!
  クラウド的ユーザー体験の変化は脅威か?
仮想化技術を使いこなす運用管理術を紹介

New!

  上司や部下、部署内メンバーとの情報共有
を“ガラッ”と変えるコラボツールとは?

New!
  おばかアプリ選手権、第4弾開催中!!
ムダにカッコよくてくだらない作品求ム!

  社内ファイルサーバを“クラウド”に統合
VPN直結「クラウド型ストレージ」を紹介

  Twitterのアカウントはなぜ突破された?
メールによる新手の攻撃手法とその対策

  もう仮想化のお試しフェイズは終わりだ!
Hyper-V 2.0が基幹システムも仮想化

  美人!? まあまあ? 気になる いやし系!!
PV急増で「美人時計」がとった手段とは?

  クライアント企業から求められる人材
⇒IT技術と経営戦略を併せ持つ「戦略家」

  .NET編集長が実践する「技術情報検索術」
サンプル・コードを簡単に探す“技”は?

  業務効率と情報セキュリティ対策を両立!
手間なく確実に機密情報を守る方法とは?

  進化を続ける富士通ストレージETERNUS DX
製品開発者の自信を裏付けるものとは何か

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  【CTC事例】約30の基幹システムを統合!
膨大なバッジジョブを制御した方法は?

  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  その数、なんと400台以上! グループ内
サーバの「統合管理」によるメリットは?