承認オブジェクトの関係
最終更新日: 2010年4月14日
適用対象: SharePoint Foundation 2010
この記事の内容
ユーザー、グループ、およびプリンシパル
オブジェクトの関係の高レベルでの概観図
ユーザー トークンとアクセス制御リスト
個々のユーザー (SPUser) は、Microsoft SharePoint Foundation オブジェクトへのアクセス権を得るのに、個別のロールの割り当てを通じて直接取得するか、またはロールの割り当てを持つドメイン グループか SharePoint グループ (SPGroup) を通じて間接的に取得します。直接のロール割り当てではユーザーがプリンシパル (SPPrincipal) になり、ドメイン グループまたは SharePoint グループのロールの割り当てではドメイン グループまたは SharePoint グループがプリンシパルになります。
ユーザー、グループ、およびプリンシパル
SharePoint Foundation では、Windows ユーザー (たとえば、ドメイン\ユーザーのエイリアス) と外部ユーザー (プラグ可能な認証による) の両方がサポートされています。ユーザーの ID は、ID 管理システム (たとえば、Active Directory ディレクトリ サービス) によって保守されます。ユーザー プロファイル (ユーザーの表示名、電子メール アドレス、その他の情報を含む) は、サイト コレクション レベルを対象範囲としています。表示名を変更すると、サイト コレクション全体にその影響が及びます。
グループは、SharePoint Foundation がセキュリティの管理に使用するユーザー コレクションです。ユーザー ベースの管理は、シンプルなサイトではわかりやすいのですが、個別にセキュリティ保護されるリソースの数が増えるにしたがって複雑になります。たとえば、1 人のユーザーが 1 つ目のリストには Contribute ロールを持ち、2 つ目のリストには Read ロールを持ち、さらに 3 つ目のリストには Design ロールを持つような場合もあります。そのような場合、このモデルはうまくスケールアップするこができず、たとえばユーザー数が 50,000 人もいる場合は、個別にセキュリティ保護されるオブジェクトごとにアクセス制御リスト (ACL) に 50,000 個ものアクセス制御エントリ (ACE) が連なることになります。
グループは、ユーザー ベースのアクセス許可管理が抱える管理性とスケーラビリティの問題の答えを提供します。グループ ベースの管理は、より抽象的で概念化するのが困難ですが、たとえば、既にシステム内のさまざまなオブジェクトに対する適切なロールが与えられているグループにユーザーを追加するときなどに、一意にセキュリティ保護されるオブジェクトを多数抱える複雑なサイトの管理を簡単にすることができます。保存する必要のあるグループ ACE の数ははるかに少ないので、グループのアクセス許可チェックはスケーラビリティに優れています。
SharePoint Foundation では、ドメイン グループと SharePoint グループの 2 種類のグループがサポートされています。ドメイン グループは、SharePoint Foundation の管理外にあります。ユーザーが、SharePoint Foundation を使用してドメイン グループ メンバーシップの定義、参照、変更などを行うことはできません。SharePoint グループは、サイト コレクション レベルを対象範囲としており、サイト コレクション内でしか使用できません。ドメイン グループは Active Directory ディレクトリ サービスの範囲内の任意の場所で使用できます。
セキュリティ管理に使用されるプリンシパルは、ユーザーまたはグループです。サイトにユーザーを追加する場合はユーザーがプリンシパルですが、サイトにグループを追加する場合はグループがプリンシパルです。SharePoint Foundation でのセキュリティ スケールアップで重要なのは、各対象範囲のプリンシパルの数を妥当な値に保つことです。グループを使用することにより、より少数のプリンシパルを使用して、膨大な数のユーザーにアクセス権を与えることができます。
オブジェクトの関係の高レベルでの概観図
図 1 は、SharePoint Foundation セキュリティ管理システムの概観を論理データベース図で示したものです。各ボックスはシステム内のセキュリティ オブジェクトを表し、線はオブジェクト間の関係を表します。また、1 と N の表記は関係の種類を表します。この図は、アクセス許可データが、ユーザー トークンと ACL でどのように構造化されているかを示しています。
図 1. 承認オブジェクトの関係
対象範囲は、一意にセキュリティ保護される 1 つのオブジェクトまたは一連のオブジェクトを表します。サイト、リスト、フォルダー、またはアイテム レベルを対象範囲にできます。
ユーザーとグループは、多対多の関係 (N - N) を持ちます。各ユーザー (SPUser) が複数のグループのメンバとなることができ、各グループ (SPGroup) が複数のユーザーを含むことができます。
権利とロールの定義も、多対多の関係 (N - N) を持ちます。各権利 (SPBasePermissions) が、複数のロール定義の一部となることができます。たとえば、Insert List Items 権は Contributor、Designer、および Administrator の各ロール定義に含まれます。また、各ロール定義 (SPRoleDefinition) にも、複数の権利を含めることができます。たとえば、Contributor には、リスト アイテムを挿入する権利、更新する権利、および削除する権利が含まれます。
ロール定義とロールの割り当て (SPRoleAssignment) は、一対多の関係 (1 - N) を持ちます。各ロール定義が、複数のロールの割り当ての中で使用されます。リスト 1 の閲覧者とリスト 2 の閲覧者が異なる場合もありますが、そのロールの割り当ては Reader という単一のロール定義を共有できます。
ユーザーまたはグループとロールの割り当ては、多対多の関係 (N - N) を持ちます。各ユーザーまたはグループが、与えられたオブジェクトへの複数のロールの割り当てのメンバーとなることができます。たとえば、1 人のユーザーが同じオブジェクトに対する Designer ロールと Administrator ロールの両方を持つことができます。
対象範囲とロールの割り当ては、一対多の関係 (1 - N) を持ちます。各対象範囲が複数のロール割り当てを持ちますが、各ロール割り当ては 1 つの対象範囲しか持ちません。たとえば、1 人のユーザーがイベント リストの閲覧者になっており、別のユーザーがイベント リストの投稿者となっていたとすると、これらのロール割り当てはどちらもお知らせリストには適用されません。2 つのリストで同じロール割り当てを共有する唯一の方法は、その権限を親コンテナーから継承することです。この場合は、セキュリティの対象範囲は 2 つのリストではなくコンテナーになります。
ユーザー トークンとアクセス制御リスト
SharePoint Foundation では、権限チェックを高速化するために、そのセキュリティ モデル内にユーザー トークンと ACL が実装されています。ユーザー トークンは、ユーザーに適用される認証プロセスを識別します。Windows ユーザーは、ユーザーに一意な文字列 (SID) と、そのユーザーが属するすべての Windows ドメイン グループのリストで構成される複雑なトークン (ドメイン\Department 15688 など) を持ちます。Windows 認証を持たないユーザーは、ユーザー名の一意の文字列での非常にシンプルなトークンを持つ場合もあれば、Windows 認証で表されるのと同じようなグループ/ロール メンバーシップの入った複雑なトークンを持つ場合もあります。各ユーザーの SharePoint グループ メンバーシップはユーザー トークンを通じて表されるため、SharePoint Foundation は、ユーザー トークンを読み取ることによって現在のユーザーのすべてのグループを識別します。
ACL は、ユーザーおよびグループが特定のオブジェクトに対して持つ権利を決定するバイナリ オブジェクトです。ACL は、複数の ACE で構成され、各セキュリティ プリンシパル (ユーザーまたはグループ) が ACL 内で 1 つの ACE となります。権利、ロール定義、およびロールの割り当ては各対象範囲の ACL で構造化されているため、SharePoint Foundation は、指定された対象範囲内で各ユーザーまたはグループが何を行うことを許可されているのかを知ることができます。