2012-06-14 61 views
1

在我們的組織中,我們託管了許多在我們的內部網絡上相互通信的WCF服務。通常,我們使用netTcpBinding來獲得這些服務的性能。目前關於是否在綁定端點上啓用安全性存在爭議,我想知道是否有任何關於確定是否/何時禁用安全性適用的具體準則。內部網絡上的WCF端點安全最佳實踐

我傾向於留下安全上,因爲

  1. 這是默認設置,所以它需要較少的配置使用
  2. 這是默認設置,所以它的目的是更經常地使用比不了
  3. 它只是「感覺」更多的權利,以更安全,而不是安全性較低的

辯論的另一面是:

  1. 沒有理由使用安全假設網絡本身安全
  2. 這是少高性能的使用安全
  3. 有時認證的服務可以是棘手的,如果客戶有自己的客戶其身份驗證到它(我認爲這可能是一個'雙跳'情景)

我想不管最佳實踐是什麼,最終的答案是最終「取決於」。不過,我想知道哪種情況應該在生產環境中受到青睞。

+0

測試上的wsHttpBinding(不是TCP)和PerSession是不是有沒有的安全支持。你使用PerSession嗎?如果這樣測試。沒有安全性,如何識別頻道? – Paparazzi

回答

1

你是對的 - '這取決於'。

安全性是一件好事,但如果你不需要需要它(即你正在一個安全的環境中工作,不需要認證),那麼它可能會有很大的開銷。

我最近在一個項目中工作,我們發現Windows身份驗證造成了巨大的開銷,請求大小(大量微小請求)的翻倍或三倍。我們只需關閉身份驗證即可顯着提升性能。

關於WCF的好處是安全性是完全可配置的。假設您的代碼中沒有任何安全依賴關係,那麼可以通過配置在必要時輕鬆地打開和關閉它。另外假設你正在使用配置!

1

聽起來好像您已經擁有沒有安全性的服務。很明顯,有人做出了決定使用你當前的配置。我傾向於非常重視'如果不破壞不修復'的原則,所以在你的方案中,改變許多WCF服務的配置將需要提供一個案例,說明爲什麼需要花費的時間和精力被投資來這樣做。坦率地說,在你的情況下,你提出的三個支持安全的觀點並不適合我。

這是爲新開發或新環境作出決定的完全不同的場景。在這種情況下,默認的'安全開'(假設最小的努力,成本和性能影響)將是我的首選選項。

+0

我們有一些做,有些沒有,但沒有一個真正的標準。這一切都取決於開發人員在哪個方面進行初始配置。一旦以某種方式配置了服務,我們就不會返回並更改它,因爲這需要跟蹤並更新連接到它的每個客戶端。 – mclark1129

1

它還沒有被提及,但我也傾向於想到你傳遞什麼樣的數據。如果我們正在談論銀行交易或重要的事情,我會選擇儘可能多的安全性。另一方面,如果只是在某些桌面應用程序中顯示的數據,而不是帳戶號碼,社會安全號碼,信用卡信息等,那麼我認爲禁用它無任何問題。

此外,性能目前是一個問題?如果您必須符合SLA的定義和交易時間,禁用安全性可能是一件好事。

它是如此配置的,因爲有很多事情要考慮:)

+0

對於大多數服務來說,性能並不是真正的問題。然而,我可以想象,隨着越來越多的這些服務彼此交談,一度微不足道的性能差異可能會聚集成一些東西,從而開始放慢速度。但是,我認爲你在考慮中包含交換數據的重要一點。 – mclark1129