在 SharePoint Server 中限制或啟用服務應用程式的存取
適用於:2013 Subscription Edition SharePoint in Microsoft 365
在 SharePoint Server 中,您可以限制存取服務應用程式,以便於僅允許指定的 Web 應用程式存取服務應用程式。
根據預設,在本機伺服器陣列上的所有服務應用程式,均適用於本機伺服器陣列上的所有 Web 應用程式。 如果您在相同的伺服器陣列中主控多個客戶,而且想要將某個客戶的服務應用程式與另一個客戶的 Web 應用程式隔離,您可能會想要限制存取服務應用程式。
如果您限制存取服務應用程式,但後來決定讓這個服務應用程式可用於整個伺服器陣列,則可以將此限制取消。
限制存取服務應用程式
若要限制存取服務應用程式,可移除服務應用程式的服務帳戶。 相反地,若要啟用存取服務應用程式,可在服務應用程式中新增服務帳戶。 您可以使用管理中心或 PowerShell 執行這些工作。
若要限制存取服務應用程式,必須完成下列工作:
新增特定的服務帳戶至服務應用程式。
移除服務應用程式的本機伺服器陣列識別碼。
本文中的步驟說明如何限制或還原存取服務應用程式。 不過,您可以遵循程序中的步驟新增任何服務帳戶至任何的服務應用程式,或者刪除任何服務應用程式的任何服務帳戶。
例如,使用管理中心還原服務應用程式的本機全伺服器陣列存取權這一程序清楚地說明如何新增服務應用程式的本機伺服器陣列識別碼。 同樣的程序也可用來新增服務應用程式的任何其他服務帳戶。 為達成此目的,您必須提供適當的服務帳戶而非本機伺服器陣列識別碼。
因為本機伺服器陣列識別碼預設會提供服務應用程式之本機全伺服器陣列的存取權限,如果再明確為服務應用程授與本機 Web 應用程式權限,將會顯得多餘,除非您也移除了本機伺服器陣列識別碼。
若要授與服務應用程式權限,您必須取得並提供適當的服務帳戶。 對於 Web 應用程式,此帳戶也稱為「應用程式集區識別帳戶」。
在您授與權限至服務帳戶,並移除服務應用程式的本機伺服器陣列識別碼後,只有指派服務帳戶管理的 Web 應用程式才能存取服務應用程式。 透過重複這些步驟,並將不同的 Web 應用程式服務帳戶新增至服務應用程式中,您可以指派多個 Web 應用程式 (具有不同的管理服務帳戶)。
注意
如果您移除服務應用程式的本機伺服器陣列識別碼,並且沒有為服務應用程式指派任何其他的服務帳戶,則服務應用程式對於所有 Web 應用程式都將不可使用。
使用管理中心限制存取服務應用程式
若要使用 SharePoint 管理中心網站限制存取服務應用程式,請遵循下列步驟:
擷取 Web 應用程式服務帳戶。
新增 Web 應用程式服務帳戶至服務應用程式。
移除服務應用程式的本機伺服器陣列識別碼。
若要使用管理中心擷取 Web 應用程式服務帳戶
確認執行此程序的使用者帳戶為 SharePoint 伺服器陣列管理員群組的成員。
在管理中心首頁上,按一下 [安全性] 區段中的 [設定服務帳戶]。
在 [服務帳戶] 頁面上,選取第一個下拉式清單中的服務和 Web 應用程式元件。
The service account is shown in the Select an account for this component list. Record the service account name because you'll use it in the next procedure.
按一下 [取消],結束 [服務帳戶] 頁面,但不進行任何變更。
使用管理中心授與或移除服務帳戶對服務應用程式的存取權限
確認執行此程序的使用者帳戶為 SharePoint 伺服器陣列管理員群組的成員。
在管理中心首頁上,按一下 [應用程式管理] 區段中的 [管理服務應用程式]。
在 [管理服務應用程式] 頁面上,按一下包含要授與權限之服務應用程式的列。
功能區隨即變為可用。
在功能區的 [共用] 群組中,按一下 [權限]。
在 [ 連線許可權 ] 對話框中,輸入您在上一個程式中擷取的服務帳戶名稱,然後按兩下 [ 新增]。
請確定已選取中央窗格中,剛新增的服務帳戶名稱,然後在下方窗格中按一下適當的核取方塊,以提供所需的權限層級。
在中央窗格中,按一下 [本機伺服器陣列],然後再按一下 [移除]。
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 將本機伺服器陣列識別碼還原至服務應用程式,還需要一個額外的步驟,此步驟不適用於其他服務帳戶。 如需如何執行這項操作的資訊,請參閱本文稍後的<還原存取服務應用程式的全伺服器陣列>。
使用 Microsoft PowerShell 限制存取服務應用程式
本節中的所有程序都假設您具有適當的許可權。
與使用管理中心限制對服務應用程式的存取相比,使用 PowerShell 執行相同的工作的程序更加複雜。 在 PowerShell 中,您將使用一些程序來收集與儲存用於輸入至稍後程序中的資訊。
啟動 PowerShell 後,限制存取服務應用程式的其餘步驟如下所示:
取得本機伺服器陣列識別碼。
擷取 Web 應用程式服務帳戶。
建立包含 Web 應用程式服務帳戶的新宣告主體。
取得服務應用程式安全性物件。
新增 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
其中 <ServiceAccount> 是以 或 contoso\jane) 形式 jane@contoso.com (的使用者名稱,該名稱是執行上一個命令所擷取的。 $principal變數將包含新的宣告主體。
若要擷取服務應用程式的安全性物件
若要擷取服務應用程式的安全性物件,請輸入下列命令。 $security變數會儲存服務應用程式安全性物件。
$spapp = Get-SPServiceApplication -Name "<ServiceApplicationDisplayName>" $spguid = $spapp.id $security = Get-SPServiceApplicationSecurity $spguid
其中 <ServiceApplicationDisplayName> 是服務應用程式的顯示名稱。
重要事項
您必須以引弧括住顯示名稱,而且它必須完全符合服務應用程式顯示名稱。 這包括大小寫。 如果您有多個服務應用程式具有相同的顯示名稱 (我們不建議此) ,您可以執行 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 取得本機伺服器陣列識別碼。
若要使用 PowerShell 擷取本機伺服器陣列識別碼
此程序在<若要啟動 Microsoft PowerShell 工作階段>程序的步驟 4 之後開始。
下列命令會擷取本機伺服器數位標識碼、將它儲存在 $farmID 變數中,並在命令提示字元中顯示標識碼:
$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 至 3 步驟。
在 [ 連線許可權 ] 對話框中,複製您在上一個程式中擷取的本機伺服器陣列標識碼,然後按兩下[ 新增]。
Ensure that the local farm ID is selected in the middle pane. Click the Full Control check box in the bottom pane.
按一下 [確定] 還原存取服務應用程式的全伺服器陣列,或者按一下 [取消] 結束工作,但不進行任何變更。
使用 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
其中 <ServiceApplicationDisplayName> 是服務應用程式的顯示名稱。
重要事項
您必須以引弧括住顯示名稱,而且它必須完全符合服務應用程式顯示名稱。 這包括大小寫。 如果您有多個服務應用程式具有相同的顯示名稱 (我們不建議此) ,您可以執行 Get-SPServiceApplication Cmdlet,而不需要自變數即可檢視所有服務應用程式。 然後,您可以直接透過其 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
另請參閱
概念
從 SharePoint Server 的 Web 應用程式新增或移除服務應用程式連線
SharePoint Server 2016 和 2019 中的帳戶權限及安全性設定
其他資源
在 SharePoint Server 中建立 Web 應用程式
Get-SPServiceApplicationSecurity