文件系统身份验证和授权

已完成

了解工作负载的总体性能和流量特征后,需要考虑工作负载的安全方面。 你的数据可能是敏感的,例如患者的放射图像。 出于多种原因,你可能希望限制对此数据的访问。 你可能想为每位研究人员提供一个“主目录”,他们可通过该目录加载数据并执行 HPC 分析和模拟。

选择云 HPC 存储时,请注意它与当前安全状况的集成方式。 了解文件系统对文件进行身份验证和授权访问的方法。 注意是在本地执行还是远程执行(或二者兼有),以及身份验证和授权的来源。 如果使用远程共享文件系统,则需要了解如何通过标准 NAS 做法来控制访问。 最后,如果你要为用户提供独有的工作空间(主目录),需了解如何分配该空间。

在本单元中,我们研究安全注意事项以及它们如何影响存储体系结构。

身份验证和授权概述

身份验证:提供对文件系统的访问权限时,需要使用某些受信任的凭据对请求者进行身份验证。 许多客户端/服务器体系结构会对此类凭据(例如用户或计算机帐户)提出质疑。 然后,这些凭据会接受检查以确保它们对该环境有效。 进行身份验证后,请求方(用户或计算机/进程)会得到授权。 环境所需的访问协议可能会限制针对解决方案的身份验证。 例如,如果你有一个 Windows 环境,那么你最可能将服务器消息块 (SMB) 用作网络文件访问协议。 SMB 身份验证要求与 NFS 不同。

授权:就算允许用户或计算机访问环境,那么访问级别又是什么呢? 例如,用户 A 可能能够读取文件系统上的文件,而用户 B 可能能够读取和写入文件。 授权不仅能让你进行读取和写入。 例如,用户 C 可能能够在给定目录中修改文件,但无法创建新文件。

授权级别通常表示为给定文件的权限。 其中包括读取、写入和执行权限。

用户和组:当有大量用户时,授予对一组资源的访问权限可能操作起来很繁琐。 如果打算向多组用户授予不同级别的访问权限,则操作还会变得复杂。 这时有必要使用组。 你可将一位用户分配到一个特定组或组集合。 然后,你可根据该组的标识授予对资源的访问权限。

身份验证和授权合在一起,表示你打算授予资源(在我们的例子中是文件)的用户级、组级和计算机级访问权限。

Linux OS 会向个人用户帐户分配用户标识符 (UID)。 UID 是一个整数。 系统用它来确定特定用户可访问的具体系统资源(包括文件和文件夹)。

Linux OS 使用组标识符 (GID) 来进行组分配。 一位用户与一个主要组相关联。 用户可与几乎任意数量的补充组分配相关联,在最新式的 Linux 系统上最多可关联 65,536 个补充组分配。

本地和远程身份验证与授权

本地身份验证和授权是指计算机本地的用户/计算机帐户对本地文件系统的访问权限。 例如,我可能会创建一个用户帐户,然后向其授予对我的本地文件系统上的 /data 目录的访问权限。 该用户帐户是本地的,对目录的访问授权也是本地的。 我还可使用组分配来控制访问权限。 用户与组授权的组合为用户提供对文件或文件夹的有效权限。

如果查看 ls -al 目录命令的典型输出,可能会看见如下内容:

drwxr-xr-x  4 root root 4096 Dec 31 19:43.
drwxr-xr-x 13 root root 4096 Dec 11 05:53 ..
drwxr-xr-x  6 root root 4096 Dec 31 19:43 microsoft
drwxr-xr-x  8 root root 4096 Dec 31 19:43 omi
-rw-r--r--  1 root root    0 Jan 21 15:10 test.txt

drwxr-xr-x 字符表示向用户和组授予的对文件或目录的访问权限级别。 d 表示该条目是一个目录。 (如果第一个值为 -,则该条目属于文件条目。)其余字符表示读取 (r)、写入 (w) 和执行 (x) 权限的组授权。 前 3 个值指示文件或目录的“所有者”。 中间 3 个值指示分配给文件或目录的组权限。 最后 3 个值表示允许该系统上所有其他用户拥有的权限。

下面是一个示例:

-rw-r--r-- 1 root root 0 Jan 21 15:10 test.txt

  • - 表示此资源是一个文件。
  • rw- 表示所有者具有读取和写入权限。
  • r-- 表示分配的组仅具有读取权限。
  • r-- 表示其余用户仅具有读取权限。
  • 另请注意,具有所有权的用户和分配的组由两个 root 列表示。

UID 以及主要和补充 GID 表示本地计算机上经过身份验证的用户。 这些值是该计算机的本地值。 如果拥有 5 台,甚至 50 台计算机,又该怎么办? 必须在每台计算机上复制 UID 和 GID 分配。 围绕用户管理的复杂程度会增加,无意中将文件或文件夹访问权限授予错误用户的可能性也会增加。

通过 NFS 进行远程文件访问

如果以单个用户/组分配的方式运行所有内容,则本地 UID 和 GID 分配运行正常。 如果多个利益干系人在使用你正在运行的 HPC 群集,并且每个利益干系人都有敏感数据和多个数据使用者,该怎么办?

在文件服务器或 NAS 环境上查找数据可远程访问该数据。 此方法有助于降低本地磁盘成本,确保为所有用户提供最新数据,并减少对用户和组的整体管理。

Diagram that shows the relationships among compute, storage, and directory services.

如果集中查找文件,则可能需要使用包含用户和组配置的目录服务。 通过 Active Directory 或轻型目录访问协议 (LDAP) 等目录服务,可创建随后能供所有远程系统使用的用户/组映射。 你需要将远程计算机和 NAS 环境配置为目录服务的客户端。 你也可使用 Windows 用户帐户与特定 UID 和 GID 组合之间的 Active Directory 映射。

远程访问文件的典型方法是使用 NFS 和 SMB 等网络文件系统,或使用 Lustre 等并行文件系统。 这些协议会定义用于访问数据的客户端和服务器 API。 我们在“文件系统性能注意事项”单元中讨论了 NFS 操作。 我们将在下一单元详细讨论 NFS 的使用。

注意

如果使用 NFS,则不需要目录服务。 但如果不使用它,且用户和系统数量很大,UID 和 GID 管理仍会很困难。

主目录

假设你有一个 HPC 环境,多名研究人员正在使用它,但他们的唯一数据必须单独保存。 假设这些研究人员在不断对其自己的数据进行修改和添加。 让研究人员拥有自己的主目录是将他们数据分开的有效方法。

每个研究人员都会处理主目录中的权限,这样他们可以在需要时进行协作。

此环境中的主要难题之一是存储空间。 假设你有一个 500 TB 的 NAS 环境。 是什么阻止某位研究人员将其全部占为己有?

你可以向单个目录分配“配额”。 配额反映了所允许的最大数据量。 一旦达到该配额,则会拒绝更多的数据,或者警告管理员研究人员已超出限制。 例如,如果有一个 NAS 系统,则可以为每位研究人员分配配额。 此外,如果你将研究人员对主目录的访问权限分开,就能轻松配置和监视其使用情况。