執行 Office 方案的安全性需求 (2003 系統)

更新:2007 年 11 月

適用於

本主題中的資訊僅適用於指定的 Visual Studio Tools for Office 專案和 Microsoft Office 版本。

專案類型

  • 文件層級專案

  • 應用程式層級專案

Microsoft Office 版本

  • Microsoft Office 2003

如需詳細資訊,請參閱依應用程式和專案類型提供的功能

文件層級自訂和應用程式層級增益集會整合 .NET Framework 提供的安全性功能。這樣就可以讓您的方案運用各種識別項做為信任決策的依據。

若要部署及執行 Microsoft Office 方案,您必須在每位使用者的安全性原則中授與組件完全信任。在自訂的情況中,如果文件位於網路位置而不在使用者電腦上,則您也必須對文件授與完全信任。如需在使用者電腦上設定安全性原則的詳細資訊,請參閱部署安全性原則

Microsoft Office 方案增加了不接受「所有程式碼」或「依區域決定」辨識項類型的自訂安全性限制,這表示在您於安全性原則中授與組件使用權限 (信任授權) 之前,Microsoft Office 應用程式不會執行位於本機電腦、網路或網際網路的任何組件。

Microsoft Office Outlook 包含物件模型保護,有助於防止未受信任的程式碼存取 Outlook 物件模型。物件模型保護也會導致 Outlook 在程式碼執行時對使用者顯示警告。如需如何避免這些警告的詳細資訊,請參閱指定 Office 方案的安全性考量

信任層級

.NET Framework 安全性包括下列三種信任層級:

  • 完全信任。此層級會授與程式碼使用權限,以執行目前使用者可以執行的任何動作。所有程式碼都必須擁有在 Office 方案中執行的完全信任。

  • 部分信任。此層級是受限制的使用權限集合,只能授與指定的使用權限。部分信任程式碼無法在 Office 方案中執行。

  • 未受信任。此層級不會授與任何使用權限,因此程式碼不會執行。

必要的使用權限集合為完全信任,Office 方案不會執行具有部分信任或未受信任的 Managed 程式碼擴充。如需使用權限集合的詳細資訊,請參閱具名使用權限集合

辨識項類型

.NET Framework 安全性中包含下列辨識項類型:

如需詳細資訊,請參閱辨識項

Visual Studio 會使用 URL 辨識項,在您建置專案時授與對它們的完全信任。Visual Studio 在建置 Visual Studio Tools for Office 專案時,它會改變使用者層級的安全性原則,以授與對 Office 專案建置位置的完全信任。自訂或增益集執行時,載入器會將組件位置的 URL 提供給原則系統 (此系統可授與完全信任給特定位置)。

一般而言,如果您是在自己的電腦上工作,這個安全性層級已經足夠了,不過如果您在部署方案時使用此辨識項,就可能會發生安全性問題。在部署組件之前,應該為它指定一種更為強式的辨識項。使用更為強式辨識項的原因有兩個:

  • 如果您授與對 Web 位置的完全信任,擁有該位置寫入權限的惡意使用者便可將組件取代成他們自己的程式碼,並誘騙使用者執行該程式碼。

  • 預設的電腦層級原則會授與對所有網站的部分信任,但是您需要完全信任,因此將使用者層級原則設定為授與對 URL 的完全信任並不足以應付這項需求。

如果您選擇使用 URL 辨識項,請務必在「電腦」原則層級的「內部網路區域」分支中設定原則,而非「使用者」原則層級。此外,只有可信任的人員才能寫入授與完全信任的位置。比較好的原則是使用位置和密碼編譯強式辨識項 (例如強式名稱) 的組合。強式名稱必須搭配位置資訊一起使用,這樣您才能在具有強式名稱的應用程式受到危害時,進行修補動作。

在文件層級的自訂中,文件也具有以位置為主的辨識項,讓惡意使用者更難藉由建立使用不正確程式碼之文件的方式,來變更受信任程式碼的用途。如果具有 Managed 程式碼擴充的文件不是位於完全信任的位置,它將不會執行組件。根據預設,MyComputer 區域是受到完全信任的,所以使用者電腦上的文件可以執行程式碼,但是網際網路區域並未受到完全信任。

