我正在研究为用户提供跨多台计算机的单一身份的软件。也就是说,用户应该在每台计算机上拥有相同的权限,并且该用户应该可以访问他或她在每台计算机上的所有文件(漫游主目录)。这个总体思路似乎有很多解决方案,但我正在努力确定最适合我的解决方案。以下是一些详细信息以及要求:
- 机器网络是运行 Ubuntu 的 Amazon EC2 实例。
- 我们使用 SSH 访问机器。
- 这个局域网上的一些机器可能有不同的用途,但我只讨论特定用途的机器(运行多租户平台)。
- 系统不一定有恒定数量的机器。
- 我们可能不得不永久或暂时改变正在运行的机器数量。这就是我研究集中式身份验证/存储的原因。
- 这种效果的实现应该是安全的。
- 我们不确定用户是否可以直接访问 shell,但他们的软件可能会在我们的系统上运行(当然,在受限制的 Linux 用户名下),这与直接 shell 访问一样好。
- 为了安全起见,让我们假设他们的软件可能是恶意的。
我听说过几种技术/组合来实现我的目标,但我不确定每种技术/组合的后果。
- 较早的 ServerFault 帖子推荐了 NFS 和 NIS,但根据赛门铁克的这篇旧文章,该组合存在安全问题。这篇文章建议转向 NIS+,但是,由于它是旧的,这篇 Wikipedia 文章引用了表明 Sun 正在远离 NIS+ 的声明。推荐的替代品是我听说过的另一件事......
- LDAP。看起来 LDAP 可用于将用户信息保存在网络上的一个集中位置。仍然需要使用 NFS 来满足“漫游主文件夹”的要求,但我看到它们被一起使用的参考。既然赛门铁克的文章指出了 NIS 和 NFS 中的安全问题,是否有软件可以替代 NFS,或者我应该听从那篇文章的建议来锁定它吗?我倾向于使用 LDAP,因为我们架构的另一个基本部分 RabbitMQ 有一个用于 LDAP 的身份验证/授权插件。系统上的用户将以受限方式访问 RabbitMQ,因此如果可能,我想将安全系统联系在一起。
- Kerberos 是我听说过的另一种安全身份验证协议。几年前我在密码学课上学到了一点,但不太记得了。我在网上看到有人建议它可以通过多种方式与LDAP结合使用。这是必要的吗?没有 Kerberos 的 LDAP 有哪些安全风险?我还记得卡内基梅隆大学开发的另一款软件中使用了 Kerberos...
- 安德鲁文件系统,或 AFS。OpenAFS 可以使用,但它的设置似乎有点复杂。在我的大学,AFS 提供了这两个要求……我可以登录到任何机器,并且我的“AFS 文件夹”始终可用(至少在我获得 AFS 令牌时)。
除了我应该研究哪条路径的建议之外,有人有任何特别有用的指南吗?正如粗体文本指出的那样,LDAP 看起来是最佳选择,但我对安全方面的实现细节(Keberos?NFS?)特别感兴趣。