限制或啟用服務應用程式的存取 (SharePoint Server 2010)

 

適用版本: SharePoint Foundation 2010, SharePoint Server 2010

上次修改主題的時間: 2016-11-30

在 Microsoft SharePoint Server 2010 中,您可以限制存取服務應用程式,以便於僅允許指定的 Web 應用程式存取服務應用程式。

根據預設,在本機伺服器陣列上所有的服務應用程式,均適用於本機伺服器陣列上所有的 Web 應用程式。不過,您可以限制存取服務應用程式,以便僅有指定的 Web 應用程式可以存取服務應用程式。如果在相同的伺服器陣列中主控多個客戶,而且想要將某個客戶的服務應用程式與另一個客戶的 Web 應用程式隔離,使用這樣的原則將會很有用。

如果您限制存取服務應用程式,但後來決定讓這個服務應用程式可用於整個伺服器陣列,則可以將此限制取消。

本文說明如何透過新增及移除服務帳戶限制存取服務應用程式。本文也說明如何重新建立存取服務應用程式的本機全伺服器陣列。

重要

我們強烈建議您在限制存取服務應用程式之前,規劃安全與服務基礎結構。

如需如何在 SharePoint Server 2010 中規劃服務架構的資訊,請參閱下列文章:

本文內容:

限制存取服務應用程式

可透過移除服務應用程式的服務帳戶,限制存取服務應用程式。相反地,您也可透過在服務應用程式中新增服務帳戶,新增存取服務應用程式。您可以使用管理中心或 Windows PowerShell 2.0 執行這些工作。

若要限制存取服務應用程式,必須執行下列工作:

  1. 新增特定的服務帳戶至服務應用程式。

  2. 移除服務應用程式的本機伺服器陣列識別碼。

注意

本文中的步驟說明如何限制或還原存取服務應用程式。不過,您可以遵循程序中提供的步驟新增任何服務帳戶至任何的服務應用程式,或者刪除任何服務應用程式的任何服務帳戶。
例如,使用管理中心復原服務應用程式的本機全伺服器陣列存取權這一程序清楚地說明如何新增服務應用程式的本機伺服器陣列識別碼。但是,同樣的程序也可用來新增服務應用程式的任何其他服務帳戶。為此,您必須提供適當的服務帳戶而非本機伺服器陣列識別碼。

因為本機伺服器陣列識別碼預設會提供服務應用程式之本機全伺服器陣列的存取權限,如果再明確為服務應用程授與本機 Web 應用程式權限,將會顯得多餘,除非您也移除了本機伺服器陣列識別碼。

若要授與服務應用程式權限,您必須取得並提供適當的服務帳戶。對於 Web 應用程式,此帳戶也稱為「應用程式集區識別帳戶」。

在您授與權限至服務帳戶,並移除服務應用程式的本機伺服器陣列識別碼後,只有指派服務帳戶管理的 Web 應用程式才能存取服務應用程式。透過重複這些步驟,並將不同的 Web 應用程式服務帳戶新增至服務應用程式中,您可以指派多個 Web 應用程式 (具有不同的管理服務帳戶)。

警告

如果您移除服務應用程式的本機伺服器陣列識別碼,並且沒有為服務應用程式指派任何其他的服務帳戶,則服務應用程式對於所有 Web 應用程式都將不可使用。

本節內容:

  • 使用管理中心限制存取服務應用程式

  • 使用 Windows PowerShell 限制存取服務應用程式

使用管理中心限制存取服務應用程式

若要使用管理中心限制存取服務應用程式,必須執行下列步驟:

  1. 擷取 Web 應用程式服務帳戶。

  2. 新增 Web 應用程式服務帳戶至服務應用程式。

  3. 移除服務應用程式的本機伺服器陣列識別碼。

本節中的程序:

  • 使用管理中心擷取 Web 應用程式服務帳戶

  • 使用管理中心授與或移除服務帳戶對服務應用程式的存取權限

使用管理中心擷取 Web 應用程式服務帳戶

  1. 確認執行此程序的使用者帳戶為 SharePoint 伺服器陣列管理員群組的成員。

  2. 在管理中心首頁上的 [安全性] 區段中,按一下 [設定服務帳戶]。

  3. 在 [服務帳戶] 頁面上,選取第一個下拉式清單中的 Web 應用程式名稱。

    服務帳戶會顯示在 [選取此元件的帳戶] 清單中。請記錄此服務帳戶的名稱,因為您將在下一步驟中使用此名稱。

  4. 按一下 [取消],結束 [服務帳戶] 頁面,但不進行任何變更。

