セキュリティ プリンシパル

適用対象: Windows Server 2022、Windows Server 2019、Windows Server 2016

この参照記事では、セキュリティ プリンシパルに関連するセキュリティ テクノロジに加えて、Windows アカウントとセキュリティ グループのセキュリティ プリンシパルについて説明します。

セキュリティ プリンシパルとは

セキュリティ プリンシパルは、オペレーティング システムによって認証できる任意のエンティティ (ユーザー アカウント、コンピューター アカウント、ユーザーまたはコンピューター アカウントのセキュリティ コンテキストで実行されるスレッドまたはプロセスなど)、または、これらのアカウントのセキュリティ グループです。 セキュリティ プリンシパルは、長い間、Windows コンピューター上のセキュリティ保護可能なリソースへのアクセスを制御するための基盤となってきました。 各セキュリティ プリンシパルは、オペレーティング システムで一意なセキュリティ識別子 (SID) によって表されます。

注意

この内容は、記事の冒頭にある「適用対象」の一覧の Windows バージョンにのみ関連します。

セキュリティ プリンシパルの機能

Active Directory ドメインに作成したセキュリティ プリンシパルは Active Directory オブジェクトであり、ドメイン リソースへのアクセスを管理するために使用できます。 各セキュリティ プリンシパルには一意の識別子が割り当てられ、それは有効期間全体にわたって保持されます。 ローカル ユーザー アカウントとセキュリティ グループはローカル コンピューター上に作成され、そのコンピューター上のリソースへのアクセスを管理するために使用できます。 ローカル ユーザー アカウントとセキュリティ グループは、ローカル コンピューター上のセキュリティ アカウント マネージャー (SAM) によって管理されます。

承認とアクセス制御の構成要素

次の図は、Windows の承認とアクセス制御のプロセスを示しています。 この図では、サブジェクト (ユーザーによって開始されるプロセス) が、共有フォルダーなどのオブジェクトへのアクセスを試みます。 ユーザーのアクセス トークン内の情報が、オブジェクトのセキュリティ記述子のアクセス制御エントリ (ACE) と比較され、アクセス決定が行われます。 セキュリティ プリンシパルの SID は、ユーザーのアクセス トークンと、オブジェクトのセキュリティ記述子の ACE で使用されます。

承認とアクセス制御のプロセス

Diagram of the Windows authorization and access control process.

セキュリティ プリンシパルは、次の構成要素およびテクノロジと密接に関連しています。

セキュリティ識別子

セキュリティ識別子 (SID) は、Windows セキュリティ モデルの基本的な構成要素になります。 これらは、Windows Server オペレーティング システムのセキュリティ インフラストラクチャにおいて、承認およびアクセス制御テクノロジの特定の構成要素と連携します。 このことは、ネットワーク リソースへのアクセスを保護し、より安全なコンピューティング環境を提供するのに役立ちます。

SID は可変長の値であり、システムによって認証できる任意のエンティティを表すセキュリティ プリンシパルを一意に識別するために使用されます。 これらのエンティティには、ユーザー アカウント、コンピューター アカウント、あるいはユーザーまたはコンピューター アカウントのセキュリティ コンテキストで実行されるスレッドまたはプロセスが含まれます。 各セキュリティ プリンシパルは、作成時に SID が自動的に割り当てられます。 SID はセキュリティ データベースに格納されます。 ある SID をユーザーまたはグループの一意識別子として使用すると、その SID を別のユーザーまたはグループを識別するために使用することはできません。

ユーザーがサインインするたびに、システムにそのユーザーのアクセス トークンが作成されます。 アクセス トークンには、ユーザーの SID、ユーザー権利、ユーザーが属しているグループの SID が含まれています。 このトークンによって、ユーザーがそのコンピューターで実行するすべてのアクションのセキュリティ コンテキストが提供されます。

特定のユーザーとグループに割り当てられた一意に作成されたドメイン固有の SID に加えて、汎用グループと汎用ユーザーを識別する既知の SID があります。 たとえば、"Everyone と World" は、すべてのユーザーが含まれたグループを識別する SID です。 既知の SID には、すべてのオペレーティング システムで一定の値が保持されます。

アクセス トークン

アクセス トークンは、ユーザー アカウントに関連付けられている ID とユーザー権利に関する情報を含む、保護されたオブジェクトです。

ユーザーが対話形式でサインインするか、Windows を実行しているコンピューターにネットワーク接続しようとすると、サインイン プロセスでユーザーの資格情報が認証されます。 認証が成功した場合、プロセスからユーザーの SID と、ユーザーのセキュリティ グループの SID の一覧が返されます。 この情報を使用して、コンピューター上のローカル セキュリティ機関 (LSA) でアクセス トークン (この場合はプライマリ アクセス トークン) が作成されます。 これには、サインイン プロセスによって返される SID と、ローカル セキュリティ ポリシーによってユーザーとユーザーのセキュリティ グループに割り当てられるユーザー権利の一覧が含まれています。

