サービス アプリケーションへのアクセスを制限または許可する (SharePoint Server 2010)

 

適用先: SharePoint Foundation 2010, SharePoint Server 2010

トピックの最終更新日: 2016-11-30

Microsoft SharePoint Server 2010 では、サービス アプリケーションを使用できる Web アプリケーションを限定して、それ以外の Web アプリケーションからのアクセスを制限できます。

既定では、ローカル ファームにあるすべての Web アプリケーションで、そのファームにあるすべてのサービス アプリケーションを使用できます。ただし、サービス アプリケーションを使用できる Web アプリケーションを限定すると、それ以外の Web アプリケーションからのアクセスを制限できます。複数のユーザー グループを同じファームでホストする場合に各グループの Web アプリケーションからアクセスできるサービス アプリケーションを分離するには、この構成を使用すると便利です。

サービス アプリケーションへのアクセスを制限し、後でそのアプリケーションをファーム全体で使用可能にすることを決めた場合は、制限を取り消すことができます。

ここでは、サービス アカウントを追加および削除して、サービス アプリケーションへのアクセスを制限する方法について説明します。また、サービス アプリケーションへのアクセスをファーム全体に再び許可する方法についても説明します。

重要

サービス アプリケーションへのアクセスを制限する前に、セキュリティとサービスのインフラストラクチャを計画することを強くお勧めします。

SharePoint Server 2010 のサービス アーキテクチャを計画する方法については、次の記事を参照してください。

この記事の内容

  • サービス アプリケーションへのアクセスを制限する

  • サービス アプリケーションへのファーム全体のアクセスを復元する

  • Windows Powershell のコード例

サービス アプリケーションへのアクセスを制限する

サービス アプリケーションへのアクセスを制限するには、サービス アカウントをサービス アプリケーションから削除します。逆に、サービス アプリケーションへのアクセスを許可するには、サービス アカウントをサービス アプリケーションに追加します。これらのタスクは、サーバーの全体管理または Windows PowerShell 2.0 を使用して行うことができます。

サービス アプリケーションへのアクセスを制限するには、次のタスクを実行します。

  1. 特定のサービス アカウントをサービス アプリケーションに追加します。

  2. ローカル ファーム ID をサービス アプリケーションから削除します。

注意

この記事では、サービス アプリケーションへのアクセスを制限または復元する手順を示しています。ただし、ここに示した手順を使用して、サービス アカウントをサービス アプリケーションに追加したり、サービス アカウントをサービス アプリケーションから削除したりすることもできます。
たとえば、「サーバーの全体管理を使用してサービス アプリケーションへのローカル ファーム全体のアクセスを復元するには」では、ローカル ファーム ID をサービス アプリケーションに追加する手順を示しています。この手順は、他のサービス アカウントをサービス アプリケーションに追加する場合も使用できます。その場合は、ローカル ファーム ID の代わりに目的のサービス アカウントを指定します。

ローカル ファーム ID は、既定でサービス アプリケーションに対するローカル ファーム全体のアクセスを提供するので、ローカル ファーム ID を削除する場合を除き、サービス アプリケーションに対するアクセス許可をローカル Web アプリケーションにも明示的に付与することは冗長です。

サービス アプリケーションへのアクセス許可を付与するには、適切なサービス アカウントを取得し、指定する必要があります。Web アプリケーションの場合、このアカウントをアプリケーション プール ID アカウントと呼びます。

サービス アカウントにアクセス許可を付与し、ローカル ファーム ID をサービス アプリケーションから削除すると、アクセス許可が付与されたサービス アカウントによって管理される Web アプリケーションだけがそのサービス アプリケーションにアクセスできます。複数の Web アプリケーション (異なるサービス アカウントで管理されるもの) を同じサービス アプリケーションに割り当てるには、この手順を繰り返し、各 Web アプリケーションのサービス アカウントをサービス アプリケーションに追加します。

警告

ローカル ファーム ID をサービス アプリケーションから削除し、他のサービス アカウントをそのサービス アプリケーションに割り当てない場合、そのサービス アプリケーションはすべての Web アプリケーションから使用できなくなります。

