![高性能集群的安全问题](https://linux22.com/image/506963/%E9%AB%98%E6%80%A7%E8%83%BD%E9%9B%86%E7%BE%A4%E7%9A%84%E5%AE%89%E5%85%A8%E9%97%AE%E9%A2%98.png)
这是一个非常开放的问题,因为这是我第一次创建集群。我只是想知道会存在哪些类型的安全问题以及如何预防它们。
背景信息
在内部集群上使用 SGE(目前正在安装并确定哪个计划最佳)。
将允许 PVM/MPI 程序和 Perl 程序使用其中一个来运行,或者可能只是分叉,因为它们是令人尴尬的并行执行(如果我没记错的话,SGE 允许分叉,但那是在我编译更多信息之前读过的。请有人对此发表评论)。
将有一个外部节点连接到集群,该节点将提交从互联网/服务器接收的作业。
所有用户都必须通过互联网向服务器提交运行作业的请求(尝试想办法不允许他们在本地连接时绕过此请求)。
该项目的目标:
最终允许人们通过互联网从任何地方提交要运行的作业,然后在程序完成时收到通知。此外,还允许他们查看数据,甚至可以下载数据以供离线查看。
不太可能,但有可能:当我们的程序不足时,甚至可能允许用户上传程序来微调他们的数据。
答案1
阻止人们在本地(从计算节点)或使用远程 shell 会话提交作业的一个简单方法是禁止计算节点和 IO 节点上的用户使用 ssh 登录 - 有一些方法可以教你如何避免这样做破坏 SGE。不用说,通过这样做,你可以控制哪个主机充当提交机器。
主要的安全工作必须在登录/门户节点上完成,并有适当记录和定义的接口,以便人们可以在那里做他们想做的事情。有类似 Globus Toolkit 的 grid-ftp 传输(通过 SSH)或完整的 PKI。
或者您也可以准备一个 Web 门户,它依次使用 DRMAA API 从 python、ruby、java 等提交作业,并提供从系统上传/下载程序或数据的方法和手段。
通常,安全性对于大多数 HPC 安装来说并不是一个大问题,并且通常的 UNIX 多用户安全原则完全适用。分布式资源管理甚至可以帮助您防止资源滥用等。
对于问题的数据查看部分:我通常会实现几个桌面节点,这些节点专门用于开发和调试等交互式工作。大多数时候,它们还包含 GPU,我配置 TruboVNC + VirtualGL,让人们可以在本地查看他们的数据,然后再开始长时间传输到其他存储和/或他们的桌面(他们将 VNC 桌面会话提交给 SGE)。帮助他们在集群上本地停留,并且 VNC 在正确设置后,即使通过 WAN 类型的链接,也可以通过硬件加速 3D 可视化获得非常快的体验。您还可以将(较慢的)VNC 查看器嵌入到您的 Web 门户中。
答案2
我们编写了一个每小时运行两次的管理脚本,并终止所有 SGE 不知道的作业。这很有效,并且还可以清除由于某种原因仍在节点上运行的进程。