C# 多应用服务器环境与Memcached安全
我们正在寻求将Memcached集成到我们的基础设施中,但在此之前,我们需要考虑安全问题。我们运行多个平台,包括ASP.NET和ColdFusion,许多应用程序开发人员在不同的平台上开发许多小应用程序。问题在于: 应用程序A将项目“狗”放入缓存 应用程序B读取项目“狗”(或更糟:应用程序B更新项目“狗”) 发生这种情况后,应用程序A要么检索错误信息,要么已经查看了其信息,即“被盗”。我们想做的是使每个应用程序只能与自己的沙箱交互,而不能干扰或读取其他应用程序的数据C# 多应用服务器环境与Memcached安全,c#,asp.net,sql-server,coldfusion,memcached,C#,Asp.net,Sql Server,Coldfusion,Memcached,我们正在寻求将Memcached集成到我们的基础设施中,但在此之前,我们需要考虑安全问题。我们运行多个平台,包括ASP.NET和ColdFusion,许多应用程序开发人员在不同的平台上开发许多小应用程序。问题在于: 应用程序A将项目“狗”放入缓存 应用程序B读取项目“狗”(或更糟:应用程序B更新项目“狗”) 发生这种情况后,应用程序A要么检索错误信息,要么已经查看了其信息,即“被盗”。我们想做的是使每个应用程序只能与自己的沙箱交互,而不能干扰或读取其他应用程序的数据 这可能吗?谢谢。在您的基础结
这可能吗?谢谢。在您的基础结构上创建多个memcached实例,并为每个实例提供不同的端口。通过这种方式,您可以隔离自己——但是,这不是您想要的方式,您必须分割可用的内存资源
你应该能够使用“约定”来为你的利益服务——也就是说,使用Anon的建议
我的建议是:任何需要保护的东西都不应该在memcached实例中。请在anon的建议下使用此选项,并按照最佳实践行事。memcached非常明确地将安全性排除在其部署之外(无访问控制列表、无缓存内容篡改保护、无流量隐私等),所有这些都是以性能为名的。可以选择将访问控制(SASL)编译到memcached中,但大多数情况下都没有编译
如果您需要篡改内容证明或缓存中项目的隐私,您必须在应用程序中实现(即在上传缓存内容之前对其进行签名或加密),但您将支付签名/验证签名和/或每次缓存访问加密/解密的费用,而且,在设置执行这些操作所需的密钥方面,您还有一个相当复杂的问题。我们随SASL auth提供的最近几个版本用于防止在不受信任的环境中进行未经授权的访问
在开发树中,我们有可插拔的存储引擎支持,允许您做一些有趣的事情,比如隔离应用程序之间的缓存。e、 例如,我部署了一个实例,其中有许多用户无法看到彼此的数据。用户1可以缓存
dog
,用户2可以缓存dog
,并且它们不会产生干扰。当特定应用程序访问缓存时,在应用程序想要使用的标识符之前添加一个特定于应用程序的标识符。memcached是否与部分标识符一起工作?例如,如果我有dog_Name和dog_SSN这两个键,我可以在其中查询“d*”并获取每个以“d”开头的键吗?或者密钥需要精确匹配吗?Memcached非常简单,它不支持正则表达式,也不是通用数据库。这是一个分布式字典——你要求它提供你想要检索的确切密钥。我也有这个想法,并且认为我们的服务器管理员可能会因此而恨我们。不过,听到类似的想法很好。谢谢