コンソールアプリケーションを実行する際の権限について

対象製品:SharePoint Foundation 2010, SharePoint Server 2010

こんにちは。

今回は SharePoint サーバー上で SharePoint のオブジェクトモデル (主に Microsoft.SharePoint 名前空間) にアクセスするコンソールアプリケーションを実行する際に必要な権限についてご案内いたします。

結論から申し上げますと、SharePoint のオブジェクトモデルにアクセスするコンソールアプリケーションを実行するユーザーは IIS のワーカープロセス (w3wp.exe) の実行ユーザーと同等の権限を持つ必要があります。

IIS のワーカープロセスの実行ユーザーとは SharePoint サイトがホストされているアプリケーションプールの実行ユーザーのことです。また Web アプリケーションの作成時に指定するユーザーでもあります。

通常ユーザーが IE にて SharePoint サイトにアクセスする場合には IIS のワーカープロセスの実行ユーザーがデータベースに対してアクセスを行います。アプリケーション プールのユーザーは Web アプリケーションを作成する際に指定され、データベースに対しても適切な権限が与えられるため、データベースへのアクセスが成功します。

一方コンソールアプリケーションを実行する場合は、IIS のワーカープロセスは使用しないため、コンソール アプリケーションを実施しているユーザーが直接データベースにアクセスを行います。そのため、予めコンソール アプリケーションの実行ユーザーに対して、データベースに対して適切な権限を与える必要がございます。

コンソール アプリケーションの実行ユーザーに与える権限について

前述の説明のとおり、コンソールアプリケーションを実行するユーザーは IIS のワーカープロセスの実行ユーザーと同等の権限を持つ必要になります。以下は SharePoint サイトの IIS のワーカープロセスの実行ユーザーに与えられる権限になります。以下と同様の権限をコンソールアプリケーションを実行するユーザーに与える必要があります。

SharePoint サーバー上での権限 (サーバーのローカルグループ)

Administrators (※ 1)

WSS_WPG (※ 2)

IIS_IUSRS (※ 3)

データベース上での権限

サーバーロール : public

データベース名                                                 : メンバシップ

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

SharePoint_AdminContent_xxx                         : WSS_ContentApplication_Pools

SharePoint_Config                                           : WSS_ContentApplication_Pools

WSS_Content_xxx (コンテンツ データベース) : db_owner

※ 1 IIS のワーカープロセスの実行ユーザーは Administrator グループに含まれておりませんが、コンソールアプリケーションを実行する場合は、コンソールアプリケーションの実行するユーザーを Administrators グループに加える必要があります。

※ 2 WSS_WPG は SharePoint で使用されているシステム リソースに対して読み取りアクセス権を与えるために使用されるグループです。コンソールアプリケーションの実行するユーザーを Administrators グループに加えた場合はこのグループに加える必要はございません。

※ 3 IIS_IUSRS は IIS を使用するために使用されるグループです。そのため、コンソールアプリケーションの実行ユーザーを IIS_USRS に加える必要はございません。

タイトル : [方法] コンソール アプリケーションを作成する

アドレス : https://msdn.microsoft.com/ja-jp/library/ms438026.aspx

--- 抜粋 ---

Microsoft SharePoint Foundation のコンテキストでコンソール アプリケーションを実行するには、ユーザーはコンソール アプリケーションが実行されるコンピューターの管理者である必要があります。

------------

権限追加手順

上述でご案内しました権限の追加手順は以下になります。

<SharePoint サーバー上での権限>

1. SharePoint サーバーに管理者権限でログインし、サーバーマネージャーを起動します。

2. 左ペインにて [構成] - [ローカル ユーザーとグループ] - [グループ] をクリックします。

3. "WSS_WPG" をダブルクリックし、[追加] をクリックし、コンソールアプリケーションの実行ユーザーを追加します。

4. "Administrators" をダブルクリックし、[追加] をクリックし、コンソールアプリケーションの実行ユーザーを追加します。

<データベース上での権限>

4. SQL Server Management Studio を開きます。

5. 左ペインにて [セキュリティ] - [ログイン] を右クリックし、[新しいログイン] をクリックします。

6. "ログイン名: " にコンソールアプリケーションの実行ユーザーを入力します。

7. 左側の "ページの選択" にて [ユーザー マッピング] をクリックします。

8. 右側の "このログインにマップされたユーザー" にて以下のデータベースの [マップ] にチェックを付け、下の "データベース ロール メンバシップ" にて以下のメンバシップにチェックを付けます。

データベース名                                               : メンバシップ

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

SharePoint_AdminContent_xxx                        : WSS_ContentApplication_Pools

SharePoint_Config                                          : WSS_ContentApplication_Pools

WSS_Content_xxx (コンテンツ データベース) : db_owner

注意事項

上述でご案内した権限は、主に Microsoft.SharePoint 名前空間 を使用してプログラムを作成する際に必要な権限になります。Search Service Application や User Profile Service Applicationなど、各種サービス アプリケーションを操作するプログラムを作成する場合は、各種サービス アプリケーションに紐付く IIS のワーカープロセスの実行ユーザーと同等の権限が必要になる場合がございます。

参考情報

その他、SharePoint 2010 サーバー上でコンソールアプリケーションを作成する際の権限以外の部分の注意点については以下のブログ記事をご参照ください。

SharePoint 2010 サーバー上でコンソール アプリケーションを作成する際の注意事項

https://blogs.technet.com/b/sharepoint_support/archive/2011/01/20/sharepoint-2010-2.aspx