LSA でプライマリ アクセス トークンが作成されると、アクセス トークンのコピーが、ユーザーに代わって実行されるすべてのスレッドとプロセスにアタッチされます。 スレッドまたはプロセスがセキュリティ保護可能なオブジェクトと連携するとき、またはユーザー権利を必要とするシステム タスクを実行しようとすると、スレッドに関連付けられているアクセス トークンがオペレーティング システムによってチェックされ、承認レベルが決定します。

アクセス トークンには、プライマリ アクセス トークンと偽装アクセス トークンの 2 種類があります。 すべてのプロセスには、プライマリ トークンが割り当てられます。これは、プロセスに関連付けられたユーザー アカウントのセキュリティ コンテキストを記述するものです。 通常、プライマリ アクセス トークンは、そのプロセスの既定のセキュリティ情報を表すためにプロセスに割り当てられます。 一方、偽装トークンは、クライアントとサーバーのシナリオで使用されます。 偽装トークンを使用すると、スレッドを所有しているプロセスのコンテキストとは異なるセキュリティ コンテキストでそのスレッドを実行できます。

セキュリティ記述子とアクセス制御リスト

セキュリティ記述子は、セキュリティ保護可能な各オブジェクトに関連付けられているデータ構造です。 Active Directory のすべてのオブジェクトと、ローカル コンピューター上またはネットワーク上のセキュリティ保護可能なすべてのオブジェクトには、そのオブジェクトへのアクセスの制御に役立つセキュリティ記述子があります。 セキュリティ記述子には、オブジェクトの所有者、オブジェクトへのアクセスが可能なユーザーとその方法、および監査対象のアクセスの種類に関する情報が含まれています。 また、セキュリティ記述子には、そのオブジェクトに適用するすべてのセキュリティ アクセス許可を含むオブジェクトのアクセス制御リスト (ACL) が含まれています。 オブジェクトのセキュリティ記述子には、2 種類の ACL を含めることができます。

  • アクセスが許可または拒否されるユーザーとグループを識別する "随意" アクセス制御リスト (DACL)

  • アクセスがどのように監査されるかを制御する "システム" アクセス制御リスト (SACL)

このアクセス制御モデルを使用すると、ファイルとフォルダー、Active Directory オブジェクト、レジストリ キー、プリンター、デバイス、ポート、サービス、プロセス、スレッドなどのオブジェクトと属性を個別にセキュリティで保護できます。 この個別の制御により、組織のニーズに合わせてオブジェクトのセキュリティを調整し、オブジェクトまたは属性に対する権限を委任できます。また、固有のセキュリティ保護を定義する必要があるカスタム オブジェクトまたは属性を作成することもできます。

アクセス許可

アクセス許可を使用すると、セキュリティ保護可能な各オブジェクト (ファイル、Active Directory オブジェクト、レジストリ キーなど) の所有者は、オブジェクトまたはオブジェクト プロパティに対して 1 つの操作または一連の操作をだれが実行できるかを制御できます。 アクセス許可は、セキュリティ アーキテクチャで ACE として表現されます。 オブジェクトへのアクセスはオブジェクトの所有者の裁量であるため、Windows で使用されるアクセス制御の種類は随意アクセス制御と呼ばれます。

アクセス許可とユーザー権利の違いは、アクセス許可はオブジェクトにアタッチされ、ユーザー権利はユーザー アカウントに適用されるという点です。 ユーザー権利は、管理者がグループまたはユーザーに割り当てることができます。 これらの権利により、ユーザーはシステムへの対話型ログオン、ファイルとディレクトリのバックアップなどの特定の操作を行うことを許可されます。

管理者は、コンピューター上でユーザー権利を使用して、特定のオブジェクトではなくコンピューター全体に影響を与える操作を実行する権限がだれにあるかを制御できます。 管理者は、コンピューターのセキュリティ設定の一部として、個々のユーザーまたはグループにユーザー権利を割り当てます。 ユーザー権利は、グループ ポリシーを通じて一元的に管理できますが、ローカルに適用されます。 ユーザーは、異なるコンピューター上では異なるユーザー権利を持つことができます (通常はそうします)。

どのユーザー権利を使用でき、それらをどのように実装できるかについては、「ユーザー権利の割り当て」を参照してください。

認証のセキュリティ コンテキスト

ユーザー アカウントを使用すると、ユーザーはコンピューター、ネットワーク、またはドメインで認証できる ID を使用してコンピューター、ネットワーク、ドメインにサインインできます。

Windows では、アクションを開始できるすべてのユーザー、サービス、グループ、またはコンピューターはセキュリティ プリンシパルです。 セキュリティ プリンシパルにはアカウントがあり、コンピューターに対してローカルにすることも、ドメインベースにすることもできます。 たとえば、ドメインに参加している Windows クライアントのコンピューターは、ユーザーがサインインしていない場合でも、ドメイン コントローラーと通信することで、ネットワーク ドメインに参加できます。

通信を開始するには、コンピューターがドメイン内にアクティブなアカウントを持っている必要があります。 コンピューターからの通信を受け入れる前に、ドメイン コントローラーのローカル セキュリティ機関はコンピューターの ID を認証し、ユーザーのセキュリティ プリンシパルの場合と同じようにコンピューターのセキュリティ コンテキストを定義します。

