for e's laboratory
パソコン実習室
共有とアクセス権 - windowsのアクセス制御
≪ previous next ≫

V.アクセスの制御

 windowsは管理や制御を目的として、システム内に於いて様々な識別子を用います。ユーザーの管理にSIDを用いる外、アクセスの制御用に アクセス トークンやUIDを発行します。
この章では、アクセス トークンやUIDを使ってユーザーのアクセス要求を制御する様子を追います。

V.1.アクセス トークンとUID

 windows がユーザーの識別にSIDを用いることは「T.3.SID」で触れましたが、アクセス制御を行う時はこの外に[アクセス トークン]、[UID]という識別子を使います。
  • アクセス トークン
    ユーザー アカウントのSIDと所属グループのSIDをまとめ、そこに発行元情報等を加えたもので構成されれています。
    ログオン等で認証を要求したユーザー アカウントに対して、ローカル マシン、サーバー、ドメイン コントローラー等が適宜発行します。

  • UID:User IDentifier (ユーザー識別子)
    ネットワーク経由でアクセスしてくる(リモート)ユーザーに対して、アクセス トークンの代わりに使います。
    アクセス トークンは、ユーザー アカウントとグループのSID、発行元情報等を含むため大きなデータ量となります。このアクセス トークンをそのままネットワークに流すのは、セキュリティとネットワーク効率の面から好ましいことではなく、その代用としてUIDを発行します。

V.2.ローカル アクセス

 ローカルでログオンしたユーザーが、同じwindows内のフォルダやファイルへアクセスした時、windows内部ではどのような処理が行われているのでしょう。

 下図はローカル ユーザーがフォルダ(ファイル)にアクセスした時に、windows内部で行われる処理の流れを示しています。

【 ローカル アクセスの概念図 】
ローカルユーザー
ローカル ユーザー
(1) 

 (3)

(4) 
ローカルPC [ローカルPC]
【 ユーザー管理表 】
アカウント名SID
taroyyy
hanakozzz

(2)

【 アクセス トークン管理表 】
SIDアクセス トークン
yyytoken11
zzztoken22

【 セキュリティ ディスクリプタ 】
SIDアクセス可否権限
yyy許可フル コントロール
zzz許可読み取り

(5)
フォルダ

【 ローカル アクセスの処理手順 】
○ ユーザーの taro がwindowsにログオン後、フォルダ(ファイル)にアクセスできるまで。
  1. taro でログオン
    ユーザーはユーザー アカウント名とパスワードでwindowsにログオンする。
    ※ ログオンの行為は、windowsの認証を受けることと同じです。
  2. アクセス トークンを発行
    windowsはアカウント名とパスワードを登録情報(ユーザー管理表)と照合し、一致していればアクセス トークンを発行(作成)してアクセス トークン管理表に登録する。
  3. アクセス トークンを返信
    windowsは発行したアクセス トークンをユーザーに返信する。
    (実際にはwindowsの内部処理のみ)
    ※ ここまでは、ログオン時に処理される。
  4. アクセス トークンを使ってアクセス
    ユーザーは受信済みのアクセス トークンを使って、フォルダやファイルにアクセスする。
  5. アクセスの判定
    windowsはアクセス トークンからSIDを確認後、フォルダやファイルに設定されている [セキュリティ ディスクリプタ]を参照。
    SIDを基に可能な操作(権限)を識別してアクセス要求を制御する。
    この例では taro はフル コントロールが可能となる。

V.3.リモート アクセス

 ネットワークを経由してアクセスするリモート アクセスの動作は、ネットワークの形態(ワーク グループまたはドメイン)によって異なります。
 リモート ユーザーがサーバーへアクセスした時の動作を、ワーク グループとドメインの場合で追ってみましょう。
▼ ここでは情報を提供する(共有設定)側を便宜上サーバーと表記しています。
▼ リモート ユーザー同士の場合は、情報提供側をサーバーと読み替えて下さい。


【 windowsのエディションによるサーバー接続時の動作の違い 】
 最初にサーバーにアクセスする時はサーバーへのログオンと同じ動作になります。
アクセスを受けたサーバーは、ユーザー認証のためユーザー アカウントとパスワードの入力を求めますが、リモート ユーザー側の動作はwindowsのエディションによって異なることがあります。
例えば windows XPでは次の通りです。
  • windows XP Professional Edition
    windowsはユーザーがログオンに使ったアカウント名とパスワードを記憶しています。サーバーの要求にはwindowsが記憶していたアカウント名とパスワードを送信するので、ユーザーは意識する必要がありません。
  • windows XP Home Edition
    ログオン時に入力したアカウント名とパスワードの記憶機能がないので、サーバーへのアクセスの都度アカウント(ユーザー)名とパスワードを入力しなければなりません。


V.3.1.ワーク グループ の リモート アクセス

 ワーク グループに於けるリモート アクセスの動作は、基本的にはローカル アクセスと同じですが、サーバー上のフォルダやファイルにアクセスするので、サーバーの認証を受ける(ログインする)必要があります。
 サーバー側ではアクセスを許可するリモート ユーザーのユーザー アカウントを作成(ユーザー管理表を用意)して、適切なアクセス権の設定を済ませておきます。
※ サーバーが複数ある場合は、各サーバーで適切なユーザー アカウント作成とアクセス権の設定が必要に
  なります。 アクセス権設定の詳細は [ W.共有設定手順 ] を参照して下さい。

【 リモート アクセスの概念図 : ワークグループ 】
リモートユーザーリモートPC
リモート ユーザー
(1) 

 (4)

