如何在无法访问CPAN的情况下使用CPAN模块?

3
我每次被迫从CPAN检索模块时都感到非常失望。在我工作的大多数环境中,互联网访问受到严格限制或完全被禁止。在操作系统加固过程中,所有编译器都被移除了。所有数字存储介质在进入或离开现场之前都要经过安全团队的扫描。请注意,我理解安全性,所有这些对我来说都没问题,但是...
如何访问只有CPAN模块提供的代码是推荐或最佳实践?
如果我只需要一个片段、一个函数或一个单独的功能字符串,模块给了我,我怎么能提取“我需要/想要”的东西,而不必安装整个模块?请记住,我可能会打印、写下并输入数据,以便从具有互联网接入的场外位置传输数据。

1
你有向你的老板或安全团队咨询过吗?他们可能已经有了一项政策,或者愿意制定一个。例如,他们可能愿意预先清除一些模块并在安全区域内设置它们,特别是如果你不是唯一一个可以使用它们的人。我的经验是,如果我遇到问题,我可能不是第一个,而且权力机构可能会从上次解决方案中找到答案 - 即使他们最初不愿再次使用它。 - William
我之所以编写代码,是因为我懒得去做同样的或类似的事情时每次都输入相同的命令。我在这里提问是因为在工作环境中已经尝试了所有方法来访问CPAN,但都没有成功。感谢您的回复和有效的建议,但我已经走过这条路了。 - Daniel Liston
1
你实际上没有提到你尝试过什么。我曾在一些设施中工作,那里有武装警卫坐在我旁边,但是如果痛点足够高,就可以找到一个解决方案 - 不过并不总是如此(我的经验是在冷战结束时期,所以安全灵活性经常每周都会变化)。 - William
1个回答

5
当你无法访问CPAN时,你要如何使用它?因此,你可以:
  • 当有互联网访问时,你可以安装模块
  • 如果没有,你可以在USB存储设备上带一个minicpan
  • 如果由于安全策略不可能,你只能使用手机显示CPAN源代码,并手动重新输入所需部分
  • 如果两者都不可能 - 你可以在家将源代码打印在T恤上,在工作中重新输入 :)
  • 或者,必须学会自己编写所有东西-在家里学习
  • 或者,找到更好的工作 :)

编辑:更严肃的方法

首先,拥有使用perl进行开发但不允许使用CPAN的公司是很奇怪的。当然,我理解直接访问大量未经扫描的软件对于许多公司来说是不可接受的,但在这种情况下,应该存在一些“公司政策”-如何允许访问。

以下是几个问题:

  • 硬化只在技术层面上实现(如防火墙等)- 因此您可以携带例如USB存储设备、CD或任何其他介质进入,或者
  • 策略层面 - 该策略不允许使用任何外部来源

如果是在策略层面上 - 在我看来,你没有希望了。当不允许使用任何外部来源时 - 您真正可以使用的只有“打印和重新输入”方法。

以下是一些可能性:

建立公司范围的本地CPAN仓库

创建一个具有“可信”模块的本地CPAN(minicpan)服务器。这个仓库也可以作为本地开发模块的仓库。在这种情况下,必须存在某些“审计机构”(政策和程序),以了解如何将模块放入本地仓库中。在我看来,这可能是最有用的方式 - 当公司定期使用perl时。

当然,混合系统范围(默认perl模块)与CPAN模块并不是最好的想法。因此可以设置:

local::lib或build-prefix

本地::库 - 使用PERL5LIB创建和使用Perl模块的本地库。在Google中搜索perl "local::lib"或类似内容。还可以阅读其他一些SQ问题:

使用local::lib是一个不错的解决方案,因为它不会破坏系统范围内的Perl模块。当然,再次强调 - 您需要一些“审计过程”来获取模块内部

perlbrew

使用您自己构建的perl - perlbrew - 如果系统没有安装perl,则是更普遍的解决方案。构建自己的perl不需要root访问权限。当然,除了审计之外,还存在一些问题,例如“缺少编译器问题”。
虚拟机
您可以尝试设置一个虚拟机进行开发(或隔离的物理机器),并具有完整的CPAN访问权限,并在此处进行开发。完成开发后,您可以将所有所需模块的工作转发到“审核过程”。
其他
如果您只需要从CPAN模块中提取函数或模块,请在外部机器上执行此操作。提取函数或某些部分不是技术问题(当您知道perl时),而是许可问题-在您的工作中使用部分模块-您需要引用作者。
为此,您需要获取所有所需的功能-可以在discussion中找到有趣的内容。搜索“perl函数依赖项”或类似内容,或:

也许,您也会发现这个讨论很有趣...


4
在这种环境下,他们可能不会允许他下载未经扫描和评估的一千兆字节软件到安全设施内部。 - brian d foy
我在使用直接安装的组织中几乎从未有过访问CPAN的权限。出于安全原因,这些组织(大多数)会阻止这些端口。使用手动安装可以绕过此限制。 - user966588
我很感激大家的回复和有价值的观点,但我已经走过这条路了。我在许多“加固”环境中工作过,有时候请求特殊访问权限会很幸运,但大多数情况下不会。此外,更新/升级perl核心以使用模块也存在犹豫。我希望有类似经验的人可以分享解决方案、解决方法和想法。 - Daniel Liston

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接