このセクションの内容

  • サーバーの全体管理を使用してサービス アプリケーションへのアクセスを制限する

  • Windows PowerShell を使用してサービス アプリケーションへのアクセスを制限する

サーバーの全体管理を使用してサービス アプリケーションへのアクセスを制限する

サーバーの全体管理を使用してサービス アプリケーションへのアクセスを制限するには、次の手順を実行します。

  1. Web アプリケーションのサービス アカウントを取得します。

  2. この Web アプリケーションのサービス アカウントをサービス アプリケーションに追加します。

  3. ローカル ファーム ID をサービス アプリケーションから削除します。

このセクションの手順は、以下のとおりです。

  • サーバーの全体管理を使用して Web アプリケーションのサービス アカウントを取得するには

  • サーバーの全体管理を使用してサービス アプリケーションへのアクセス許可をサービス アカウントに付与および削除するには

サーバーの全体管理を使用して Web アプリケーションのサービス アカウントを取得するには

  1. この手順を実行するユーザー アカウントが Farm Administrators SharePoint グループのメンバーであることを確認します。

  2. サーバーの全体管理のホーム ページで、[セキュリティ] セクションの [サービス アカウントの構成] をクリックします。

  3. [サービス アカウント] ページで、最初のドロップダウン リストから Web アプリケーション名を選択します。

    [このコンポーネントのアカウントの選択] ボックスの一覧にサービス アカウントが表示されます。次の手順で使用するので、このサービス アカウントの名前を記録します。

  4. [キャンセル] をクリックして、変更を行わずに [サービス アカウント] ページを閉じます。

サーバーの全体管理を使用してサービス アプリケーションへのアクセス許可をサービス アカウントに付与および削除するには

  1. この手順を実行するユーザー アカウントが Farm Administrators SharePoint グループのメンバーであることを確認します。

  2. サーバーの全体管理のホーム ページで、[アプリケーション構成の管理] セクションの [サービス アプリケーションの管理] をクリックします。

  3. [サービス アプリケーションの管理] ページで、付与するアクセス許可の対象となるサービス アプリケーションが含まれる行をクリックします。リボンが使用可能になります。

  4. リボンの [権限] をクリックします。

  5. [<サービス アプリケーション名> に対する接続権限] ダイアログ ボックスで、前の手順で取得したサービス アカウント名を入力し、[追加] をクリックします。

  6. 新しく追加したサービス アカウント名が中央のウィンドウで選択されていることを確認してから、下部のウィンドウで適切なチェック ボックスをオンにして必要なアクセス許可レベルを指定します。

  7. 中央のウィンドウで、[ローカル ファーム] をクリックし、[削除] をクリックします。

  8. [<サービス アプリケーション名> に対する接続権限] ページで、このサービス アプリケーションへのアクセスを許可するサービス アカウントだけが表示されていること、およびそのサービス アカウントにサービス アプリケーションに対する必要なアクセス許可が付与されていることを確認します。[OK] をクリックして権限を変更するか、[キャンセル] をクリックして変更せずにこの操作を終了します。

この手順を使用して、任意のサービス アカウントのアクセス許可の付与または削除を行うことができます。

注意

サーバーの全体管理を使用してローカル ファーム ID をサービス アプリケーションに復元するには、他のサービス アカウントでは行う必要のない追加の手順が必要です。具体的な手順については、後の「サービス アプリケーションへのファーム全体のアクセスを復元する」を参照してください。

Windows PowerShell を使用してサービス アプリケーションへのアクセスを制限する

このセクションで説明するすべての手順は、適切な権限があること、および Windows PowerShell 2.0 コマンド プロンプト ウィンドウが後の「Windows PowerShell セッションを開始するには」に示す手順によって表示されていることを前提とします。

Windows PowerShell 2.0 を使用してサービス アプリケーションへのアクセスを制限する方法は、サーバーの全体管理を使用して同じタスクを実行する場合よりも複雑です。Windows PowerShell 2.0 では、後の手順で入力する情報を収集および保存するためにいくつかの手順を行います。

