Share via


沙箱化解決方案考量

「沙箱化解決方案」是 Microsoft SharePoint 2010 中的一項功能,可讓網站集合使用者上傳自己的自訂程式碼解決方案。 常見的沙箱化解決方案是使用者上傳自己的 Web 組件。

沙箱化 SharePoint 應用程式會在安全受監視的流程中執行,而此流程有權存取 Web 伺服陣列的有限部分。 Microsoft SharePoint 2010 會使用功能、解決方案資源庫、解決方案監視和驗證架構的組合,來啟用沙箱化解決方案。

指定專案信任層級

Visual Studio 透過稱為「沙箱化解決方案」的布林專案屬性支援沙箱化解決方案。 這個屬性可以隨時在專案中設定,也可以在您於 [SharePoint 自訂精靈] 中建立專案時指定。

注意

建立專案之後變更專案的「沙箱化解決方案」屬性可能會導致驗證錯誤。

如果 [沙箱化解決方案] 屬性設定為 false,或是您選擇 [部署為伺服陣列解決方案] 選項,則解決方案會被視為伺服陣列範圍解決方案。 不過,如果 [沙箱化解決方案] 屬性設定為 true,或是您在精靈中選取 [部署為沙箱化解決方案] 選項,則會以不同於伺服陣列解決方案的方式處理解決方案。

SharePoint 網站階層

若要了解沙箱化解決方案的運作方式,知道 SharePoint 網站的範圍是階層式會有所幫助。 頂端元素稱為 Web 伺服陣列,而其他元素是其附屬:

Web 伺服陣列

Web 應用程式 A

網站集合 A1

網站 A1a

Web 應用程式 B

網站集合 B1

網站 B1a

網站 B1b

網站集合 B2

網站 B2a

如您所見,Web 伺服陣列可以包含一或多個 Web 應用程式,而這些應用程式又可以包含一或多個網站集合,這些集合可有子網站,依此類推。 對某個網站集合所做的變更只會影響該網站集合,而不會影響其他網站集合。 不過,在 Web 伺服陣列層級所做的變更會影響伺服陣列上的所有網站集合。

Windows SharePoint Services (WSS) 3.0 可讓您只將解決方案部署到伺服陣列層級,但 Microsoft SharePoint Foundation 可讓您部署到伺服陣列層級 (伺服陣列解決方案) 或網站集合層級 (沙箱化解決方案)。

為何選擇沙箱化解決方案?

在 WSS 3.0 中,解決方案只能部署到伺服陣列層級。 這表示可能會部署潛在有害或不穩定的解決方案,從而影響整個 Web 伺服陣列,以及在其下執行的所有其他網站集合和應用程式。 不過,透過使用沙箱化解決方案,您可以將解決方案部署至伺服陣列的子區域,也就是特定的網站集合。 為了提供額外的保護,解決方案的組件不會載入至主要 IIS 流程 (w3wp.exe)。 相反地,其會載入至個別流程 (SPUCWorkerProcess.exe)。 此流程會受到監視並實作配額和節流,以保護伺服陣列免受執行有害活動的沙箱化解決方案牽連,例如執行耗用 CPU 週期的緊密迴圈。

Windows SharePoint Services 2010 具有一項稱為「網站集合解決方案資源庫」的功能。您可以從 [SharePoint 2010 管理中心] 頁面存取這項功能,或是透過開啟 [網站動作] 功能表、選擇 [網站設定],然後選擇 SharePoint 網站中 [資源庫] 下的 [解決方案] 連結,存取這項功能。 解決方案資源庫是解決方案的存放庫,可讓網站集合管理員管理其網站集合中的解決方案。

解決方案資源庫是儲存在 SharePoint 網站根 Web 中的文件庫。 解決方案資源庫會取代網站範本並支援解決方案套件。 上傳 SharePoint 解決方案套件 (.wsp) 檔案時,會將其當作沙箱化解決方案處理。

沙箱化解決方案限制

部署沙箱化解決方案時,其可用的 SharePoint 功能陣列僅限於協助減少其可能具有的任何安全性弱點。 其中一些限制包括:

  • 沙箱化解決方案具有可供其使用的可部署解決方案元素限定子集。 無法使用可能易受攻擊的 SharePoint 專案範本,例如網站定義和工作流程。

  • SharePoint 會在流程 (SPUCWorkerProcess.exe) 中執行沙箱化解決方案程式碼,而該流程與主要 IIS 應用程式集區 (w3wp.exe) 流程分開。

  • 對應的資料夾無法新增至專案。

  • Microsoft SharePoint Server 組件 Microsoft.Office.Server 中的類型不能用於沙箱化解決方案。 此外,只有 Microsoft SharePoint Foundation 組件 Microsoft.SharePoint 中的類型可用於沙箱化解決方案。

    請務必注意,將 SharePoint 解決方案指定為沙箱化解決方案不會影響 SharePoint 伺服器;其只會確定 SharePoint 專案如何從 Visual Studio 部署至 SharePoint,以及其繫結至哪些組件。 其不會影響產生的 .wsp 檔案,而且 .wsp 檔案沒有直接與「沙箱化解決方案」屬性相互關聯的資料。

沙箱化解決方案中的功能和元素

沙箱化解決方案支援下列功能和元素:

  • 內容類型/欄位

  • 自訂動作

  • 宣告式工作流程

  • 事件接收器

  • 功能圖說文字

  • 列出定義

  • 列出執行個體

  • 模組/檔案

  • 導覽

  • Onet.xml

  • SPItemEventReceiver

  • SPListEventReceiver

  • SPWebEventReceiver

  • 支援衍生自 System.Web.UI.WebControls.WebParts.WebPart 的所有 Web 組件

  • Web 組件

  • WebTemplate 功能元素 (而不是 Webtemp.xml)

  • 視覺效果 Web 組件

    沙箱化解決方案不支援下列功能和元素:

  • 應用程式頁面

  • 自訂動作群組

  • 伺服陣列範圍功能

  • HideCustomAction 項目

  • Web 應用程式範圍功能

  • 使用程式碼的工作流程