SharePoint でのロール、継承、権限の昇格、およびパスワードの変更
ロール、ロール定義、ロール割り当て
ロールは、ロール定義とロールの割り当てという 2 つの部分で構成されます。
ロール定義 (アクセス許可レベル) は、ロールに関連する権限のリストです。 権限は、SharePoint Web サイト内で一意に管理できます。 たとえば、 Read ロールを持つユーザーは、Web サイトのページを参照し、リスト内のアイテムを表示できます。 ユーザーのアクセス権は、権限を使用して直接管理されることはありません。 すべてのユーザー権限およびグループ権限は、ロールによって管理されます。 ロール定義とは、特定のオブジェクトに結び付けられた権限のコレクションです。 ロール定義 ( Full Control、 Read、 Contribute、 Design、 Limited Access など) は、Web サイトを対象範囲とし、Web サイトのどの場所でも同じことを意味しますが、何を意味するかは同じサイト コレクション内のサイト間で異なります。 親 Web サイトから権限を継承できるのと同じように、ロール定義を継承することもできます。
ロールの割り当ては、ロール定義、ユーザーとグループ、スコープの間の関係です (たとえば、1 人のユーザーがリスト 1 の閲覧者で、別のユーザーがリスト 2 の閲覧者である場合など)。 ロールの割り当てによって表されるリレーションシップは、SharePoint セキュリティ管理のロールベースを作成するためのキーです。 すべてのアクセス許可はロールを通じて管理されます。権限をユーザーに直接割り当てることはありません。 適切に定義され、一貫性のある権限 (ロール定義) の意味のあるコレクションのみを割り当てます。 ロールの割り当てを通じて、ロール定義との間でユーザーとグループを追加または削除することで、一意のアクセス許可を管理します。
Web サイトの管理者は、既定のロール定義をカスタマイズし、[ロールの管理] ページを使用して独自のロールを新たに作成できます。[ロールの管理] ページには、サイトで利用できるロール定義が表示されます。
ロール定義の継承
SharePoint は、権限の継承と同じように、ロール定義の継承をサポートします。また、ロール定義の継承を停止するには、権限の継承も停止する必要があります。
SharePoint の各オブジェクトには、独自の権限を設定するか、親コンテナーから権限を継承することができます。 SharePoint では、オブジェクトが親の権限をすべて継承し、独自の権限の一部も保持するというような部分的な継承はサポートされません。 権限は、固有の権限を設定するか、継承するかのどちらかになります。 SharePoint では、指定継承はサポートされません。 たとえば、オブジェクトは親コンテナーからのみ継承することができ、他のオブジェクトやコンテナーから継承することはできません。
Web サイトがロール定義を継承する場合、継承した Web サイトでは、ロールは読み取り専用の権限と同じように読み取り専用になります。 ユーザーは、リンクを介して固有のロール定義を保持する親サイトに移動できます。 すべての新しい Web サイトの既定の設定は、固有の権限を持つサイトの場合でも、親 Web サイトからロール定義を継承することです。 権限が固有の場合は、継承したロール定義に戻すか、ローカル ロール定義として編集することができます。
Web サイトでのロール定義の継承は、以下のルールに従って権限の継承に適用されます。
ロール定義も継承しない限り、権限を継承することはできません。
固有の権限も作成しない限り、固有のロール定義を作成することはできません。
Web サイト内の固有の権限をすべて取り消さない限り、継承したロール定義に戻すことはできません。 既存の権限は、ロール定義に依存します。
継承したロール定義に戻さない限り、継承した権限に戻すことはできません。 Web サイトの権限は、その Web サイトのロール定義に常に結び付けられます。
ユーザー トークンの管理
SharePoint では、SharePoint データベースからユーザー トークン情報を取得します。 ユーザーがサイトに一度もアクセスしていない場合、またはユーザーのトークンが 24 時間以上前に生成されている場合は、SharePoint はそのユーザーが属するグループのリストを更新することによって新しいユーザー トークンを生成します。
ユーザー アカウントが NT アカウントの場合、SharePoint は AuthZ インターフェイスを使用して、ActiveDirectory ディレクトリ サービスに対して TokenGroups プロパティのクエリを実行します。 SharePoint がエクストラネット モードで実行されており、Active Directory に対してこのプロパティのクエリを実行する権限を持っていない場合、このクエリは失敗します。
ユーザー アカウントがメンバーシップ ユーザーの場合、SharePoint は ASP.NET RoleManager に対して、ユーザーが属するすべてのロールについてクエリを実行します。 現在の実行可能ファイル用の適切な .config ファイルがない場合、このクエリは失敗します。
SharePoint が Active Directory または <roleManager> からユーザーのグループ メンバーシップを取得できない場合、新しく生成されたトークンにはユーザーの一意のセキュリティ ID (SID) のみが含まれます。 例外がスローされることはありませんが、ULS サーバー ログにエントリが書き込まれます。 新しいトークンは、24 時間以内に再生成されないように SharePoint データベースにも書き込まれます。
SharePoint は、SharePoint データベースから新しいトークンを取得した後、または新しいトークンを生成して取得した後に、タイムスタンプを現在の時刻に設定し、そのトークンを呼び出し元に返します。 これにより、トークンが 24 時間有効となるよう保証されます。
SPUserToken オブジェクトが呼び出し元に返された後、トークンの有効期限が切れた後にトークンを使用しないのは呼び出し元の責任です。 トークンを取得した時刻を記録してトークンの有効期限を追跡し、現在の時刻と SPWebService.TokenTimeout との差を比較するヘルパー ユーティリティを作成できます。
期限切れになったトークンを使用して SharePoint Web サイトを作成すると、例外がスローされます。 トークンの既定のタイムアウト値は 24 時間です。 SPWebService.TokenTimeout を使用してアクセスできます。
特権の昇格
Windows SharePoint Services 3.0 に追加された機能である権限の昇格を使用すると、本来より高いレベルの権限を使用して、操作をコード形式でプログラム的に実行できます。 SPSecurity.RunWithElevatedPrivileges メソッドを使用すると、現在のユーザーよりも高い特権を持つアカウントのコンテキストでコードのサブセットを実行するデリゲートを指定できます。
以下は、 RunWithElevatedPrivileges の標準的な使用方法です。
SPSecurity.RunWithElevatedPrivileges(delegate()
{
// Do things by assuming the permission of the "system account".
});
SharePoint でアクションを実行するには、変更を反映するために新しい SPSite オブジェクトを取得する必要があります。 以下に例を示します。
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(web.Site.ID))
{
// Do things by assuming the permission of the "system account".
}
});
権限の昇格を使用すると、強力な方法で詳細にセキュリティを管理できますが、この機能を使用する場合は十分注意する必要があります。 権限の低いユーザーに対しては、本来与えられた権限を超えるような直接的な無制限のメカニズムを公開しないでください。
大事な:RunWithElevatedPrivileges に渡されるメソッドに書き込み操作が含まれている場合、RunWithElevatedPrivileges の呼び出しの前に、SPUtility.ValidateFormDigest() または SPWeb.ValidateFormDigest() の呼び出しが必要です。
パスワードの自動変更
パスワードの自動変更機能を使用すると、複数のアカウント、サービス、および Web アプリケーション間で手動のパスワード更新タスクを実行することなく、パスワードを更新および展開できます。 これにより、SharePoint でのパスワードの管理が簡単になります。 パスワードの自動変更機能を使用して、パスワードの有効期限が切れようとしているかどうかを判断し、暗号化された強力な長いランダム文字列を使用してパスワードをリセットできます。
管理アカウント
パスワードの自動変更機能は、管理アカウントを使用して実装します。 管理アカウントによりセキュリティが向上し、アプリケーションが確実に切り離されます。 管理アカウントを使用すると、次のことができます。
パスワードがファーム内のすべてのサービスにわたって展開されるように、パスワードの自動変更機能を構成する。
他のドメイン アカウントを使用するように、SharePoint ファームのアプリケーション サーバーで実行されている SharePoint Web アプリケーションおよびサービスを構成する。
管理アカウントを、ファーム内のさまざまなサービスおよび Web アプリケーションにマップする。
Active Directory ドメイン サービス (AD DS) で複数のアカウントを作成し、SharePoint で各アカウントを登録する。
管理アカウントを登録して SharePoint を有効にし、アカウント パスワードを制御することもできます。 予定されているパスワード変更およびそれに伴うサービス中断についてユーザーに通知する必要がありますが、SharePoint ファーム、Web アプリケーション、およびさまざまなサービスによって使用されているアカウントは、個別に構成されたパスワード リセット スケジュールに基づいて、必要に応じてファーム内で自動的にリセットおよび展開できます。
SPManagedAccount クラスを使用して実行できる操作は次のとおりです。
パスワードの変更
パスワード変更スケジュールの設定
パスワード変更の反映
前回パスワードが変更された時期の特定
パスワードの最小文字数の設定
管理アカウント API の詳細については、次のリンクを参照してください。