3

我正在开发一个面向公众的 Web 项目,该项目将部分由 OLAP 服务器提供支持。我想从安全的角度比较几种方法:

  1. 我最初的想法是通过 AJAX 将用户意图的一些表示传递给 Web 服务器,让 Web 服务器进行大量输入验证并构造适当的 MDX 表达式以传递给 OLAP 服务器,最后将 OLAP 结果代理回浏览器。(切线,这似乎是jpivot采用的方法;例如,我只是单击以深入到 jpivot 示例中的表中,发送到服务器的不是 MDX,而只是 x-www-form-urlencoded 字符串“wcf65768426.x=3&wcf65768426.y=3”。)

  2. 相比之下,xmla4js项目的前提似乎是打开防火墙端口并通过 XML/A 将您的 OLAP 服务器暴露给世界(或至少暴露给您的特定客户),在客户端 javascript 中编写 MDX 查询,并直接使用浏览器打OLAP服务器。

我的直觉反应是对第二种方法持怀疑态度。如果有人对我的 OLAP 服务器执行任意 MDX 语句,似乎不会发生任何坏事。我还不是特别高级 MDX 的学生,但对我来说,这并不是一个无风险的提议。至少有人可以启动一些非常昂贵的查询,或者下载比您希望轻松提供给人们更大的数据集。这不是人们通常对 SQL 服务器做的那种事情,而且我最初倾向于认为同样的原因表明您也不应该对 OLAP 服务器做这件事。

但我也想假设 xmla4js 背后的人有一些用例,这些用例并不是疯狂的安全风险。我想我可能会过于谨慎地考虑这个问题。

任何更有经验的 OLAP 人员想要评论让人们直接敲击您的 OLAP 服务器(例如通过 XML/A)是否明智?

4

2 回答 2

1

有趣的问题。当然,如果您认为您的用户可能会入侵您的网页,那么直接访问您的数据集市(此处为 OLAP 服务器)是一个风险来源。这是 xmla4js 选项,它与让用户直接访问 rdbm 非常相似。

  • 是的,当然创建一个非常非常耗时的 MDX 查询相对容易(例如,使用计算成员)。

  • 在 OLAP 中可以实现细粒度的安全性,因此用户可能无法访问详细信息。事实和维度安全。

选项 1 的一个问题是成本(时间和金钱)。您将需要更多时间来实施,并且您将无法使用现有的小部件和库(例如GVI 库)。与交付时间相比,安全和黑客攻击对您来说有多重要?

一种可能的解决方案是使用 XMLA 的 http 代理,只允许执行“已知”请求。但是,什么是已知查询?

一些 OLAP 服务器允许更好地控制 MDX 请求分配的线程数以及可以并行执行的请求数。但这只能部分解决问题。

这真的是一个有趣的问题......不是微不足道的。对我们来说运气不好,你不是我们的客户之一 ;-)

于 2011-12-22T12:11:35.580 回答
0

回想起来,这可能是一个关于个别 OLAP 服务器产品的问题,而不是关于一般 OLAP 的问题。例如,如果 OLAP 服务器在编码时考虑到了安全性,支持只读的非管理员帐户,并且可以使耗时过长的查询超时,那么您可以更好地公开该服务器比相反的情况。

不幸的是,OLAP 供应商似乎并不倾向于对此给出明确的指导。例如,找到设置 Sql Server Analysis Services 以进行匿名访问所需的信息相对容易,但很难找到 Microsoft 明确声明打开匿名 SSAS XML/A 访问公共 Internet 的危险性.

于 2012-04-03T16:31:27.993 回答