在 SharePoint Server 中限制或啟用服務應用程式的存取
**適用版本:**SharePoint Foundation 2013, SharePoint Server 2013, SharePoint Server 2016
**上次修改主題的時間:**2017-07-25
**摘要:**了解如何透過新增及移除服務帳戶限制存取服務應用程式,以及如何在 SharePoint Server 2016 和 SharePoint 2013 重新建立存取服務應用程式的本機全伺服器陣列。
在 SharePoint Server 中,您可以限制存取服務應用程式,以便於僅允許指定的 Web 應用程式存取服務應用程式。
根據預設,在本機伺服器陣列上的所有服務應用程式,均適用於本機伺服器陣列上的所有 Web 應用程式。如果您在相同的伺服器陣列中主控多個客戶,而且想要將某個客戶的服務應用程式與另一個客戶的 Web 應用程式隔離,您可能會想要限制存取服務應用程式。
如果您限制存取服務應用程式,但後來決定讓這個服務應用程式可用於整個伺服器陣列,則可以將此限制取消。
本文內容:
限制存取服務應用程式
還原存取服務應用程式的全伺服器陣列
Windows PowerShell 程式碼範例
限制存取服務應用程式
若要限制存取服務應用程式,可移除服務應用程式的服務帳戶。相反地,若要啟用存取服務應用程式,可在服務應用程式中新增服務帳戶。您可以使用管理中心或 PowerShell 執行這些工作。
若要限制存取服務應用程式,必須完成下列工作:
新增特定的服務帳戶至服務應用程式。
移除服務應用程式的本機伺服器陣列識別碼。
注意
本文中的步驟說明如何限制或還原存取服務應用程式。不過,您可以遵循程序中的步驟新增任何服務帳戶至任何的服務應用程式,或者刪除任何服務應用程式的任何服務帳戶。
例如,使用管理中心還原服務應用程式的本機全伺服器陣列存取權這一程序清楚地說明如何新增服務應用程式的本機伺服器陣列識別碼。同樣的程序也可用來新增服務應用程式的任何其他服務帳戶。為達成此目的,您必須提供適當的服務帳戶而非本機伺服器陣列識別碼。
因為本機伺服器陣列識別碼預設會提供服務應用程式之本機全伺服器陣列的存取權限,如果再明確為服務應用程授與本機 Web 應用程式權限,將會顯得多餘,除非您也移除了本機伺服器陣列識別碼。
若要授與服務應用程式權限,您必須取得並提供適當的服務帳戶。對於 Web 應用程式,此帳戶也稱為「應用程式集區識別帳戶」。
在您授與權限至服務帳戶,並移除服務應用程式的本機伺服器陣列識別碼後,只有指派服務帳戶管理的 Web 應用程式才能存取服務應用程式。透過重複這些步驟,並將不同的 Web 應用程式服務帳戶新增至服務應用程式中,您可以指派多個 Web 應用程式 (具有不同的管理服務帳戶)。
警告
如果您移除服務應用程式的本機伺服器陣列識別碼,並且沒有為服務應用程式指派任何其他的服務帳戶,則服務應用程式對於所有 Web 應用程式都將不可使用。
本節內容:
使用管理中心限制存取服務應用程式
使用 Windows PowerShell 限制存取服務應用程式
使用管理中心限制存取服務應用程式
若要使用 SharePoint 管理中心網站限制存取服務應用程式,請遵循下列步驟:
擷取 Web 應用程式服務帳戶。
新增 Web 應用程式服務帳戶至服務應用程式。
移除服務應用程式的本機伺服器陣列識別碼。
本節中的程序:
使用管理中心擷取 Web 應用程式服務帳戶
使用管理中心授與或移除服務帳戶對服務應用程式的存取權限
使用 管理中心 擷取 Web 應用程式服務帳戶
確認執行此程序的使用者帳戶為 SharePoint 伺服器陣列管理員群組的成員。
在管理中心首頁上的 [安全性] 區段中,按一下 [設定服務帳戶]。
在 [服務帳戶] 頁面上,選取第一個下拉式清單中的服務和 Web 應用程式元件。
服務帳戶會顯示在 [選取此元件的帳戶] 清單中。請記錄此服務帳戶的名稱,因為您將在下一步驟中使用此名稱。
按一下 [取消],結束 [服務帳戶]頁面,但不進行任何變更。
使用 管理中心 授與或移除服務帳戶對服務應用程式的存取權限
確認執行此程序的使用者帳戶為 SharePoint 伺服器陣列管理員群組的成員。
在管理中心首頁上,按一下 [應用程式管理] 區段中的 [管理服務應用程式]。
在 [管理服務應用程式]頁面上,按一下包含要授與權限之服務應用程式的列。
功能區隨即變為可用。
在功能區的 [共用] 群組中,按一下 [權限]。
在 [連線權限] 對話方塊中,輸入您在前一步驟取得的服務帳戶名稱,然後按一下 [新增]。
請確定已選取中央窗格中,剛新增的服務帳戶名稱,然後在下方窗格中按一下適當的核取方塊,以提供所需的權限層級。
在中央窗格中,按一下 [本機伺服器陣列],然後再按一下 [移除]。
確認 [連線權限]頁面現在僅列出您希望可以存取服務應用程式的服務帳戶,而且服務帳戶在服務應用程式上具備所需的權限。按一下 [確定] 變更權限,或者按一下 [取消] 結束工作,但不進行任何變更。
您可以使用此程序來授與或移除任何服務帳戶對服務應用程式的存取權限。若要使用 CentralAdmin_2nd 將本機伺服器陣列識別碼還原至服務應用程式,還需要一個額外的步驟,此步驟不適用於其他服務帳戶。如需如何執行這項操作的資訊,請參閱本文稍後的<還原對服務應用程式的伺服器陣列層級的存取>。
使用 Microsoft PowerShell 限制存取服務應用程式
本節中的所有步驟都假設您具備適當的權限,並且已開啟 PowerShell 命令提示字元視窗,如本節稍後的<啟動 Windows PowerShell 工作階段>程序中所述。
與使用管理中心限制對服務應用程式的存取相比,使用 PowerShell 執行相同的工作的程序更加複雜。在 PowerShell 中,您將使用一些程序來收集與儲存用於輸入至稍後程序中的資訊。
啟動 PowerShell 後,限制存取服務應用程式的其餘步驟如下所示:
取得本機伺服器陣列識別碼。
擷取 Web 應用程式服務帳戶。
建立包含 Web 應用程式服務帳戶的新宣告主體。
取得服務應用程式安全性物件。
新增 Web 應用程式服務帳戶至服務應用程式的安全性物件中。
移除服務應用程式安全性物件中的本機伺服器陣列識別碼。
指派服務應用程式更新的安全性物件。
顯示並檢閱更新的權限
本節內容:
啟動 Windows PowerShell 工作階段
使用 Windows PowerShell 取得本機伺服器陣列識別碼
使用 Windows PowerShell 取得 Web 應用程式服務帳戶並建立新的宣告主體
取得服務應用程式的安全性物件
使用喜好的權限更新服務應用程式安全性物件
啟動 Microsoft PowerShell 工作階段
確認您具備下列成員資格:
SQL Server 執行個體上的 securityadmin 固定伺服器角色。
所有要更新之資料庫上的 db_owner 固定資料庫角色。
正在執行 PowerShell Cmdlet 之所在伺服器上的系統管理員群組。
系統管理員可以使用 Add-SPShellAdmin Cmdlet 授與使用 SharePoint Server Cmdlet 的權限。
注意
如果您不具備上述權限,請連絡安裝程式系統管理員或 SQL Server 系統管理員要求權限。如需 PowerShell 權限的其他資訊,請參閱 Add-SPShellAdmin。
啟動 SharePoint 管理命令介面。
使用 Microsoft PowerShell 取得 Web 應用程式服務帳戶並建立新的宣告主體
在 PowerShell 命令提示字元處,輸入下列命令以擷取 Web 應用程式的服務帳戶 (也就是應用程式集區識別帳戶):
$webapp = Get-SPWebApplication <http://WebApplication> $webApp.ApplicationPool.UserName
其中,<http://WebApplication> 是 Web 應用程式的 URL。
Web 應用程式服務帳戶名稱在命令提示字元後顯示。
若要建立新的宣告主體,請輸入下列命令:
$principal = New-SPClaimsPrincipal <ServiceAccount> -IdentityType WindowsSamAccountName
其中 <服務帳戶> 是執行前述命令後擷取到的使用者名稱 (形式為 jane@contoso.com 或 contoso\jane)。$principal 變數將包含新的宣告主體。
取得服務應用程式的安全性物件
若要擷取服務應用程式的安全性物件,請輸入下列命令。$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。
使用喜好的權限更新服務應用程式安全性物件
若要更新服務應用程式安全性物件,第一步是將新的宣告主體 $principal 新增至服務應用程式安全性物件 $security 中。若要執行此項作業,請輸入下列命令:
Grant-SPObjectSecurity $security $principal -Rights "<Rights>"
其中,<Rights> 是您要授與的權限。通常此處為「完全控制」。可用的權限可能因服務應用程式不同而異。
提示
如果您不要授與「完全控制」權限,而且不知道可以為服務應用程式授與哪種權限,則可以執行下列命令,傳回可用的權限字串:
$rightslist = Get-SPServiceApplicationSecurity $spapp
$rightslist.NamedAccessRights
若要移除服務應用程式安全性物件 $security 的本機伺服器陣列識別碼 (儲存在 $farmID 變數中),請輸入下列命令:
Revoke-SPObjectSecurity $security $farmID
若要指派更新的 $security 安全性物件至服務應用程式,並確認服務應用程式的安全性物件已得到適當的更新,請輸入下列命令:
Set-SPServiceApplicationSecurity $spapp -ObjectSecurity $security (Get-SPServiceApplicationSecurity $spapp).AccessRules
使用這些步驟可以在服務應用程式中新增或移除服務帳戶。
還原存取服務應用程式的全伺服器陣列
新增本機伺服器陣列識別碼至服務應用程式中,您可以還原存取服務應用程式的全伺服器陣列。您可以使用管理中心或 PowerShell 命令執行此作業。不過,您必須使用 PowerShell 取得本機伺服器陣列識別碼。
本節內容:
使用 Windows Powershell 取得本機伺服器陣列識別碼
使用管理中心還原存取服務應用程式的本機全伺服器陣列
使用 Windows PowerShell 還原存取服務應用程式的本機全伺服器陣列
使用 PowerShell 取得本機伺服器陣列識別碼
此程序在<啟動 Windows PowerShell 工作階段>程序的步驟 4 之後開始。
下列命令可擷取本機伺服器陣列識別碼,將其儲存在 $farmID 變數中,並在命令提示字元後顯示此識別碼:
$farmID = Get-SPFarm | select id
如果您要使用管理中心還原存取全伺服器陣列,請將此值複製至剪貼簿,以供後面的步驟使用。
如果您要使用 PowerShell 還原存取服務應用程式的全伺服器陣列,請在 PowerShell 命令提示字元處輸入下面其他命令。擷取的資訊將在後續程序中使用。
$claimProvider = (Get-SPClaimProvider System).ClaimProvider $principal = New-SPClaimsPrincipal -ClaimType "https://schemas.microsoft.com/sharepoint/2009/08/claims/farmid" -ClaimProvider $claimProvider -ClaimValue $farmid
使用 管理中心 還原存取服務應用程式的本機全伺服器陣列
執行使用管理中心授與並移除服務帳戶存取服務應用程式的權限此一程序中的第 1 至 3 步驟。
在 [連線權限] 對話方塊中,複製您在前面程序中擷取的本機伺服器陣列 ID,然後按一下 [新增]。
確定已在中央窗格中選取本機伺服器陣列識別碼。按一下下方窗格中的 [完全控制] 核取方塊。
按一下 [確定] 還原存取服務應用程式的全伺服器陣列,或者按一下 [取消] 結束工作,但不進行任何變更。
使用 Microsoft PowerShell 還原存取服務應用程式的本機全伺服器陣列
此程序在<使用 Windows Powershell 擷取本機伺服器陣列識別碼>程序的步驟 2 之後開始。
若要還原擷取的本機伺服器陣列識別碼至服務應用程式安全性物件 $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
其中,<服務應用程式顯示名稱> 是服務應用程式的顯示名稱。
重要
顯示名稱必須括在引號內,而且必須與服務應用程式的顯示名稱完全相符,包括大小寫格式。如果您有多個服務應用程式具備相同的顯示名稱 (不建議),您可以執行不帶引數的 Get-SPServiceApplication Cmdlet 檢視所有服務應用程式,然後可以直接透過服務應用程式的 GUID 識別服務應用程式。
Microsoft 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
$farmappId = 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 $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 "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 $farmappId -Rights "Full Control"
Set-SPServiceApplicationSecurity $spguid -ObjectSecurity $security
(Get-SPServiceApplicationSecurity $spguid).AccessRules
See also
從 SharePoint Server 的 Web 應用程式新增或移除服務應用程式連線
SharePoint Server 2016 中的帳戶權限及安全性設定
建立 Web 應用程式 (SharePoint 2013)
Get-SPWebApplication
New-SPClaimsPrincipal
Get-SPServiceApplication
Get-SPServiceApplicationSecurity
Grant-SPObjectSecurity
Revoke-SPObjectSecurity
Set-SPServiceApplicationSecurity
Get-SPFarm
Get-SPClaimProvider