アクセストークン

コンピュータシステムにおいて、アクセストークンはログインセッションのセキュリティ認証情報を保持し、ユーザー、ユーザーのグループ、ユーザーの権限、そして場合によっては特定のアプリケーションを識別します。場合によっては、通常のパスワードではなく、アクセストークン(例えば、ランダムな40文字)の入力を求められることがあります(そのため、アクセストークンはパスワードと同様に秘密にしておく必要があります)。

概要

アクセストークンは、プロセスまたはスレッドのセキュリティ ID をカプセル化するオブジェクトです。[ 1 ]トークンは、セキュリティ上の決定を下したり、何らかのシステム エンティティに関する改ざん防止情報を保存したりするために使用されます。トークンは通常、セキュリティ情報のみを表すために使用されますが、トークンの作成時に添付できる追加の自由形式データを保持することもできます。トークンは特別な権限がなくても複製できます。たとえば、起動したアプリケーションのアクセスを制限するために、アクセス権の低い新しいトークンを作成できます。アクセス トークンは、プロセスまたはスレッドがセキュリティ記述子を持つオブジェクト (セキュリティ保護可能なオブジェクト)と対話しようとしたときに、Windows によって使用されます。 [ 1 ] Windows では、アクセス トークンは 型のシステム オブジェクトによって表されますToken

アクセス トークンは、ユーザーがシステムにログオンし、ユーザーが提供する資格情報が認証データベースに対して認証されるときに、ログオン サービスによって生成されます。認証データベースには、ログオン セッションの初期トークンを作成するために必要な資格情報 (ユーザー ID、プライマリ グループ ID、ユーザーが属する他のすべてのグループなど) が格納されます。トークンは、ユーザー セッションで作成された初期プロセスに関連付けられ、初期プロセスによって作成された後続のプロセスに継承されます。[ 1 ]このようなプロセスがアクセス制御が有効になっているリソースへのハンドルを開くたびに、Windows はターゲット オブジェクトのセキュリティ記述子のデータと、現在の有効なアクセス トークンの内容を調整します。[ 2 ]このアクセス チェック評価の結果は、アクセスが許可されるかどうか、また許可される場合は呼び出し元アプリケーションが実行できる操作 (読み取り、書き込み/変更など) を示します。

トークンの種類

利用可能なトークンには 2 つの種類があります。

プライマリトークン
プライマリトークンはプロセスにのみ関連付けることができ、プロセスのセキュリティ対象を表します。プライマリトークンの作成とプロセスへの関連付けはどちらも特権操作であり、権限分離の名の下に2つの異なる権限が必要です。典型的なシナリオでは、認証サービスがトークンを作成し、ログオンサービスがそれをユーザーのオペレーティングシステムシェルに関連付けます。プロセスは最初に親プロセスのプライマリトークンのコピーを継承します。
なりすましトークン
偽装は、Windows NTに実装されたセキュリティ概念であり、サーバーアプリケーションがセキュアオブジェクトへのアクセスに関して一時的にクライアントの「役割」を担うことを可能にします。偽装には4つのレベルがあります。匿名(サーバーに匿名/未確認ユーザーのアクセス権を付与)、識別(サーバーがクライアントのIDを検査するが、そのIDを使用してオブジェクトにアクセスしない) 、偽装(サーバーがクライアントの代理として動作すること)、委任偽装と同じですが、資格情報の保存を通じてサーバーが接続するリモートシステムにまで拡張されます)。クライアントは、接続パラメータとして、サーバーが利用できる最大の偽装レベル(存在する場合)を選択できます。委任と偽装は特権操作です(偽装は当初は特権操作ではありませんでしたが、クライアントAPIの実装における歴史的な不注意により、デフォルトレベルを「識別」に制限しなかったため、権限のないサーバーが意図しない権限を持つクライアントを偽装することができたため、特権操作が必要になりました)。偽装トークンはスレッドにのみ関連付けることができ、クライアントプロセスのセキュリティ対象を表します。偽装トークンは通常、DCE RPC、DDE、名前付きパイプなどの IPC メカニズムによって暗黙的に作成され、現在のスレッドに関連付けられます。

トークンの内容

トークンは、次のような様々なフィールドで構成されています。[ 3 ]

  • 識別子。
  • 関連するログオンセッションの識別子。このセッションは認証サービスによって維持され、認証パッケージによって、ユーザーがログイン時に提供したすべての情報(資格情報)の集合が設定されます。資格情報は、関連するすべてのシステムが認証機関(例:Kerberosチケットサーバー)を共有している場合、ユーザーが再認証することなくリモートシステムにアクセスするために使用されます(シングルサインオン)。
  • ユーザー識別子。このフィールドは最も重要であり、読み取り専用です。
  • ユーザー(より正確には、主体)が所属するグループの識別子。グループ識別子は削除できませんが、無効化したり「拒否のみ」にしたりすることは可能です。セッションIDは、最大1つのグループに割り当てられます。これは、揮発性のグループです。

参照

参考文献

  1. ^ a b c「アクセストークン」。MSDN 2007年10月8日閲覧
  2. ^ "AccessCheck" . MSDN . 2014年2月13日閲覧。
  3. ^ 「アクセストークンの仕組み」 MSDN 2009年10月8日。 2014年2月13日閲覧