(5) 
サーバー [サーバー]
【 ユーザー管理表 】
アカウント名SID
taroyyy
hanakozzz

(2)

【 アクセス トークン管理表 】
SIDアクセス トークン
yyytoken11
zzztoken22

(3)

【 アクセス トークン:UID対応表 】
アクセス トークンUID
token11abcde
token22vwxyz

【 セキュリティ ディスクリプタ 】
SIDアクセス可否権限
yyy許可フル コントロール
zzz許可読み取り

(6)
フォルダ

【 リモート アクセス時の処理手順 : ワークグループ 】
○ ユーザーの hanako がネットワーク経由でサーバーに接続(ログオン)し、フォルダ(ファイル)にアクセス
  できるまで。
  1. hanako がサーバーにログオン《サーバーの認証を受ける》
    サーバーはアカウント(ユーザー)名とパスワードを要求し、リモート ユーザー機はローカル ログオン時のアカウント名とパスワードを送信する。
  2. ※ リモート ユーザー側のwindowsのエディションによって、動作に違いがあります
  3. アクセス トークンを発行
    サーバーはアカウント名とパスワードを登録情報(ユーザー管理表)と照合し、一致していればアクセス トークンを発行(作成)してアクセス トークン管理表に登録する。
  4. UID を作成
    サーバーはUIDを作成してアクセス トークンとの対応表に登録する。
    ※ リモート アクセスにはアクセス トークンの代わりにUIDを用いる。
  5. UID を返信
    サーバーはリモート ユーザーにUIDを返す。
  6. UID を使ってアクセス
    リモート ユーザー機は受け取ったUIDを使って、サーバーのフォルダやファイルにアクセスする。
  7. アクセス許可の判定
    サーバーは受信したUIDを基に次の動作を行う。
    1. UIDを基に[アクセス トークン:UID対応表]を参照、アクセス トークンを識別。
    2. アクセス トークンを基に[アクセス トークン管理表]を参照、SIDを識別。
    3. SIDを基に[セキュリティ ディスクリプタ]を参照、可能な操作(権限)を識別。
    4. アクセス要求を制御する。
    この例では hanako は読み取りが可能となる。

V.3.2.ドメイン の リモート アクセス

 ドメイン ネットワーク内のユーザー アカウント情報とユーザー認証は、ドメイン コントローラーが一元管理しています(サーバーは行いません)。
 リモート アクセスの際にユーザー アカウントとパスワードで認証を受け、UIDを使って目的のフォルダ(ファイル)にアクセスする仕組みはワーク グループの場合と変わりませんが、その実現方法が異なっています。

 リモート ユーザーからアクセス要求を受けたサーバーはユーザー認証の動作をドメイン コントローラーに委託し、その結果を受け取ってアクセス制御を行います。

◎ ドメインに所属するサーバーは、リモート ユーザーのアカウントを保持していません。
リモート ユーザーのアクセス権は、ドメイン コントローラーが管理しているユーザー アカウントを参照して設定(SIDをキーとして記録)しておきます。
※ アクセス権設定の詳細は [ W.共有設定手順 ] を参照して下さい。


【 リモート アクセスの概念図 : ドメイン 】
サーバー [サーバー]
【 アクセス トークン管理表 】
SIDアクセス トークン
yyytoken11
zzztoken22

【 アクセス トークン:UID対応表 】
アクセス トークンUID
token11abcde
token22vwxyz

【 セキュリティ ディスクリプタ 】
SIDアクセス可否権限
yyy許可フル コントロール
zzz許可読み取り

(6)
フォルダ
ドメインユーザードメインPC
リモート ユーザー
(1) 

 (4)

(5) 

ドメイン コントローラー
[ ドメイン コントローラー ]
【 ユーザー管理表 】
アカウント名SID
taroyyy
hanakozzz

【 アクセス トークン管理表 】
SIDアクセス トークン
yyytoken11
zzztoken22
 (2)

(3) 



【 リモート アクセス時の処理手順 : ドメイン 】
  1. taro がサーバーにログオン《サーバー経由でドメイン コントローラーの認証を受ける》
    サーバーはアカウント(ユーザー)名とパスワードを要求し、リモート ユーザー機はローカル ログオン時のアカウント名とパスワードを送信する。
    ※ リモート ユーザー側のwindowsのエディションによって、動作に違いがあります
  2. リモート ユーザー情報転送
    サーバーはリモート ユーザーから受信したユーザー アカウント名とパスワードを、ユーザー認証のためドメイン コントローラーへ転送する。
  3. アクセス トークンを返信
    ドメイン コントローラーはユーザー認証後、アクセス トークンを作成・記録してサーバーに返信する。
  4. UID を返信
    サーバーは受信したアクセス トークンをアクセス トークン管理表に記録。
    さらにUIDを作成して双方を対応表に記録後、UIDをリモート ユーザーに返信する。
  5. UID を使ってアクセス
    リモート ユーザー機は受け取ったUIDを使って、サーバーのフォルダやファイルにアクセスする。
  6. アクセスの制御
    サーバーは受信したUIDを基に次の動作を行う。
    1. UIDを基に[アクセス トークン:UID対応表]を参照、アクセス トークンを識別。
    2. アクセス トークンを基に[アクセス トークン管理表]を参照、SIDを識別。
    3. SIDを基に[セキュリティ ディスクリプタ]を参照、可能な操作(権限)を識別。
    4. アクセス要求を制御する。
    この例では taro はフル コントロールが可能となる。




≪ previous [[ 共有とアクセス権 ]] next ≫