設定連結庫應用程式的安全性
設定連結庫應用程式的角色型安全性和驗證有特殊考慮。
啟用或停用驗證
要考慮的其中一個因素是,連結庫應用程式的呼叫端是否應該受到裝載進程的進程層級安全性檢查,也就是要啟用或停用驗證。
例如,如果連結庫應用程式將由瀏覽器裝載,可能需要接收未經驗證的回呼。 若要解決此問題,您可以停用驗證,讓裝載進程不會對連結庫應用程式的呼叫者執行安全性檢查。 當您停用驗證時,連結庫應用程式實際上會未經驗證,但所有對它發出的呼叫都會成功。 連結庫應用程式的呼叫端不受裝載進程的安全性檢查所約束。 基本上,連結庫應用程式會標記為「未經驗證」,而且會省略連結庫應用程式呼叫的安全性檢查。
如需如何啟用或停用驗證的詳細資訊,請參閱 啟用連結庫應用程式的驗證。
強制執行角色檢查
另一個要做出的決定是連結庫應用程式是否應該使用 角色型安全性。 如果使用角色型安全性,您必須使用元件層級安全性來執行任何存取檢查。指派給連結庫應用程式的角色不會反映在進程安全性描述元中。 連結庫應用程式可控制的唯一授權是在元件層級。 如需元件層級安全性的詳細資訊,請參閱 安全性界限。
若要查看如何設定元件層級安全性,請參閱 設定存取檢查的安全性層級。
組態案例
若要進一步瞭解決定連結庫應用程式是否應該使用角色型安全性,以及連結庫應用程式是否應該未經驗證的影響,請考慮下列案例:
已啟用驗證,並使用角色型安全性。 在此案例中,裝載進程會進行安全性檢查,而且某些呼叫端在進程層級遭到拒絕存取。 此外,角色檢查是在連結庫應用層級完成,因此在檢查角色成員資格時,透過進程層級安全性檢查進行角色檢查的一些呼叫端會被拒絕存取連結庫應用程式。 這是使用角色型安全性之 COM+ 連結庫應用程式的一般案例。
下圖顯示啟用驗證和使用角色檢查的案例。
已啟用驗證,且不會使用角色型安全性。 在此案例中,安全性檢查是在程式層級完成,但不會在連結庫應用層級檢查角色成員資格。 因此,透過進程層級安全性檢查進行連結庫應用程式的任何呼叫端都會獲得連結庫應用程式的存取權,因為未檢查角色成員資格。 當不使用角色型安全性的 COM 應用程式移轉至 COM+ 連結庫應用程式時,就會存在這種情況。
下圖顯示啟用驗證且未使用角色檢查的案例。
驗證已停用,且會使用角色型安全性。 在此案例中,安全性檢查是在進程層級進行,但連結庫應用程式的呼叫者未經過驗證。 實際上,連結庫應用程式的呼叫端會豁免處理層級安全性檢查。 因為已啟用角色檢查,因此僅角色成員資格會決定誰獲得連結庫應用程式的存取權。 當裝載進程完成的安全性檢查太嚴格,但您需要對連結庫應用程式或特定介面或方法有一些存取限制時,此案例可能很合適。 此案例可讓您有效地關閉進程安全性,而且仍然使用角色型安全性進行適當的層級存取檢查。
下圖顯示已停用驗證且正在使用角色檢查的案例。
驗證已停用,且不會使用角色型安全性。 在此案例中,安全性檢查仍會在程式層級完成,但如上述案例所示,連結庫應用程式的呼叫端一律會通過此安全性檢查。 因為角色檢查也已停用,因此不會在連結庫應用層級檢查角色成員資格。 基本上,任何人都可以呼叫連結庫應用程式。 當您的 COM 物件需要接收未經驗證的回呼時,應該選擇此案例,就像 Internet Explorer 和 Microsoft Management Console 嵌入式管理單元所裝載的 ActiveX 控件一樣。 當然,接收未經驗證的呼叫時,必須信任此 COM 物件才能適當地運作。 例如,它不應該代表其呼叫端存取任意檔案。
下圖顯示停用驗證且未使用角色檢查的案例。
決定要為 COM+ 連結庫應用程式啟用或停用驗證之後,請參閱 啟用連結庫應用程式的 驗證以取得逐步程式,說明如何使用元件服務系統管理工具停用(或啟用)驗證。 如果您的連結庫應用程式將使用角色型安全性,請參閱 設定角色型安全性。
相關主題