IBM Spectrum LSF 是一个工作负载管理平台,提供强大的资源管理功能来优化应用程序性能和最大限度提高资源使用率。 OpenLDAP 是轻量级目录访问协议 (LDAP) 的开放式源代码实现,提供集中式认证和目录服务。
通过遵循本教程中概述的步骤,您可以将 OpenLDAP 与 IBM Spectrum LSF集成,这使您能够使用现有 LDAP 基础结构进行认证,从而使用户能够更安全,更简化地访问 IBM Spectrum LSF。
本教程仅涵盖在 Linux® 系统 (RHEL 7.9 作为主机) 上配置 OpenLDAP 服务器。
将 OpenLDAP 与 IBM Spectrum LSF 集成涉及修改 LSF 配置文件和 OpenLDAP 服务器配置文件。 此集成的设计注意事项包括:
/etc/pam.d/lsf
文件中。/etc/openldap/slapd.conf
或 /etc/openldap/slapd.d/
中。开始之前,请确保查看以下先决条件:
ldapsearch
命令行工具安装在每个 IBM Spectrum LSF 集群节点上。pam_ldap
和 nss_ldap
LDAP 客户机库安装在每个 IBM Spectrum LSF 集群节点上。要成功将 OpenLDAP 与 Spectrum LSF 集群节点集成,必须满足以下网络需求:
/etc/hosts
文件以包含 OpenLDAP 服务器的主机名和 IP 地址。确保您有权访问具有 root 用户特权的 Linux® 系统。
通过运行以下命令来安装 OpenLDAP 服务器和客户机软件包:
yum -y install openldap-servers openldap-clients
将 DB_CONFIG.example
文件复制到 /var/lib/ldap
目录,并通过运行以下命令将其所有权更改为 ldap
用户:
cp /usr/share/openldap-servers/DB_CONFIG.example
/var/lib/ldap/DB_CONFIG chown ldap. /var/lib/ldap/DB_CONFIG
通过运行以下命令,启动 slapd
服务并使其能够在引导时自动启动:
systemctl start slapd
systemctl enable slapd
通过运行 slappasswd
命令来生成管理密码。 系统会提示您输入密码。 例如:
slappasswd
您会看到类似于以下内容的输出:
示例输出:
{SSHA}FUMV8TZ9lZQxABxCBE5UZ+oU/dlwf/d4
请注意稍后生成的密码散列 (在本例中为 {SSHA}FUMV8TZ9lZQxABxCBE5UZ+oU/dlwf/d4)
)。
创建名为 chrootpw.ldif
的文件,并向其添加以下行:
dn: olcDatabase={0}config,cn=config changetype: modify add: olcRootPW olcRootPW: {SSHA}FUMV8TZ9lZQxABxCBE5UZ+oU/dlwf/d4
将 olcRootPW
值替换为您在上一步中生成的密码散列。
通过运行以下命令来导入基本模式:
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
通过再次运行 slappasswd
命令来生成管理器密码。
slappasswd
您会看到类似于以下内容的输出:
示例输出:
{SSHA}TVW9z6WLIBC3EXtFHFWnb2EVlK7EZQ3b
请注意稍后生成的密码散列 (在本例中为 {SSHA}TVW9z6WLIBC3EXtFHFWnb2EVlK7EZQ3b
)。
通过创建名为 chdomain.ldif
的文件并向其添加以下行,添加管理器密码并启用管理器帐户:
# DC should be your domain # specify the password generated above for "olcRootPW" section dn: olcDatabase={1}monitor,cn=config changetype: modify replace: olcAccess olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=Manager,dc=ibmlsf,dc=com" read by * none dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcSuffix olcSuffix: dc=ibmlsf,dc=com dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcRootDN olcRootDN: cn=Manager,dc=ibmlsf,dc=com dn: olcDatabase={2}hdb,cn=config changetype: modify add: olcRootPW olcRootPW: {SSHA}TVW9z6WLIBC3EXtFHFWnb2EVlK7EZQ3b dn: olcDatabase={2}hdb,cn=config changetype: modify add: olcAccess olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=Manager,dc=ibmlsf,dc=com" write by anonymous auth by self write by * none olcAccess: {1}to dn.base="" by * read olcAccess: {2}to * by dn="cn=Manager,dc=ibmlsf,dc=com" write by * read
显示更多
将 {SSHA} 值替换为您在上一步中生成的密码散列。
通过运行以下命令来应用更改:
ldapmodify -Y EXTERNAL -H ldapi:/// -f chdomain.ldif
创建名为 basedomain.ldif
的文件,并向其添加以下行:
dn: dc=ibmlsf,dc=com objectClass: top objectClass: dcObject objectclass: organization o: WES Migration dc: ibmlsf dn: cn=Manager,dc=ibmlsf,dc=com objectClass: organizationalRole cn: Manager description: Directory Manager dn: ou=People,dc=ibmlsf,dc=com objectClass: organizationalUnit ou: People dn: ou=Group,dc=ibmlsf,dc=com objectClass: organizationalUnit ou: Group
ldapadd -x -D cn=Manager,dc=ibmlsf,dc=com -W -f basedomain.ldif
ldapuser.ldif
的文件,并向其添加以下行 (在 "dc=***,dc=***"
部分中替换为您自己的必需域名):dn: uid=Lsfclusteruser,ou=People,dc=ibmlsf,dc=com objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount cn: Lsfclusteruser sn: Linux userPassword: {SSHA}+A6gC87JU5ugW6qthWL2HGYzsQIdN1EN loginShell: /bin/bash uidNumber: 1003 gidNumber: 1003 homeDirectory: /home/Lsfclusteruser dn: cn=Lsfclusteruser,ou=Group,dc=ibmlsf,dc=com objectClass: posixGroup cn: Lsfclusteruser gidNumber: 1001 memberUid: Lsfclusteruser
将 {SSHA} 值替换为先前生成的密码散列。
ldapadd -x -D cn=Manager,dc=ibmlsf,dc=com -W -f ldapuser.ldif
ldapsearch -x -LLL -b "ou=People,dc=ibmlsf,dc=com" "(objectClass=posixAccount)" uid cn
OpenLDAP 服务器现已配置完毕,可供使用。 通过创建更多 LDIF 文件并使用 ldapadd
命令将这些文件导入到目录中,可以添加更多用户和组。
现在已配置 OpenLDAP 服务器,您需要在 OLDAP 目录中创建用户组,该用户组由应该访问 LSF 集群的用户组成。
要创建组,请使用 ldapadd
命令将组的 LDIF 条目添加到 LDAP 目录。 例如,要创建名为 "LSFAdministrators" 和 "LSF使用者" 的组,可以创建具有以下内容的 LDIF 文件:
# create an organizational unit for groups dn: ou=groups,dc=ibmlsf,dc=com objectClass: organizationalUnit ou: groups # create a group called "LSFadministrators" dn: cn=LSFadministrators,ou=groups,dc=ibmlsf,dc=com objectClass: top objectClass: posixGroup gidNumber: 1001 cn: LSFadministrators description: LSFadministrators group # create a group called "LSFconsumers" dn: cn=LSFconsumers,ou=groups,dc=ibmlsf,dc=com objectClass: top objectClass: posixGroup gidNumber: 1002 cn: LSFconsumers description: LSFconsumers group
在此示例中,第一个条目创建名为 "groups" 的组织单元。 接下来的两个条目将创建名为 "LSFAdministrators" 和 "LSF使用者" 的组。
每个组条目指定 objectClass
"top" 和 "posixGroup" 以定义组的模式。 gidNumber
属性指定组的唯一标识,而 cn
属性指定组的公共名称。 最后, description
属性提供组的简要描述。
您可以将上一步中的内容保存在具有 .ldif
扩展名的文件 (例如 groups.ldif
) 中,然后使用 ldapadd
命令将这些组条目添加到 LDAP 目录中。 请参阅以下 ldapadd
示例命令:
ldapadd -x -D cn=Manager,dc=ibmlsf,dc=com -W -f groups.ldif [root@oldapserverlsfcl ~]# ldapsearch -x -D cn=Manager,dc=ibmlsf,dc=com -W -b "ou=groups,dc=ibmlsf,dc=com" "(objectClass=posixGroup)" Enter LDAP Password: # extended LDIF # # LDAPv3 # base
此输出显示在 ou=groups,dc=ibmlsf,dc=com
组织单元中有两个组条目: LSFadministrators
和 LSFconsumers
。
稍后,您可以使用 ldapmodify
命令将现有用户添加到这些组。 在先前的 ldapsearch
输出中,两个用户被视为每个组的成员。
接下来,需要为正在将 RHEL 8 作为操作系统运行的客户端机器配置 LDAP 认证,并将 OLDAP 服务器作为认证提供程序或身份提供者运行。 在这种情况下, OLDAP 客户机是 LSF 集群,因此以下步骤适用于在 RHEL 8 Linux® 机器上运行的 LSF 集群节点。
在以下步骤中,确保将 "dc=***,dc=***"
部分中的域名替换为您自己的域名。
请运行以下命令:
yum -y install openldap-clients nss-pam-ldapd
yum install authselect sssd oddjob oddjob-mkhomedir
authconfig --enablesssd --enablesssdauth --update
启用 SSSD 认证概要文件:
authselect select sssd
将 LDAP 服务器 URL 和基本搜索 DN 添加到 /etc/openldap/ldap.conf
文件,如以下示例中所示:
URI ldap://ibmlsf.com/
在 /etc/sssd
目录中,使用以下内容创建文件 sssd.conf
:
[domain/default] autofs_provider = ldap cache_credentials = True ldap_search_base = dc=ibmlsf,dc=com id_provider = ldap auth_provider = ldap chpass_provider = ldap ldap_uri = ldap://
使用基本 DN 更新 ldap_search_base
参数,并使用 LDAP 服务器的 URL 更新 ldap_uri
。
更改 /etc/sssd/sssd.conf
文件的许可权:
chmod 600 /etc/sssd/sssd.conf
重新启动并启用 SSSD:
systemctl restart sssd systemctl enable sssd
现在,您已将 SSSD 配置为在 RHEL 8 系统上使用 LDAP 服务器 "ibmlsf.com" 进行用户认证。
现在,您已配置 LDAP 客户机认证,需要配置在 LDAP 上托管的 LSF 集群以指向 OLDAP 服务器,这将确保 LSF 集群与 OLDAP 服务器的集成可用于用户管理。
备份现有 lsf.conf
和 lsf.cluster.name
文件:
cp/etc/lsf.conf /etc/lsf.conf.backup cp/etc/lsf.cluster.name /etc/lsf.cluster.name.backup
编辑 lsf.conf
文件以添加 LDAP 认证设置:
AUTHMODE=ldap AUTHLDAPSERVER=
将值替换为您的相关信息。 请参阅下表以获取更多详细信息:
值 | 描述 |
---|---|
|
OpenLDAP 服务器的主机名或 IP 地址 |
|
OpenLDAP 目录的基本 DN |
|
IBM Spectrum LSF 应该用于绑定到 OpenLDAP 服务器以进行认证的用户的专有名称 |
|
绑定用户的密码 |
|
OpenLDAP 目录中用户条目的对象类 |
|
用户条目的搜索过滤器 |
|
组条目的对象类 |
|
组条目的搜索过滤器 |
重新启动以下三个服务,以便您在 lsf.conf
文件中配置的认证设置可以生效:
bctrld restart sbd all
bctrld restart res all
bctrld restart lim all
编辑 lsf.cluster.name
文件以指定 LDAP 认证域:
LSF_CLUSTER_NAME=
将
替换为 IBM Spectrum LSF 集群的名称,并将
替换为 LDAP 认证域的名称。
要向组授予对 LSF 集群的访问权,需要编辑 LSF 配置文件以将该组包含在相应的访问控制表 (ACL) 中。
特定 LDAP 命令行工具和命令可能有所不同。
以 LSF 管理员身份登录到集群中的任何主机。
打开 lsb.users
(/opt/ibm/lsf/conf/lsbatch/HPCCLUSTER/configdir
)。
编辑 "UserGroup" 部分。 以下示例显示了 lsb.users
的 "UserGroup" 部分; 但是,如果您看到另一个 "UserGroup" 部分,那么可以使用此示例中的值 (取自 LSF 集群服务器) 创建新的部分:
[root@icgen2host-172-19-1-69 configdir]# cat lsb.users # $Revision$Date$ # After editing this file, run "badmin reconfig" to apply your changes. # User groups can be referenced by the lsb.hosts and lsb.queues files. # All the example definitions here are commented out # User group for lsf cluster administration Begin UserGroup GROUP_NAME PRIORITY GROUP_MEMBER GROUP_ADMIN lsfamitadmin 100 (user1lsf user2lsf) (user1lsf) #groupA 200 (user1 user2 user3 user4) (user5) #groupB 100 (groupA user5) (groupA) #groupC 50 (!) () End UserGroup # User group for all LSF administrators Begin UserGroup GROUP_NAME GROUP_MEMBER #USER_SHARES # Key words lsfadmins (lsfadmin ) newlsf (lsfuser123) #ldapusers (ldapuser01 ldapuser02) End UserGroup # Perform the following edit in the lsb.params file located in "/opt/ibm/lsf/conf/lsbatch/HPCCLUSTER/configdir" Define STRICT_UG_CONTROL=Y in lsb.params
要启用用户组管理员,请在 GROUP_ADMIN
列中指定用户或用户组,使用空格分隔用户和用户组,并将每个 GROUP_ADMIN
条目括在方括号中。
保存更改。
运行 badmin ckconfig
以检查新的用户组定义。 如果报告了任何错误,请修正问题并再次检查配置。
运行 badmin reconfig
以重新配置集群。
登录后,可以使用 EGO 命令来管理 LSF 集群,例如 egosh resource
, egosh job
和 egosh host
等 (如以下示例中所示)。
要完成以下步骤,您需要使用具有高特权的 LSF 用户帐户。 只有具有高特权的帐户才能将用户添加到 LSF 集群,然后向其分配角色。 但是,如果为新添加的用户分配了 CLUSTER_Admin
角色,那么该用户还可以为随后添加的用户完成以下步骤。
要将 OLDAP 服务器中创建的现有用户 "user1lsf" 添加到 LSF 集群,您需要以集群管理员身份登录,然后运行以下命令:
[root@icgen2host-172-19-1-69 ~]# su Lsfadmin bash-4.4$ egosh user logon -u Admin -x Admin Admin@HPCCluster> user add user account: user1lsf password: password(type again, please): User account < user1lsf > added successfully Admin@HPCCluster>@HPCCluster> user logoff Logged off successfully
通过运行以下命令,使用上一步中添加的用户登录到 LSF 集群:
[root@icgen2host-172-19-1-69 ~]# su user1lsf bash-4.4$ egosh user logon -u user1lsf -x welcome@31! Logged on successfully bash-4.4$ egosh user1lsf@HPCCluster> resource list NAME status mem swp tmp ut it pg r1m r15s r15m ls icgen2h* ok 14G 0M 74G 2% 0 0 0.1 0 0 1 icgen2h* ok 15G 0M 75G 0% 20339 0 0 0.3 0 0 user1lsf@HPCCluster> ego info Cluster name : HPCCluster EGO master host name : icgen2host-172-19-1-69 EGO master version : 3.4 user1lsf@HPCCluster>
通过运行以下命令向新用户分配角色:
lsfadmin@HPCCluster> user assignrole -u user1lsf -r CONSUMER_USER Role
现在,您已成功将 OpenLDAP 与 IBM Spectrum LSF 集成,以提供集中式认证和目录服务,这使您能够使用现有 LDAP 基础结构进行认证。 您还启用了对 IBM Spectrum LSF的安全且简化的用户访问权。