多应用服务器环境和Memcached安全性

时间:2010-02-24 20:24:02

标签: c# asp.net sql-server coldfusion memcached

我们希望将Memcached集成到我们的基础架构中,但在我们做之前有安全问题。我们运行多个平台,包括ASP.NET和ColdFusion,并且有许多应用程序开发人员在不同平台上处理许多小应用程序。关注的是:

App A将项目“dog”放入缓存中。

App B读取项目“dog”(或者更糟:App B更新项目“dog”)

发生这种情况后,App A要么检索错误信息,要么已查看其信息,即“被盗”。我们想要做的是使每个应用程序只能与自己的沙箱交互,并且不会干扰或读取其他应用程序的数据。

这可能吗?感谢。

3 个答案:

答案 0 :(得分:1)

在您的基础架构上创建多个memcached实例,并为每个实例提供不同的端口。通过这种方式,您可以隔离自己 - 但这不是您想要做的事情,您将不得不拆分可用的内存资源。


你应该能够使用“惯例” - 即使用Anon的建议。

我的建议是:任何需要保护的东西都不应该在memcached实例中。将此与anon的建议和您所做的最佳实践一起使用。

答案 1 :(得分:0)

memcached非常明显地忽略了部署的安全性(没有访问控制列表,没有缓存内容篡改保护,没有流量隐私等),所有这些都是以性能为名。可以选择将访问控制(SASL)编译为memcached,但大部分时间都被省略。

如果您需要篡改内容的证明或缓存中的项目隐私,您必须在应用程序中实现它(即在上传之前签名或加密缓存的内容),但您需要支付签名/启动的费用每次缓存访问的签名和/或加密/解密,以及配置执行这些操作所需密钥的相当复杂的问题。

答案 2 :(得分:0)

我们随SASL auth一起提供的最后几个版本,以防止在不受信任的环境中进行未经授权的访问。

在开发树中,我们拥有可插拔的存储引擎支持,允许您执行有趣的操作,例如在应用程序之间隔离缓存。例如,我有一个部署的实例,其中有许多用户无法看到彼此的数据。 User1可以缓存dog,User2可以缓存dog,但不会干扰。