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

適用対象:yes-img-13 2013yes-img-162016 yes-img-192019 yes-img-seSubscription Edition no-img-sopSharePoint in Microsoft 365

SharePoint Server では、指定の Web アプリケーションのみがサービス アプリケーションを使用できるように、サービス アプリケーションへのアクセスを制限できます。

既定では、ローカル ファームにあるすべての Web アプリケーションがそのファームのすべてのサービス アプリケーションを使用できます。 複数の顧客を同じファームでホストする場合には、あるサービス アプリケーションへのアクセスを制限し、一方の顧客のサービス アプリケーションを他方の顧客の Web アプリケーションから分離することがあります。

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

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

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

サービス アプリケーションへのアクセスを制限するには、以下のタスクを完了する必要があります。

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

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

この記事の手順は、サービス アプリケーションへのアクセスを制限または復元する方法を示しています。 ただし、この手順の各ステップを使用して、サービス アカウントをサービス アプリケーションに追加したり、サービス アカウントをサービス アプリケーションから削除したりすることもできます。

たとえば、「サーバーの全体管理を使用してサービス アプリケーションへのローカル ファーム全体のアクセスを復元するには」の手順は、ローカル ファーム ID をサービス アプリケーションに追加する方法を示しています。 同じ手順を使用して、他のサービス アカウントをサービス アプリケーションに追加できます。 その場合は、ローカル ファーム ID の代わりに適切なサービス アカウントを指定します。

ローカル ファーム ID は、既定でサービス アプリケーションに対するローカル ファーム全体のアクセスを提供するので、ローカル ファーム ID を削除する場合を除き、サービス アプリケーションへのアクセス許可をローカル Web アプリケーションに明示的に付与する必要はありません。

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

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

注意

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

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

SharePoint サーバーの全体管理 Web サイトを使用してサービス アプリケーションへのアクセスを制限するには、以下の手順に従います。

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

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

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

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

  1. この手順を実行しようとしているユーザー アカウントが、ファームの管理者 SharePoint グループのメンバーであることを確認します。

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

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

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

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

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

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

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

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

    リボンが使用可能になります。

  4. リボンの [ 共有] グループで、[ 権限] をクリックします。

  5. [ 接続のアクセス許可] ダイアログで、前の手順で取得したサービス アカウント名を入力し、[ 追加] をクリックします。

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

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

  8. Verify that the Connection Permissions page now lists only the service account that you want to access the service application, and that the service account has the required permissions on the service application. Click OK to change the permissions, or click Cancel to end the task without making changes.

この手順を使用すると、任意のサービス アカウントのアクセス許可を付与および削除できます。 CentralAdmin_2nd を使用してローカル ファーム ID をサービス アプリケーションに復元するには、他のサービス アカウントでは行う必要がない追加の手順が必要です。 具体的な手順については、後の「サービス アプリケーションへのファーム全体のアクセスを復元する」を参照してください。

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

このセクションのすべての手順では、適切なアクセス許可があることを前提としています。

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

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

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

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

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

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

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

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

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

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

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

  1. 次のメンバーシップがあることを確認します。

    • SQL Server インスタンスにおける securityadmin 固定サーバー ロール。

    • 更新するすべてのデータベースに対する db_owner 固定データベース ロール。

    • PowerShell コマンドレットを実行するサーバーでの Administrators グループ。

    管理者は Add-SPShellAdmin コマンドレットを使用して、SharePoint Server コマンドレットを使用する権限を付与できます。

    注:

    アクセス許可がない場合は、セットアップ管理者または SQL Server 管理者に連絡してアクセス許可を要求してください。 PowerShell アクセス許可の詳細については、「Add-SPShellAdmin」を参照してください。

  2. SharePoint 管理シェルを起動します。

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

  1. PowerShell コマンド プロンプトで次のコマンドを入力して、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> は付与するアクセス許可です。 Typically, this will be Full Control. The available permissions can vary between service applications.

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

    $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 をサービス アプリケーションに追加します。 この操作は、サーバーの全体管理または PowerShell コマンドを使用して実行できます。 ただし、PowerShell を使用してローカル ファーム ID を取得する必要があります。

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

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

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

    $farmID = Get-SPFarm | select id
    

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

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

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

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

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

  2. [ 接続のアクセス許可] ダイアログで、前の手順で取得したローカル ファーム ID をコピーし、[ 追加] をクリックします。

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

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

Microsoft 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 $Principal -Rights "Full Control"
    Set-SPServiceApplicationSecurity $spguid -ObjectSecurity $security
    

    ServiceApplicationDisplayName<> はサービス アプリケーションの表示名です。

    重要

    表示名は引用符で囲む必要があり、サービス アプリケーションの表示名と完全に一致している必要があります。 これには大文字/小文字の区別も含まれます。 表示名が同じサービス アプリケーションが複数ある場合 (これはお勧めしません)、引数を指定せずに Get-SPServiceApplication コマンドレットを実行して、すべてのサービス アプリケーションを表示できます。 その後、サービス アプリケーションを GUID で直接識別できます。

Microsoft PowerShell のコード例

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

$farmid = Get-SPFarm | select id
$claimProvider = (Get-SPClaimProvider System).ClaimProvider 
$farmappId = New-SPClaimsPrincipal -ClaimType "http://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 $farmappId
Set-SPServiceApplicationSecurity $spguid -ObjectSecurity $security
(Get-SPServiceApplicationSecurity $spguid).AccessRules

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

$farmid = Get-SPFarm | select id
$claimProvider = (Get-SPClaimProvider System).ClaimProvider 
$farmappId = New-SPClaimsPrincipal -ClaimType "http://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 $farmappId -Rights "Full Control"
Set-SPServiceApplicationSecurity $spguid -ObjectSecurity $security
(Get-SPServiceApplicationSecurity $spguid).AccessRules

関連項目

概念

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

SharePoint Server 2016 および 2019 のアカウントのアクセス許可とセキュリティ設定

その他のリソース

Web アプリケーションを作成する (SharePoint Server)

Get-SPWebApplication

New-SPClaimsPrincipal

Get-SPServiceApplication

Get-SPServiceApplicationSecurity

Grant-SPObjectSecurity

Set-SPServiceApplicationSecurity

Get-SPFarm

Get-SPClaimProvider