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

2.トークンの内容を確認する

畑中 哲
2006/06/16

トークンの情報を表示するWhoAmIコマンド

 トークンの情報を表示するためのツールとして、WhoAmIというコマンド(ファイル名はwhoami.exe)が利用できる。

 残念ながら、Windows Server 2003のもの以外は、日本語での表示や、グループの属性(後述)の表示ができないといった欠点がある。特にグループの属性を表示できないのは不都合なので、Windows Server 2003のWhoAmIが利用できない環境では、代わりにWindows NT 4.0のリソースキットに含まれるProcess Explode(pview.exe)やSysinternalsのProcess Explorerツールなどを代用として使うとよい。

 WhoAmIは自分自身のプロセスのトークンを表示するツールである。WhoAmIは、しばしば現在デスクトップにログオン中のユーザーを知るために用いられる。だがそれは、ログオンして最初のプロセスに与えられたトークンが、

[スタート]メニュー(Explorer.exeプロセス)
 →コマンド・プロンプト(Cmd.exeプロセス)
 →Whoami(whoami.exeプロセス)

とコピーされて、whoami.exeプロセスのトークンに、デスクトップにログオンしたユーザーの情報がたまたま受け継がれているからにすぎない。現在デスクトップにログオンしているユーザーとは違うユーザーを表示するWhoAmIが、同一デスクトップ内で起動することもあり得る。通常は上記のようにデスクトップにログオンしたユーザーの情報が継承されているので、現在デスクトップにログオンしているユーザーを知るツールとして使用して構わないが、確実なところを知りたければWhoAmI以外の方法で調べる必要がある。

WhoAmIコマンドでトークンの情報を見る

 では、WhoAmIを実行してみよう。

 WhoAmIにはいくつかオプションがあり、オプションを付けると必要な情報を個別に見ることができる。「whoami.exe /all」とすると利用可能なすべての情報を見ることができる。

 オプションを付けずに実行すると、トークンのユーザーだけが出力される。以下はすべてWindows Server 2003で実行した場合の例である。

■トークンのユーザー

 プロセスの持つトークンのユーザー情報を表示させるには、「whoami /user」を実行する。

ユーザー名の表示
whoami /userコマンドを実行するとユーザー名が表示される。
  コマンドの実行。
  ユーザー名(ドメイン/コンピュータ名とユーザー名)。

 このユーザー情報により、このトークンを持つプロセスが「誰」であるかが分かる。誰であるかを特定する情報なので、必ず一人のユーザーしか表示されない。この出力例では、whoami.exeプロセスは「server」ドメインの「administrator」というユーザーとして動作していることになる。SIDという列は今回の解説では無視して構わない。

■トークンのグループ

 トークンに記述されているグループの情報を表示させるには、「whoami /groups」を実行する。

グループ情報の表示
whoami /groupsコマンドを実行すると、トークンに記載されているグループの情報が表示される。
  コマンドの実行。
  グループ名の一覧。
  各グループの属性。
  [有効なグループ]属性は、ACLの許可エントリと拒否エントリ両方のチェックに使われる。ほかに[拒否のみに使用するグループ]という属性もあり、ACLの拒否エントリのチェックに使われる。
  ローカルAdministratorsグループ。「管理者権限」のあるプロセスのトークンには、このグループが[有効なグループ]として含まれている。

 このグループ情報により、単に1人のユーザー情報だけでなく、さまざまなグループを加味して、トークンのアクセス・チェックが行われる。この例では、Everyone、BUILTIN\Users、BUILTIN\Administratorsなど、全部で9つのグループが含まれていることが分かる(画面中の)。

 どのグループがトークンに記載されるかは、基本的には、トークンのユーザーがどのグループに所属しているかによって決まる。だがこれまで述べたように、トークンは書き換えることができるので、あるユーザーがあるグループに所属しているからといって、そのユーザーとして起動したプロセスのトークンに、所属しているグループが必ずすべて記載されているとは限らない。

 トークン内のグループ情報には[属性]が付いている(画面中の)。通常は[有効なグループ]という属性が付いている(画面中の)。このグループは、ACLの許可/拒否エントリの両方のチェックに使われる。

 [有効なグループ]ではなく、[拒否のみに使用するグループ]属性が付いていることもある。そのグループは、ACLの許可エントリのチェックには使われず、拒否エントリのチェックにのみ使われる。ACLの許可エントリと拒否エントリとは、例えばファイルのACLの場合、下図のような画面で設定するエントリのことである。

ACLの[許可]と[拒否]エントリ
ACLには、あるユーザーやグループに対する「許可」を設定するエントリと、「拒否」を設定するエントリの2種類が含まれる。
  このユーザーやグループごとに、許可や拒否を設定する。
  許可エントリの例。ある特定のユーザーやグループに対して、これらの操作を許可する。[拒否のみに使用するグループ]属性の付いているグループは、このエントリのチェックには使われない。
  拒否エントリの例。ある特定のユーザーやグループに対して、これらの操作を禁止する。[拒否のみに使用するグループ]属性の付いているグループは、このエントリのチェックにのみ使われる。

 「管理者権限でログオン」してプロセスを起動すると、デフォルトではプロセスのトークンに[有効なグループ]属性を持つBUILTIN\Administratorsグループが記載される(先の「グループ情報の表示」画面の)。これが、さまざまなオブジェクトに対して強力なアクセス権が認められる源である。たとえユーザーが「管理者権限でログオン」していたとしても、BUILTIN\Administratorsグループが[有効なグループ]としてトークンに記載されていなければ、プロセスはオブジェクトにアクセスすることはできない。

■トークンの特権

 トークンに記述されている特権情報を表示させるには、「whoami /priv」を実行する。

特権情報の表示
whoami /privコマンドを実行すると、トークンに記載されている特権の情報が表示される。
  コマンドの実行。
  特権名。
  特権の内容。
  有効か無効かの情報。

 この特権リストが、トークンに与えられた特権の一覧である。[状態]に[有効]と[無効]があるが、[無効]なものも使用可能な特権としてトークンに与えられている。ただし正確にいうと、特権はただトークンに与えられただけでは無効となっていて、そのままではプロセスは特権的操作を行えない。各プロセスは必要に応じてトークン内の特権を有効にして特権的操作を行い、不要になったら無効にする。もちろん、そもそもトークンに記載されていない特権を有効にすることはできない。


 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台以上! グループ内
サーバの「統合管理」によるメリットは?