Windows PowerShell 2.0 を開始した後で、サービス アプリケーションへのアクセスを制限するために、以下の手順を実行します。

  1. ローカル ファーム ID を取得します。

  2. Web アプリケーションのサービス アカウントを取得します。

  3. Web アプリケーションのサービス アカウントが含まれる新しいクレーム プリンシパルを作成します。

  4. サービス アプリケーションのセキュリティ オブジェクトを取得します。

  5. Web アプリケーションのサービス アカウントをサービス アプリケーションのセキュリティ オブジェクトに追加します。

  6. ローカル ファーム ID をサービス アプリケーションのセキュリティ オブジェクトから削除します。

  7. 更新されたセキュリティ オブジェクトをサービス アプリケーションに割り当てます。

  8. 更新されたアクセス許可を表示および確認します。

このセクションの内容

  • Windows PowerShell セッションを開始するには

  • Windows PowerShell を使用してローカル ファーム ID を取得するには

  • Windows PowerShell を使用して Web アプリケーションのサービス アカウントを取得し、新しいクレーム プリンシパルを作成するには

  • サービス アプリケーションのセキュリティ オブジェクトを取得するには

  • サービス アプリケーションのセキュリティ オブジェクトを目的のアクセス許可について更新するには

Windows PowerShell セッションを開始するには

  1. 次の最小要件を満たしていることを確認します。構成データベースの SharePoint_Shell_Access ロールのメンバーであり、SharePoint Server 2010 がインストールされているコンピューターの WSS_ADMIN_WPG ローカル グループのメンバーである必要があります。

  2. [スタート] メニューの [すべてのプログラム] をクリックします。

  3. [Microsoft SharePoint 2010 製品] をクリックします。

  4. [SharePoint 2010 管理シェル] をクリックします。

Windows PowerShell を使用して Web アプリケーションのサービス アカウントを取得し、新しいクレーム プリンシパルを作成するには

  1. Windows PowerShell 2.0 コマンド プロンプトで次のコマンドを入力して、Web アプリケーションのサービス アカウント (アプリケーション プール ID アカウント) を取得します。

    $webapp = Get-SPWebApplication <http://WebApplication>
    $webApp.ApplicationPool.UserName
    

    ここで、<http://WebApplication> には、Web アプリケーションの URL を指定します。

    Web アプリケーションのサービス アカウント名がコマンド プロンプトに表示されます。

  2. 新しいクレーム プリンシパルを作成するには、次のコマンドを入力します。

    $principal = New-SPClaimsPrincipal <ServiceAccount> -IdentityType WindowsSamAccountName
    

    ここで、<ServiceAccount> には、前のコマンドで取得したユーザー名 (jane@contoso.com または contoso\jane という書式) を指定します。$principal 変数に新しいクレーム プリンシパルが格納されます。

サービス アプリケーションのセキュリティ オブジェクトを取得するには

  1. サービス アプリケーションのセキュリティ オブジェクトを取得するには、次のコマンドを入力します。$security 変数にサービス アプリケーションのセキュリティ オブジェクトが格納されます。

    $spapp = Get-SPServiceApplication -Name "<ServiceApplicationDisplayName>"
    $spguid = $spapp.id
    $security = Get-SPServiceApplicationSecurity $spguid
    

    ここで、<ServiceApplicationDisplayName> には、サービス アプリケーションの表示名を指定します。

    重要

    表示名は引用符で囲みます。また、この名前はサービス アプリケーションの表示名と正確に一致する必要があります。大文字と小文字の違いは不一致と見なされます。完全に同じ表示名を持つサービス アプリケーションが複数ある場合 (このような状態は推奨しません)、Get-SPServiceApplication コマンドレットを引数なしで実行すると、すべてのサービス アプリケーションを表示できます。GUID を使用して、サービス アプリケーションを直接指定できます。次に例を示します。
    Get-SpServiceApplication
    すべてのサービス アプリケーションが一覧表示されます。
    $spapp = Get-SpserviceApplication -Identity <GUID>
    $spguid = $spapp.id
    ここで、<GUID> には、アクセス許可を更新するサービス アプリケーションの GUID を指定します。

