限制对 java、c++、python 程序的权限 [关闭]
Posted
技术标签:
【中文标题】限制对 java、c++、python 程序的权限 [关闭]【英文标题】:restrict permissions on a java, c++, python program [closed] 【发布时间】:2020-08-17 00:58:17 【问题描述】:假设我必须在我的机器上运行 java、c++ 或 python3.8 程序,但我不希望这些程序访问我的系统信息、运行 os 命令或执行任何恶意活动。有没有办法为上述每种语言做到这一点?
【问题讨论】:
限制用于运行进程的用户? 该应用程序涉及客户创建自己的代码并通过rest api在我的机器上运行它。 您允许用户在您的机器上运行任意代码?这是一个可怕的想法。 没有什么可以保护您免受足够高级的恶意软件的侵害。技术上不是恶意软件的代码仍然会使系统资源匮乏。 请注意,询问如何减轻三种不同编程语言中的威胁注定这个问题过于宽泛。询问一种语言,最好进一步缩小问题范围,以针对特定类别的恶意软件。 【参考方案1】:Java 理论上对此有一个解决方案:“SecurityManager”。您可以在您的 java 代码中设置一个(您可以告诉系统:这是一些代码;请以管理员身份加载)。
安全管理员在某些事情发生之前被调用,并且可以拒绝操作。它主要是任何感觉安全敏感的东西:
退出虚拟机 打开任何文件 打开任何网络连接 设置安全管理器 访问剪贴板 打印东西 会影响线程加载的某些方面您会告诉 java 运行您编写的某个类文件,该类文件设置一个安全管理器,然后将运行您要限制的应用程序。
请注意,您无法真正限制 SecurityManager 使用多少内存和/或 CPU,这本身就是一个很大的问题。
问题是,这种机制的主要用例是运行小程序,而小程序long已死。因此,这是目前 java 生态系统中很少有人使用的功能,并且很少使用的黑名单式机制通常是漏洞百出的。
我强烈建议您为此设置一个虚拟机。基于虚拟机管理程序的限制也存在漏洞,但“在 VM 中托管内容并确保它不能对底层机器执行操作”更为常见。
【讨论】:
是的,我认为 SecurityManager 将适用于我的应用程序。你知道 c++ 和 python 的等价物吗?【参考方案2】:通过程序本身限制访问是行不通的。要限制系统调用和对文件的不必要访问,您要么希望创建仅具有部分权限的用户,要么创建单独的可执行文件以通过 uids 限制文件系统访问并通过 seccomp 限制系统调用,有多种方法可以做到...
【讨论】:
您能否指导我获取有关如何完成此操作的资源?我使用的是 ubuntu 18.04 操作系统。如果我有一个可以输入自己的代码并运行程序的客户端,在这种情况下有办法限制他们的系统访问吗? 这就是用户的全部意义以上是关于限制对 java、c++、python 程序的权限 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章