我的服务器和用户数量不断增长,我想采用中央数据库来管理用户帐户。我正在考虑 OpenLDAP,但我有一个问题。
LDAP 中是否可以以某种方式限制特定用户只能访问某些服务器?例如,我有服务器A、B、C、D和E以及用户1到20。假设用户1-5可以访问服务器B和D,用户6-10可以访问服务器A、B和E,用户11- 20 到所有服务器。我可以在 LDAP 或任何其他中央数据库中以某种方式强制执行此操作吗?
有比 LDAP 更好的解决方案吗?我还想为我的用户集中管理 SSH 密钥。我知道 LDAP 中有一个模式可以执行此操作,但是对于这种情况是否有更好的替代方案?
最好的问候
卡米尔
答案1
虽然理论上您可以使用任何数据库后端与自定义 NSS/PAM 集成,但是使用 LDAP 服务器进行集成是正确的解决方案,因为有现成的解决方案。
我重复一下我的回答如何只允许用户和/或组访问连接到 openldap 服务器的某些客户端计算机?:
Æ-DIR
这几乎就是我自己的解决方案的设计用途,完全基于免费软件:
主要系统/服务是服务组的成员,您可以定义哪些用户组具有该服务组的登录权限。
这是使用 OpenLDAP ACL 实现的一种间接方式,授予用户和组的读取访问权限,尤其是登录所需的用户属性。为了避免一个常见的误解:您只需维护 LDAP 条目即可更改访问权限; OpenLDAP ACL 是静态的。
老实说,您必须在 LDAP 客户端中配置一件事:系统凭据,可以是绑定 DN 和密码,也可以是 TLS 客户端证书。
需要一些时间来理解概念并对数据进行建模以满足您的访问控制要求。并且可以肯定它不会满足您有关访问控制的所有愿望。
PS:我想听听有人拥有基于主机访问控制的大型设置网络组因为我想知道是否可以编写一个自动迁移工具来转换网络组映射到 Æ-DIRae服务组。
自由IPA
自由IPA具有类似的目标,他们实施所谓的 HBAC 政策以及其他一些政策来实现这一目标。根据我的理解,你必须使用固态硬盘与 IPA 后端一起使用完整的功能集。固态硬盘是政策执行点。
抱歉,我对他们的在线文档不够熟悉,因此除了FreeIPA 文档概述。
答案2
LDAP 当然可以包含所有不同用户的各种 unix 组,尽管访问限制通常在 SSH(或可能是 PAM)配置文件中完成,因此您还需要可以管理这些配置文件(或 SSH 密钥)的东西在每台单独的机器上。配置管理软件可以做到这一点,如果用户管理和组是通过 LDAP 完成的,也可以取代 LDAP 的使用。您可以尝试将所有内容都放入 LDAP 中,但与混合 LDAP/配置管理或没有 LDAP 所有配置管理设置相比,其效果可能会降低回报。
这里没有什么“更好”,只有在将必要的复杂性推入 LDAP 和其好处/问题之间进行权衡(有人曾经指出公司 LDAP 的网站,它融化了公司 LDAP,然后没有人可以登录或查看 wiki 或检查仪表板...欢闹!),或配置管理和好处/问题,或两者的混合......