使用管理中心授與或移除服務帳戶對服務應用程式的存取權限

  1. 確認執行此程序的使用者帳戶為 SharePoint 伺服器陣列管理員群組的成員。

  2. 在管理中心首頁上,按一下 [應用程式管理] 區段中的 [管理服務應用程式]。

  3. 在 [管理服務應用程式] 頁面上,按一下包含要授與權限之服務應用程式的列。功能區隨即變為可用。

  4. 在功能區上,按一下 [權限]。

  5. 在 [連線權限] 對話方塊中,輸入您在前一步驟取得的服務帳戶名稱,然後按一下 [新增]。

  6. 請確保已選取中央窗格中,剛新增的服務帳戶名稱,然後在下層窗格中按一下適當的核取方塊,以提供所需的權限層級。

  7. 在中央窗格中,按一下 [本機伺服器陣列],然後再按一下 [移除]。

  8. 確認 [連線權限] 頁面現在僅列出您希望可以存取服務應用程式的服務帳戶,而且服務帳戶在服務應用程式上具備所需的權限。按一下 [確定] 變更權限,或者按一下 [取消] 結束作業,但不進行任何變更。

使用此步驟可以為任何服務帳戶授與及移除權限。

注意

使用管理中心將本機伺服器陣列識別碼還原至服務應用程式,還需要一個額外的步驟,此步驟不適用於其他服務帳戶。如需如何執行這項操作的資訊,請參閱本文稍後的<還原對服務應用程式的伺服器陣列層級的存取>。

使用 Windows PowerShell 限制存取服務應用程式

本節中的所有步驟都假設您具備適當的權限,並且已開啟 Windows PowerShell 2.0 命令提示視窗,如本節稍後的<啟動 Windows PowerShell 工作階段>中所述。

與使用管理中心限制對服務應用程式的存取相比,使用 Windows PowerShell 2.0 執行相同的工作的程序更加複雜。在 Windows PowerShell 2.0 中,您將使用一些程序來收集與儲存用於輸入至稍後程序中的資訊。

啟動 Windows PowerShell 2.0 後,限制存取服務應用程式的其餘步驟如下所示:

  1. 取得本機伺服器陣列識別碼。

  2. 擷取 Web 應用程式服務帳戶。

  3. 建立包含 Web 應用程式服務帳戶的新宣告主體。

  4. 取得服務應用程式安全性物件。

  5. 新增 Web 應用程式服務帳戶至服務應用程式的安全性物件中。

  6. 移除服務應用程式安全性物件中的本機伺服器陣列識別碼。

  7. 指派服務應用程式更新的安全性物件。

  8. 顯示並檢閱更新的權限

本節內容:

  • 啟動 Windows PowerShell 工作階段

  • 使用 Windows PowerShell 取得本機伺服器陣列識別碼

  • 使用 Windows PowerShell 取得 Web 應用程式服務帳戶並建立新的宣告主體

  • 取得服務應用程式的安全性物件

  • 使用喜好的權限更新服務應用程式安全性物件

啟動 Windows PowerShell 工作階段

  1. 確認符合下列基本需求:在安裝有 SharePoint Server 2010 的電腦上,您是設定資料庫上 SharePoint_Shell_Access 角色的成員,也是 WSS_ADMIN_WPG 本機群組的成員。

  2. 在 [開始] 功能表上,按一下 [所有程式]。

  3. 按一下 [Microsoft SharePoint 2010 產品]。

  4. 按一下 [SharePoint 2010 管理命令介面]。

使用 Windows PowerShell 取得 Web 應用程式服務帳戶並建立新的宣告主體

  1. 在 Windows PowerShell 2.0 命令提示字元處,輸入下列命令,取得 Web 應用程式的服務帳戶 (也就是應用程式集區識別帳戶):

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

    其中,<http://Web 應用程式> 是 Web 應用程式的 URL。

    Web 應用程式服務帳戶名稱在命令提示字元後顯示。

  2. 若要建立新的宣告主體,請輸入下列命令:

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

    其中 <服務帳戶> 是執行前述命令後擷取到的使用者名稱 (形式為 jane@contoso.com 或 contoso\jane)。$principal 變數將包含新的宣告主體。

