如何限制对 OpenGrok 结果的访问?
Posted
技术标签:
【中文标题】如何限制对 OpenGrok 结果的访问?【英文标题】:How to restrain access to OpenGrok results? 【发布时间】:2014-07-02 05:11:28 【问题描述】:我们创建了一个 OpenGrok 服务器并索引了我们的资源。问题是我们使用的 SCM(这里是 Perforce,但我想这不适用于 Perforce,因为文件/文件夹级别的权限被广泛使用)限制了每个文件或文件夹的访问,而 OpenGrok 没有!
所以今天,任何使用 OpenGrok 执行搜索的用户都将检索所有文件,即使是他/她不应访问的文件!在我看来,这是一个障碍:我们永远不会在生产中发布这样的安全漏洞。
您知道实现这种安全性的任何设置/解决方法吗?
编辑:任何人都应该使用这个 OpenGrok,我当然可以使用我的权限检索 Perforce 源(所以我只会获得我有权访问的文件)来执行搜索,但这不会满足广大受众的这一需求。
【问题讨论】:
【参考方案1】:https://github.com/OpenGrok/OpenGrok/issues/503 随时加入那里的辩论(或类似的请求),ev。发送补丁
【讨论】:
这回答了我的观点,即今天的 OpenGrok 没有本地方式来实现这一点。因此,您需要每个用户/类似用户组一个实例,或者在上面构建自己的安全层。【参考方案2】:您是否考虑过创建一个不同的 p4 用户来同步 OpenGrok 索引的源代码?该用户可以根据 P4 保护表中的条目进行有限访问。这样您就可以在文件夹级别同步代码,同时根据保护表权限隐藏子文件夹。
我为我的 opengrok 实例做了类似的设置:)
【讨论】:
感谢您的回答 :-) 这看起来不错,但仅适用于一个用户:这里我需要检索整个 SCM 存储库,以便任何用户都可以对其进行 OpenGrok 查询(但仅限于它应该在 SCM 中看到什么)。我将编辑我的问题以指定此要求。【参考方案3】:好吧,我终于找到了解决方法:
找到您的 tomcat 服务器 XML 配置文件(我的位于 .../apache-tomcat-8.0.52/conf/server.xml)在服务器 > 服务 > 引擎 > 主机中添加以下标记:
" className="org.apache.catalina.valves.RemoteAddrValve" deny="" />
我有一个每日脚本,可以从允许的工作站生成此 IP 列表并相应地更新此文件。此列表类似于“1.2.3.4|5.6.7.8|6.2.5.3”。
【讨论】:
以上是关于如何限制对 OpenGrok 结果的访问?的主要内容,如果未能解决你的问题,请参考以下文章