サービス アプリケーションのセキュリティ オブジェクトを目的のアクセス許可について更新するには

  1. サービス アプリケーションのセキュリティ オブジェクトを更新する最初の手順では、新しいクレーム プリンシパル $principal をサービス アプリケーションのセキュリティ オブジェクト $security に追加します。これを行うには、以下のコマンドを入力します。

    Grant-SPObjectSecurity $security $principal -Rights "<Rights>"
    

    ここで、<Rights> には、付与するアクセス許可を指定します。一般には、"Full Control" (フル コントロール) を指定します。使用できるアクセス許可は、サービス アプリケーションによって異なります。

    ヒント

    フル コントロール以外のアクセス許可を付与する必要があり、サービス アプリケーションに付与できるアクセス許可が不明の場合は、次のコマンドを実行して使用可能なアクセス許可の文字列を表示できます。
    $rightslist = Get-SPServiceApplicationSecurity $spapp
    $rightslist.NamedAccessRights

  2. サービス アプリケーションのセキュリティ オブジェクト $security からローカル ファーム ID ($farmID 変数に格納されています) を削除するには、次のコマンドを入力します。

    Revoke-SPObjectSecurity $security $farmID 
    
  3. 更新した $security セキュリティ オブジェクトをサービス アプリケーションに割り当て、サービス アプリケーションのセキュリティ オブジェクトが適切に更新されたことを確認するには、次のコマンドを入力します。

    Set-SPServiceApplicationSecurity $spapp -ObjectSecurity $security
    (Get-SPServiceApplicationSecurity $spapp).AccessRules
    

これらの手順を使用して、サービス アプリケーションに対して任意のサービス アカウントの追加または削除を行うことができます。

サービス アプリケーションへのファーム全体のアクセスを復元する

サービス アプリケーションへのファーム全体のアクセスを復元するには、ローカル ファーム ID をサービス アプリケーションに追加します。この操作は、サーバーの全体管理または Windows PowerShell 2.0 コマンドを使用して行うことができます。ただし、Windows PowerShell 2.0 を使用してローカル ファーム ID を取得する必要があります。

このセクションの内容

  • Windows PowerShell を使用してローカル ファーム ID を取得するには

  • サーバーの全体管理を使用してサービス アプリケーションへのローカル ファーム全体のアクセスを復元するには

  • Windows Powershell を使用してサービス アプリケーションへのローカル ファーム全体のアクセスを復元するには

Windows PowerShell を使用してローカル ファーム ID を取得するには

  1. この手順は、「Windows PowerShell セッションを開始するには」の手順 4. を実行した後に実行します。

  2. 次のコマンドは、ローカル ファーム ID を取得し、その ID を $farmID 変数に格納し、その ID をコマンド プロンプトに表示します。

    $farmID = Get-SPFarm | select id
    

    サーバーの全体管理を使用してファーム全体のアクセスを復元するには、後の手順で使用するために、この値をクリップボードにコピーしておきます。

    Windows PowerShell 2.0 を使用してサービス アプリケーションへのファーム全体のアクセスを復元するには、次の追加のコマンドを Windows PowerShell 2.0 コマンド プロンプトで入力します。ここで取得した情報は、後の手順で使用します。

    $claimProvider = (Get-SPClaimProvider System).ClaimProvider 
    $principal = New-SPClaimsPrincipal -ClaimType "https://schemas.microsoft.com/sharepoint/2009/08/claims/farmid" -ClaimProvider $claimProvider -ClaimValue $farmid
    

サーバーの全体管理を使用してサービス アプリケーションへのローカル ファーム全体のアクセスを復元するには

  1. 「サーバーの全体管理を使用してサービス アプリケーションへのアクセス許可をサービス アカウントに付与および削除するには」の手順 1. ~ 3. を実行します。

  2. [<サービス アプリケーション名> に対する接続権限] ダイアログ ボックスで、前の手順で取得したローカル ファーム ID をコピーし、[追加] をクリックします。

  3. 中央のウィンドウでローカル ファーム ID が選択されていることを確認します。下部のウィンドウで [フル コントロール] チェック ボックスをオンにします。

  4. [OK] をクリックしてサービス アプリケーションへのファーム全体のアクセスを復元するか、[キャンセル] をクリックして変更せずにこの操作を終了します。