具有 Managed 程式碼擴充的文件不使用依賴 Office 憑證存放區的 Office 巨集安全性。巨集安全性與組件安全性沒有關聯。

如需 .NET Framework 中安全性的詳細資訊,請參閱程式碼存取安全性的基本概念,或更廣泛地參閱 .NET Framework 中的安全性安全性原則管理概觀

組件安全性概觀

組件位置

預設值

如何設定

開發電腦

當您在建置 Office 專案時,就會對主要組件和 [複製到本機] 設定為 true 的所有參考組件在電腦上授與完全信任。

您不需要執行任何動作。

共用網路位置

組件不具有任何信任。

系統管理員設定信任這個位置的網路安全性原則,並且保護組件 (例如,使用數位簽章)。如需詳細資訊,請參閱組件安全性考量

使用者電腦

組件不具有任何信任。

系統管理員在使用者的安全性原則中授與組件信任。如需詳細資訊,請參閱部署安全性原則

文件安全性概觀

文件位置

預設值

如何設定

開發電腦

文件具有完全信任。

您不需要執行任何動作。

共用網路位置

文件不具有任何信任。

系統管理員設定信任這個位置的網路安全性原則,也可以選擇性地設定自訂原則只信任 Office 文件。如需詳細資訊,請參閱HOW TO:在共用位置中授與文件和活頁簿使用權限 (2003 系統)

使用者電腦

文件具有完全信任。

您不需要執行任何動作。

開發電腦上的安全性

當您以開發人員的身分在 Visual Studio 中建置 Office 專案時,根據預設,組件的完整路徑 (包括組件名稱) 會在使用者層級加入至您的 .NET Framework 安全性原則。因此,組件會得到完全的信任。建置專案時,專案輸出資料夾中參考的組件也會獲得完全信任。

如果預設設定未變更,Visual Studio Tools for Office 就會在您每次建置方案時檢查快取中的安全性原則。如果組件沒有完全信任,則 Visual Studio Tools for Office 會授與完全信任。即使您重新命名組件或將專案移至新位置,這仍可讓您的專案保留信任。

如果您變更預設信任設定 (將 [信任組件位置] 屬性設為 false),則 Visual Studio 不會授與對組件的完全信任,而且程式碼也不會執行。若要重新執行程式碼,請將 [信任組件位置] 屬性變更為 true,並重建您的方案。您也可以設定全域規則,讓專案資料夾和子資料夾中執行的所有程式碼都具有完全信任。

如需如何設定專案的信任選項,以及如何授與對資料夾完全信任的詳細資訊,請參閱 HOW TO:將使用權限授與資料夾和組件 (2003 系統)

安全性原則快取

Common Language Runtime 會快取每個處理序的安全性原則。當您在建置專案時,Visual Studio 就會檢查這個快取,查看組件是否具有完全信任。如果組件在 Visual Studio 啟動時已經具有完全信任,Visual Studio 就不會在建置程序期間建立這些組件的原則。

如果您在 Visual Studio 執行時變更與專案相關的安全性原則,Visual Studio 就不會偵測到這項變更。如果您所做的變更讓專案無法執行,應用程式就會擲回安全性例外狀況,因為 Visual Studio 不會重新建立將完全信任授與組件的原則。若要讓 Visual Studio 偵測安全性原則變更,您必須先關閉並重新開啟 Visual Studio。

使用舊版本建立的方案

您電腦上安裝的每個 Microsoft .NET Framework 版本都有相關聯的安全性原則。Visual Studio Tools for Office 方案會檢查建立方案之 .NET Framework 版本的安全性原則。也就是說,如果某個方案是使用 Visual Studio Tools for Office (2003 版) 所建立,它就一定會檢查 .NET Framework 1.1 版的安全性原則。如果某個方案是使用 Visual Studio 2005 Tools for Office 所建立,它就一定會檢查 .NET Framework 2.0 版的安全性原則。

Visual Studio Tools for the Office system 3.0 方案會檢查是否為 .NET Framework 3.5 版,但可將 Office 2003 的方案設定為 .NET Framework 2.0 版。如需詳細資訊,請參閱 HOW TO:變更目標 .NET Framework

