这是一个非常开放的问题,因为这是我第一次创建集群。我只是想知道会有什么类型的安全问题以及如何防止它们。
背景资料
在内部集群上使用 SGE(目前正在安装并确定哪个计划是最好的)。
将允许 PVM/MPI 程序与使用其中一个或另一个的 Perl 程序一样运行,或者可能只是分叉,因为它们是令人尴尬的并行执行(如果我没记错的话,SGE 允许分叉,但这是在我大量编译之前读过的更多信息。有人请对此发表评论)。
将有一个外部节点连接到集群,该节点将提交从 Internet/服务器接收到的作业。
所有用户都必须通过 Internet 向服务器提交运行作业的请求(尝试想办法在本地连接时不允许他们绕过此操作)。
本项目的目标:
最终允许人们通过 Internet 从任何地方提交作业以运行,然后在程序完成时收到通知。此外,允许他们查看数据,甚至可以下载数据以供离线查看。
不太可能但可能:当我们的程序不足时,甚至可能允许用户上传程序以微调他们的数据。
阻止人们在本地(从计算节点)或使用远程 shell 会话提交作业的一种简单方法是禁止用户在计算节点和 IO 节点上进行 ssh 登录 - 有一些如何不破坏 SGE 的方法。不用说,通过这样做,您可以控制哪个主机充当提交机器。
主要的保护工作必须在登录/门户节点上完成,并具有正确记录和定义的界面,以便人们可以在那里做他们打算做的任何事情。有类似 Globus Toolkit 的 grid-ftp 通过 SSH 传输或使用完整的 PKI 传输的东西。
或者您也可以准备一个门户网站,该门户网站反过来使用 DRMAA API 从 python、ruby、java 等提交作业,并提供从系统上传/下载程序或数据的方式和方法。
通常,对于大多数 HPC 安装来说,安全性并不是一个大问题,并且通常的 UNIX 多用户安全原则完全适用。分布式资源管理甚至可以帮助您防止资源滥用和类似的事情。
对于问题的数据查看部分:我通常实现几个桌面节点,这些节点保留用于开发和调试等交互式工作。大多数情况下,它们还包含 GPU,我配置 TruboVNC + VirtualGL 让人们在开始长时间传输到其他存储和/或他们的桌面(他们将 VNC 桌面会话提交给 SGE)之前,可以在本地查看他们的数据。帮助他们在正确设置时保持在集群和 VNC 本地,即使通过 WAN 类型的链接也可以通过硬件加速 3D 可视化获得非常快速的体验。您还可以将(较慢的)VNC 查看器嵌入到您的 Web 门户中。
我们做了一个每小时运行两次的内务脚本,并杀死了 SGE 不知道的所有工作。这很好用,并且清除了由于某种原因在节点上运行的进程。