Windows Powershell を使用してサービス アプリケーションへのローカル ファーム全体のアクセスを復元するには

  1. この手順は、「Windows PowerShell を使用してローカル ファーム ID を取得するには」の手順 2. に続けて実行します。

  2. 取得したローカル ファーム ID をサービス アプリケーションのセキュリティ オブジェクト $security に復元するには、次のコマンドを入力します。

    $spapp = Get-SPServiceApplication -Name "<ServiceApplicationDisplayName>"
    $spguid = $spapp.id
    $security = Get-SPServiceApplicationSecurity $spguid
    Grant-SPObjectSecurity -Identity $security -Principal $farmID -Rights "Full Control"
    Set-SPServiceApplicationSecurity $spguid -ObjectSecurity $security
    

    ここで、<ServiceApplicationDisplayName> には、サービス アプリケーションの表示名を指定します。

    重要

    表示名は引用符で囲みます。また、この名前はサービス アプリケーションの表示名と正確に一致する必要があります。大文字と小文字の違いは不一致と見なされます。完全に同じ表示名を持つサービス アプリケーションが複数ある場合 (このような状態は推奨しません)、Get-SPServiceApplication コマンドレットを引数なしで実行すると、すべてのサービス アプリケーションを表示できます。GUID を使用して、サービス アプリケーションを直接指定できます。

Windows Powershell のコード例

次の例では、管理者が "Contoso BDC" サービス アプリケーションへのアクセスを http://contoso/hawaii という Web アプリケーションに限定します。この Web アプリケーションは、サービス アカウント "contoso\jane" によって管理されています。"contoso\jane" をサービス アプリケーションに追加し、ローカル ファームのサービス アカウントをサービス アプリケーションから削除すると、"Contoso BDC" へのアクセスは、サービス アカウント "contoso\jane" によって管理される Web アプリケーション (この例では http://contoso/hawaii) にのみ許可されます。

$farmid = Get-SPFarm | select id
$claimProvider = (Get-SPClaimProvider System).ClaimProvider 
$principal = New-SPClaimsPrincipal -ClaimType "https://schemas.microsoft.com/sharepoint/2009/08/claims/farmid" -ClaimProvider $claimProvider -ClaimValue $farmid 
webapp = get-spwebapplication http://contoso
$webapp.applicationpool
$principal = New-SPClaimsPrincipal contoso/jane -IdentityType WindowsSamAccountName
$spapp = Get-SPServiceApplication -Name "Contoso BDC"
$spguid = $spapp.id
$security = Get-SPServiceApplicationSecurity $spguid
Grant-SPObjectSecurity $security $principal -Rights "Full Control"
Revoke-SPObjectSecurity $security $farmaccount
Set-SPServiceApplicationSecurity $spguid -ObjectSecurity $security
(Get-SPServiceApplicationSecurity $spguid).AccessRules

次の例では、サービス アプリケーション "Contoso BDC" へのアクセスがローカル ファーム内のすべての Web アプリケーションに対して再び許可されます。

$farmid = Get-SPFarm | select id
$claimProvider = (Get-SPClaimProvider System).ClaimProvider 
$principal = New-SPClaimsPrincipal -ClaimType "https://schemas.microsoft.com/sharepoint/2009/08/claims/farmid" -ClaimProvider $claimProvider -ClaimValue $farmid 
$spapp = Get-SPServiceApplication -Name "Contoso BDC"
$spguid = $spapp.id
$security = Get-SPServiceApplicationSecurity $spguid
Grant-SPObjectSecurity -Identity $security -Principal $farmaccount -Rights "Full Control"
Set-SPServiceApplicationSecurity $spguid -ObjectSecurity $security
(Get-SPServiceApplicationSecurity $spguid).AccessRules

See Also

Reference

Get-SPWebApplication
New-SPClaimsPrincipal
Get-SPServiceApplication
Get-SPServiceApplicationSecurity
Grant-SPObjectSecurity
Revoke-SPObjectSecurity
Set-SPServiceApplicationSecurity
Get-SPFarm
Get-SPClaimProvider

Concepts

クレーム認証を構成する (SharePoint Server 2010)
Web アプリケーションに対してサービス アプリケーション接続の追加または削除を行う (SharePoint Server 2010)

Other Resources

Web アプリケーションに対するサービス アプリケーションの接続を追加または削除する (SharePoint Foundation 2010)