このセキュリティ コンテキストにより、特定のコンピューター上のユーザーまたはサービスについて、または、ネットワーク上のユーザー、サービス、グループまたはコンピューターについて、ID と実行できることが定義されます。 たとえば、アクセス可能なファイル共有やプリンターなどのリソースや、そのリソースのユーザー、サービス、またはコンピューターによって実行される読み取り、書き込み、変更などの操作を定義します。

ユーザーまたはコンピューターのセキュリティ コンテキストは、ユーザーがサーバーや、ユーザーの主なワークステーション以外のワークステーションに認証を行った場合など、コンピューターごとに異なる可能性があります。 また、管理者がユーザーの権利やアクセス許可を変更する場合など、セッションごとに異なることもあります。 さらに、ユーザーやコンピューターがスタンドアロン、混合ネットワーク ドメイン内、または Active Directory ドメインの一部として動作している場合も、セキュリティ コンテキストは異なります。

アカウントとセキュリティ グループ

Active Directory ドメインに作成したアカウントとセキュリティ グループは、Active Directory データベースに格納され、Active Directory ツールを使用して管理します。 これらのセキュリティ プリンシパルはディレクトリ オブジェクトであり、ドメイン リソースへのアクセスを管理するために使用できます。

ローカル ユーザー アカウントとセキュリティ グループはローカル コンピューター上に作成され、そのコンピューター上のリソースへのアクセスを管理するために使用できます。 ローカル ユーザー アカウントとセキュリティ グループは、ローカル コンピューター上のセキュリティ アカウント マネージャー (SAM) に格納され、それによって管理されます。

ユーザー アカウント

ユーザー アカウントによって、コンピューター システムを使用している人物が一意に識別されます。 アカウントはシステムに対し、リソースへのユーザー アクセスを許可または拒否するための適切な承認を適用するように通知します。 ユーザー アカウントは Active Directory 内およびローカル コンピューター上に作成でき、管理者はユーザー アカウントを使用して次のことを行います。

  • ユーザーの ID を表し、識別し、認証します。 ユーザー アカウントを使用すると、ユーザーはコンピューター、ネットワーク、またはドメインで認証できる一意識別子を使用してコンピューター、ネットワーク、ドメインにサインインできます。

  • リソースへのアクセスを承認 (許可または拒否) します。 ユーザーが認証された後、そのユーザーに割り当てられているリソースに対するアクセス許可に基づいて、リソースへのアクセスがユーザーに許可されます。

  • ユーザー アカウントで実行されるアクションを監査します。

Windows および Windows Server オペレーティング システムには組み込みのユーザー アカウントがあります。または、組織の要件を満たすユーザー アカウントを自分で作成することもできます。

セキュリティ グループ

セキュリティ グループは、セキュリティの観点から 1 つの単位として管理できるユーザー アカウント、コンピューター アカウント、その他のアカウント グループのコレクションです。 Windows オペレーティング システムには、特定のタスクを実行するための適切な権利とアクセス許可があらかじめ構成された組み込みのセキュリティ グループがいくつかあります。 さらに、組織内の複数のユーザーに適用されるセキュリティ要件の一意の組み合わせごとに、セキュリティ グループを作成できます (通常は作成します)。

グループは、Active Directory ベースでも、特定のコンピューターに対してローカルでもかまいません。

  • Active Directory セキュリティ グループは、ドメイン リソースに対する権利とアクセス許可を管理するために使用します。

  • ローカル グループは、ドメイン コントローラーを除くローカル コンピューター上 (Windows ベースのすべてのコンピューター上) の SAM データベースに存在します。 ローカル グループを使用して、ローカル コンピューター上のリソースに対する権利とアクセス許可のみを管理します。

セキュリティ グループを使用してアクセス制御を管理すると、次のことができます。

  • 管理を簡略化します。 共通の権利セット、共通のアクセス許可セット、またはその両方を各アカウントに個別に割り当てるのではなく、一度に多数のアカウントに割り当てることができます。 また、アクセス許可はユーザー アカウントに関連付けられていないため、ユーザーがジョブを転送した場合や組織を離れた場合に、アクセス許可の再割り当てや削除が容易になります。

  • ロールベースのアクセス制御モデルを実装します。 このモデルを使用すると、適切な目的のために異なるスコープを持つグループを使ってアクセス許可を付与できます。 Windows で使用できるスコープには、ローカル、グローバル、ドメイン ローカル、ユニバーサルがあります。

  • ACL のサイズを最小限に抑え、セキュリティ チェックを高速化します。 セキュリティ グループには独自の SID があります。そのため、グループ SID を使用して、リソースのアクセス許可を指定できます。 ユーザー数が数千人を超える環境では、個々のユーザー アカウントの SID を使用してリソースへのアクセスを指定すると、そのリソースの ACL が管理できないほど大規模になり、システムでリソースへのアクセス許可を確認するのに必要な時間を許容できなくなる可能性があります。

Active Directory に定義されているドメイン セキュリティ グループの説明と設定方法については、「Active Directory セキュリティ グループ」を参照してください。

特殊 ID の説明と設定方法については、「特殊 ID グループ」を参照してください。

こちらもご覧ください