2010-02-24 82 views
3

我們正在尋找Memcached的融入到我們的基礎設施,但有一個安全問題,我們之前做。我們運行了多個平臺,包括ASP.NET和ColdFusion,並且有許多應用程序開發人員在不同平臺上工作許多小應用程序。關注的是:多應用服務器環境和Memcached的安全

應用程序將項目「狗」放入緩存中。

應用程序B讀取項目「狗」(或者更糟:應用B更新項目「狗」)

發生這種情況後,應用一個或者獲取不良信息,或已經有它的信息看,又名「偷」 。我們希望做的是讓每個應用只能與自己的沙盒進行交互,並且不得干擾或讀取其他應用的數據。

這可能嗎?謝謝。

+2

當一個特定的應用程序訪問緩存時,將一個應用程序特定的標識符預先加入到應用程序想要使用的標識符中。 – 2010-02-24 20:25:58

+0

memcached是否可以使用部分標識符?例如,如果我有密鑰dog_Name和dog_SSN,我可以查詢它爲「d *」並獲取每個以「d」開頭的密鑰?或者鑰匙需要完全匹配? – jocull 2010-02-24 20:32:33

+0

Memcached非常簡單,它不支持正則表達式,它不是通用數據庫。它是一個分佈式字典 - 你問它一個你想要檢索的確切鍵。 – 2010-02-24 20:35:13

回答

1

您的基礎架構創建多個memcached實例,並給每個實例不同的端口。通過這種方式,你可以將自己隔離開來 - 然而,這不是你想要做的事情,你將不得不拆分可用的內存資源。


您應該能夠使用「慣例」來獲得您的優勢 - 即使用Anon的建議。

我的建議是:任何需要保護不應該在一個memcached的實例。把這個和你的建議一起使用,並且做你認爲最好的做法。

+0

我也有這個想法,並認爲我們的服務器管理員可能會討厭我們。儘管聽到類似的想法很好。謝謝。 – jocull 2010-02-24 20:37:17

0

Memcached是非常顯式地從它的部署(無訪問控制列表,沒有緩存的內容篡改保護,沒有交通隱私等)留出安全,所有在性能的名字。訪問控制(SASL)可以選擇性地編譯到memcached中,但大多數時候都被忽略。

如果您需要篡改緩存中的內容證明或緩存中的項目隱私,您必須在應用程序中實現它(即在上傳之前對緩存的內容進行簽名或加密),但是您需要支付簽名/使用每個緩存訪問都可以簽名和/或加密/解密,並且您還有一個相當複雜的配置執行這些操作所需密鑰的問題。

0

我們與SASL AUTH運,以防止不信任的環境中未經授權的訪問的最後幾個版本。

在發展中的樹木,我們有插件式存儲引擎的支持讓你做有趣的事情,就像應用程序之間的隔離緩存。例如,我有一個部署的實例,有許多用戶看不到彼此的數據。用戶1可以緩存dog,用戶2可以緩存dog並且它們不會發生干擾。