取得服務應用程式的安全性物件

  1. 若要擷取服務應用程式的安全性物件,請輸入下列命令。$security 變數將會儲存服務應用程式安全性物件。

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

    其中,<服務應用程式顯示名稱> 是服務應用程式的顯示名稱。

    重要

    顯示名稱必須括在引號內,而且必須完全與服務應用程式的顯示名稱相符,包括大小寫格式。如果您有多個服務應用程式具備完全相同的顯示名稱 (不建議),您可以執行不帶引數的 Get-SPServiceApplication Cmdlet 檢視所有服務應用程式,然後可以直接透過服務應用程式的 GUID 識別。例如:
    Get-SpServiceApplication
    所有服務應用程式已列出。
    $spapp = Get-SpserviceApplication -Identity <GUID>
    $spguid = $spapp.id
    其中,<GUID> 是您要更新權限的服務應用程式 GUID。

使用喜好的權限更新服務應用程式安全性物件

  1. 若要更新服務應用程式安全性物件,第一步是將新的宣告主體 $principal 新增至服務應用程式安全性物件 $security 中。若要執行此項作業,請輸入下列命令:

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

    其中,<權限> 是您要授與的權限。通常此處為「完全控制」。可用的權限可能因服務應用程式不同而異。

    提示

    如果您不要授與「完全控制」權限,而且不知道可以為服務應用程式授與哪種權限,則可以執行下列命令,傳回可用的權限字串:
    $rightslist = Get-SPServiceApplicationSecurity $spapp
    $rightslist.NamedAccessRights

  2. 若要移除服務應用程式安全性物件 $security 的本機伺服器陣列識別碼 (儲存在 $farmID 變數中),請輸入下列命令:

    Revoke-SPObjectSecurity $security $farmID 
    
  3. 若要指派更新的 $security 安全性物件至服務應用程式,並確認服務應用程式的安全性物件已得到適當的更新,請輸入下列命令:

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

使用這些步驟可以在服務應用程式中新增或移除服務帳戶。

還原存取服務應用程式的全伺服器陣列

新增本機伺服器陣列識別碼至服務應用程式中,您可以還原存取服務應用程式的全伺服器陣列。您可以使用管理中心或 Windows PowerShell 2.0 命令執行此作業。不過,您必須使用 Windows PowerShell 2.0 取得本機伺服器陣列識別碼。

本節內容:

  • 使用 Windows Powershell 取得本機伺服器陣列識別碼

  • 使用管理中心還原存取服務應用程式的本機全伺服器陣列

  • 使用 Windows PowerShell 還原存取服務應用程式的本機全伺服器陣列

使用 Windows Powershell 取得本機伺服器陣列識別碼

  1. 此程序在啟動 Windows PowerShell 工作階段程序的步驟 4 之後開始。

  2. 下列命令可擷取本機伺服器陣列識別碼,將其儲存在 $farmID 變數中,並在命令提示字元後顯示此識別碼:

    $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. 確定在中央窗格中選取了本機伺服器陣列識別碼。按一下中央窗格中的 [完全控制] 核取方塊。

  4. 按一下 [確定] 還原存取服務應用程式的全伺服器陣列,或者按一下 [取消] 結束作業,但不進行任何變更。

使用 Windows PowerShell 還原存取服務應用程式的本機全伺服器陣列

  1. 此程序在使用 Windows Powershell 擷取本機伺服器陣列識別碼程序的步驟 2 之後開始。

  2. 若要還原擷取的本機伺服器陣列識別碼至服務應用程式安全性物件 $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
    

    其中,<服務應用程式顯示名稱> 是服務應用程式的顯示名稱。

    重要

    顯示名稱必須括在引號內,而且必須與服務應用程式的顯示名稱完全相符,包括大小寫格式。如果您有多個服務應用程式具備完全相同的顯示名稱 (不建議),您可以執行不帶引數的 Get-SPServiceApplication Cmdlet 檢視所有服務應用程式,然後可以直接透過服務應用程式的 GUID 識別服務應用程式。

Windows PowerShell 程式碼範例

在下列範例中,管理員想要將對 "Contoso BDC" 服務應用程式的存取限定於 http://contoso/hawaii Web 應用程式,這個應用程式是由服務帳戶 "contoso\jane" 管理。透過新增 "contoso\jane" 並移除服務應用程式中的本機伺服器陣列服務帳戶,可將 "Contoso BDC" 限定於只能由服務帳戶 "contoso\jane"(在此範例中為 http://contoso/hawaii) 管理的 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 
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)