アクセストークンとは
コンピューターのオペレーティングシステムおよびその他のソフトウェアフレームワークでは、アクセストークンは、セキュリティで保護されたオブジェクトまたは承認が必要な別のプロセスにアクセスするためにプロセスが必要とするセキュリティ情報を含むデータ構造です。 セキュアオブジェクトは通常、読み取りおよび書き込み権限が定義されたファイルシステム内のデータであり、プロセスはその機能にアクセスするための承認を必要とする他のプログラムまたはサービスです。 アクセストークンは情報を保持できる単なるコンテナですが、通常はユーザー特権を格納するために使用されます。
アクセストークンの概念は、主にMicrosoft®オペレーティングシステムとプログラムで構想され、使用されていましたが、それらの有用性は他の場所でも使用されてきました。 Googleのアプリケーションプログラミングインターフェース(API)は、Googleユーザーのアカウントに関連付けられたデータにアクセスする必要があるアプリケーションをプログラミングする際に、アクセストークンを使用する方法を説明しています。 一部の大規模なソーシャルネットワーキングプラットフォームも、APIでアクセストークンを使用しています。
基本的に、ユーザーがオペレーティングシステムまたはソフトウェアシステムフレームワークにログインすると、システムはセキュリティデータベース内のユーザーとパスワードを検証し、システム上のオブジェクトまたはプロセスに対してユーザーを識別するアクセストークンが作成されます。 ユーザーが開始したプロセス(アプリケーション、プログラム、サービスなど)には、アクセストークンが含まれています。 その場合、アクセストークンは、アクセスを許可するために別のプログラムまたはオブジェクトがチェックするいくつかのデータを格納する必要があります。
アクセストークンには、ユーザー、ユーザーが所属するユーザーグループ、および現在のログオンセッションのセキュリティ識別子(SID)、通常は数値コードが含まれます。 トークンには、ユーザーまたはグループが許可されている特権のリストも含まれています。 アクセストークンにはいくつかの種類があります。そのため、トークンはその種類(プライマリまたは偽装)を識別する必要もあります。 プライマリアクセストークンは使用される標準タイプですが、偽装トークンを作成してユーザーに代わって行動することもできます。
ジョブを実行するためにアクセストークンが呼び出されると、システム上のオブジェクトおよびプロセスへのアクセスを監視するサービスであるセキュリティリファレンスモニター(SRM)に遭遇します。 SRMは、アクセストークンとの比較のために、オブジェクトまたはプロセスのセキュリティ記述子をプルアップします。 セキュリティ記述子には、アクセス制御リスト(ACL)が含まれます。各アクセス制御エントリ(ACE)は、そのオブジェクトまたはプロセスの特定のアクセス許可を定義します。 たとえば、システム上のファイルの場合、セキュリティ記述子には、どのユーザーまたはグループがファイルの読み取りまたは書き込み許可を持っているかに関する情報が含まれています。 ファイルを開くまたは編集するアクセスを要求するアクセストークンがセキュリティ記述子のアクセス許可と一致しない場合、アクセスは失敗し、ユーザーはファイルへのアクセスを拒否されます。