建立於網路上的專案

雖然您可以在共用網路位置中建立專案,不過您必須在電腦層級授與此專案完全信任,才能透過網路執行。根據預設,Visual Studio Tools for Office 會在使用者層級授與 URL 辨識項。您必須以手動方式在電腦層級授與組件完全信任。

如果您只使用 URL 辨識項來授與對網路位置的完全信任,擁有該位置寫入權限的惡意使用者便可將組件取代成他們自己的程式碼,並誘騙使用者執行該程式碼。請考慮使用其他辨識項形式,以取代 URL 辨識項或補充 URL 辨識項的不足。如需詳細資訊,請參閱本主題中的辨識項類型。

使用者安全性

使用者可以像開啟任何文件一樣地開啟具有 Managed 程式碼擴充的文件。如果文件位於使用者電腦上,或者在網路共用上已經授與信任時,Word 或 Excel 就會嘗試載入並執行組件。在增益集的狀況中,當使用者啟動 Microsoft Office 應用程式時,增益集便會載入。

Microsoft Office 應用程式會檢查安全性原則並採取下列其中一項動作:

  • 如果已明確授與組件和文件 (如果適用的話) 使用權限,則會允許組件執行。如需如何在使用者電腦上設定安全性原則的詳細資訊,請參閱部署安全性原則

  • 如果唯一可以用來判斷使用權限的辨識項是以「所有程式碼」或「區域」為依據,這個程式碼將不會執行,而且使用者會看到一項錯誤訊息,說明目前的安全性原則不讓程式碼執行。使用者應當聯繫系統管理員,以設定可讓程式碼執行的原則。

預設的 Visual Studio Tools for Office 安全性原則不允許自訂中的程式碼執行。根據預設,安全性原則會信任「我的電腦」區域,但是除非程式碼已明確地獲得授與完全信任,否則具有 Managed 程式碼擴充之文件的應用程式定義域原則不會允許「我的電腦」區域中的程式碼執行。這和一般的開發人員及使用者熟悉的情況不同,但是它能讓使用預設值的桌面更為安全。此外,使用者也不能變更 Office 中的安全性選項來允許未受信任的程式碼執行。只有在 .NET 安全性原則中的明確變更才能讓 Managed 程式碼擴充執行。

信任 Office 文件

在大部分情況下,Office 文件是從「我的電腦」區域執行,而且不需要執行任何動作就可以讓文件如預期開啟。但是,組件仍然必須獲得完全信任才能讓應用程式執行。文件以電子郵件附件的形式到達時,即使文件指向受信任的組件,也必須在方案執行之前將其儲存在電腦上的其他位置 (例如,使用者的桌面)。這是因為附件位於網際網路區域,且不具有完全信任。

如果文件是放在網路上,系統管理員也必須對文件授與使用權限。對於靜態文件 (例如範本),系統管理員可以依據文件的完整路徑 (URL) 來信任文件。對於許多使用者都可以上載任意內容的一般性儲存區 (例如 SharePoint 清單),系統管理員可以選擇只信任放在這個共用位置上的 Office 文件。如需詳細資訊,請參閱HOW TO:在共用位置中授與文件和活頁簿使用權限 (2003 系統)

從組件移除信任

如果系統管理員發現組織內有安全性的問題,他可以對所有程式碼套用不提供執行使用權限的原則,暫時停用所有 Managed 程式碼。如果某些 Managed 程式碼確有必要,系統管理員可以進一步修改原則,選擇程式碼的唯一屬性 (例如位置、強式名稱或簽章) 並且提供必要的使用權限,只讓必要的程式碼執行。在安全性問題解決之後,只要將原則還原成原來的形式,就可以輕易地重新啟用 Managed 程式碼。如需詳細資訊,請參閱HOW TO:從資料夾和組件移除使用權限 (2003 系統)

請參閱

概念

安全的部署 (2003 系統)

Office 方案的安全性最佳作法 (2003 系統)

指定 Office 方案的安全性考量

設定應用程式的安全性

其他資源

Office 方案中的安全性 (2003 系統)