我正在开发面向公众的Web项目,该项目将部分由OLAP服务器提供支持。我想从安全角度比较几种方法:
我最初的想法是通过AJAX将用户意图的一些表示传递给Web服务器,让Web服务器进行大量输入验证并构造适当的MDX表达式以传递给OLAP服务器,最后代理OLAP结果返回浏览器。 (切线,这似乎是jpivot采用的方法;例如,我只是点击深入查看jpivot示例中的表,并且发送到服务器的内容不是MDX,而只是x-www- form-urlencoded string“wcf65768426.x = 3& wcf65768426.y = 3”。)
相比之下,xmla4js项目似乎以打开防火墙端口为前提,并通过XML / A向全世界(或至少向您的特定客户)展示您的OLAP服务器,编写MDX查询客户端javascript,并让浏览器直接命中OLAP服务器。
我的直觉反应是对第二种方法非常怀疑。它似乎假设如果有人要对我的OLAP服务器执行任意MDX语句,就不会发生任何不好的事情。我还不是特别先进的MDX的学生,但对我来说,这是一个无风险的主张并不是很明显。至少有人可以启动一些非常昂贵的查询,或者下载比您希望轻松提供给人们更大的数据集块。这不是人们通常对SQL服务器做的事情,我最初倾向于认为同样的原因建议您不应该使用OLAP服务器。
但是我还想假设xmla4js背后的人有一些用例并不是疯狂的安全风险。我想我可能会过于谨慎地考虑这个问题。
任何更有经验的OLAP人都想评论让人们直接敲击您的OLAP服务器的智慧,例如:通过XML / A?
答案 0 :(得分:1)
有趣的问题。当然,如果您认为您的用户可能会破解您的网页,则可能会直接访问您的数据集市(此处为OLAP服务器)。这是xmla4js选项,它非常类似于让用户直接访问rdbm。
是的,创建一个非常非常耗时的MDX查询(例如使用计算成员)肯定相对容易。
OLAP中可以实现细粒度的安全性,因此用户可能无法访问详细信息。事实和维度安全。
选项1的一个问题是成本(时间和金钱)。您需要更多时间来实施,并且您将无法使用现有的小部件和库(例如GVI Library)。对您的安全和黑客行为与交付时间有多重要?
一种可能的解决方案是使用XML代理进行XMLA,只允许执行“已知”请求。但是,什么是已知查询?
某些OLAP服务器允许更好地控制MDX请求分配的线程数以及可并行执行的请求数。但这只解决了部分问题。
这真是一个有趣的问题......并非无足轻重。对我们来说运气不好你不是我们的客户之一; - )
答案 1 :(得分:0)
经过反思,这可能是一个应该询问个别OLAP服务器产品的问题,而不是一般的OLAP问题。例如,如果OLAP服务器在编写时考虑了安全性,支持只读,非管理员帐户,并且可以超时耗时的查询超时,那么您可以更好地公开该服务器而不是相反的情况。
不幸的是,OLAP供应商似乎并不倾向于给出明确的指导。例如,找到the info you need来为匿名访问设置Sql Server Analysis Services相对容易,但是很难从Microsoft找到关于打开匿名SSAS XML / A访问公众的危险性的明确声明。互联网。