将 OpenLDAP 与 IBM Spectrum Symphony 集成
在以下教程中,您将学习如何将 OpenLDAP 与 IBM Spectrum Symphony(这是高性能分布式计算平台) 集成。 OpenLDAP 是轻量级目录访问协议 (LDAP) 的开放式源代码实现,可用于存储和管理有关网络中用户,组和其他对象的信息。
在本教程中,您将学习配置 IBM Spectrum Symphony 以使用 OpenLDAP 作为用户认证的主目录服务所涉及的步骤。 您还可以了解将 OpenLDAP 与 IBM Spectrum Symphony集成的优点,例如集中式用户管理,改进的安全性和简化的用户认证。
本教程涵盖在 RHEL 7.9 系统上配置 OpenLDAP 服务器。
体系结构
OpenLDAP 与 IBM Spectrum Symphony 之间的集成涉及以下组件:
- OpenLDAP 目录服务: 此组件存储和管理用户认证数据,例如用户名和密码。
- IBM Spectrum Symphony 分布式计算平台: 此组件使用 OpenLDAP 中的认证数据来认证用户,并使他们能够运行分析和数据密集型应用程序。
- LDAP 认证过程: 此过程使 IBM Spectrum Symphony 能够与 OpenLDAP 通信,并使用其现有凭证对用户进行认证。
OpenLDAP 与 IBM Spectrum Symphony 体系结构集成支持集中用户管理,提高安全性和简化用户认证。 该集成还允许使用现有认证凭证,从而减少用户记住多个登录凭证的需求。 总体而言,该架构为分布式计算环境中的用户认证和目录管理提供了稳健高效的解决方案。
准备工作
开始之前,请务必查看以下先决条件:
常规先决条件
要成功将 OpenLDAP 与 IBM Spectrum Symphony集成,必须满足以下系统需求和先决条件:
- OpenLDAP 与 IBM Spectrum Symphony安装在专用服务器或同一服务器上。
- IBM Spectrum Symphony 安装在具有最新补丁和更新的受支持操作系统上。
- 您具有对 OpenLDAP 和 IBM Spectrum Symphony都具有管理特权的用户帐户。
- 您熟悉 LDAP 认证和目录服务。
- 您可以访问 Symphony 配置文件并能够对其进行修改。
网络先决条件
要成功将 OpenLDAP 与 IBM Spectrum Symphony集成,必须满足以下网络需求:
- OpenLDAP 服务器与 IBM Spectrum Symphony 节点之间的网络连接: 确保 OpenLDAP 服务器可以通过网络与 IBM Spectrum Symphony 节点进行通信。 这可以通过在 OpenLDAP 服务器和 IBM Spectrum Symphony 节点上配置网络设置来实现。
- 端口需求: OpenLDAP 服务器和 IBM Spectrum Symphony 节点必须能够通过特定端口进行通信。 缺省情况下,OpenLDAP 将端口 389 用于未加密通信,将端口 636 用于加密通信。IBM Spectrum Symphony 使用端口 7777 在客户机与服务器之间进行通信。
- 防火墙配置: 如果网络中存在防火墙,请确保打开必要的端口以在 OpenLDAP 服务器与 IBM Spectrum Symphony 节点之间进行通信。
- DNS 配置: 确保 IBM Spectrum Symphony 节点可以解析 OpenLDAP 服务器的主机名或 IP 地址。 如果 DNS 解析不可用,请在每个节点上配置
/etc/hosts
文件以包含 OpenLDAP 服务器的主机名和 IP 地址。
配置 OpenLDAP 服务器
确保您有权访问具有 root 用户特权的 RHEL 7.9 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=ibmsymphony,dc=com" read by * none dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcSuffix olcSuffix: dc=ibmsymphony,dc=com dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcRootDN olcRootDN: cn=Manager,dc=ibmsymphony,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=ibmsymphony,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=ibmsymphony,dc=com" write by * read
将 {SSHA} 值替换为您在上一步中生成的密码散列。
-
通过运行以下命令来应用更改:
ldapmodify -Y EXTERNAL -H ldapi:/// -f chdomain.ldif
-
创建名为
basedomain.ldif
的文件,并向其添加以下行:
dn: dc=ibmsymphony,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: WES Migration
dc: ibmsymphony
dn: cn=Manager,dc=ibmsymphony,dc=com
objectClass: organizationalRole
cn: Manager
description: Directory Manager
dn: ou=People,dc=ibmsymphony,dc=com
objectClass: organizationalUnit
ou: People
dn: ou=Group,dc=ibmsymphony,dc=com
objectClass: organizationalUnit
ou: Group
- 通过运行以下命令来应用上一步中所做的更改:
ldapadd -x -D cn=Manager,dc= ibmsymphony,dc=com -W -f basedomain.ldif
- 使用编辑器 (例如 VI) 创建名为
ldapuser.ldif
的文件,并向其添加以下行 (在"dc=***,dc=***"
部分中替换为您自己的必需域名):
dn: uid=symphonyuser03,ou=People,dc=ibmsymphony,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: symphonyuser03
sn: Linux
userPassword: {SSHA}+A6gC87JU5ugW6qthWL2HGYzsQIdN1EN
loginShell: /bin/bash
uidNumber: 1003
gidNumber: 1003
homeDirectory: /home/symphonyuser03
dn: cn=symphonyuser03,ou=Group,dc=ibmsymphony,dc=com
objectClass: posixGroup
cn: symphonyuser03
gidNumber: 1003
memberUid: symphonyuser03
将 {SSHA} 值替换为先前生成的密码散列。
- 通过运行以下命令来应用更改:
ldapadd -x -D cn=Manager,dc= ibmsymphony,dc=com -W -f ldapuser.ldif
- 要验证是否已创建用户,请使用以下命令:
ldapsearch -x -LLL -b "ou=People,dc=ibmsymphony,dc=com" "(objectClass=posixAccount)" uid cn
OpenLDAP 服务器现已配置完毕,可供使用。 通过创建更多 LDIF 文件并使用 ldapadd
命令将这些文件导入到目录中,可以添加更多用户和组。
在 OLDAP 目录中创建用户组
现在已配置 OpenLDAP 服务器,您需要在 OLDAP 目录中创建用户组,该用户组由应该访问 LSF 集群的用户组成。
-
要创建组,请使用
ldapadd
命令将组的 LDIF 条目添加到 LDAP 目录。 例如,要创建名为 "SymphonyAdmin" 和 "Symphonyconsumer" 的组,可以创建具有以下内容的 LDIF 文件:# create an organizational unit for groups dn: ou=groups,dc=ibmsymphony,dc=com objectClass: organizationalUnit ou: groups # create a group called "SymphonyAdmin" dn: cn=SymphonyAdmin,ou=groups,dc=ibmsymphony,dc=com objectClass: top objectClass: posixGroup gidNumber: 1001 cn: SymphonyAdmin description: SymphonyAdmin group # create a group called "Symphonyconsumer" dn: cn=Symphonyconsumer,ou=groups,dc=ibmsymphony,dc=com objectClass: top objectClass: posixGroup gidNumber: 1002 cn: Symphonyconsumer description: Symphonyconsumer group
在此示例中,第一个条目创建名为 "groups" 的组织单元。 接下来的两个条目将创建名为 "SymphonyAdmin" 和 "Symphonyconsumer" 的组。
每个组条目指定
objectClass
"top" 和 "posixGroup" 以定义组的模式。gidNumber
属性指定组的唯一标识,而cn
属性指定组的公共名称。 最后,description
属性提供组的简要描述。 -
您可以将上一步中的内容保存在具有
.ldif
扩展名的文件 (例如groups.ldif
) 中,然后使用ldapadd
命令将这些组条目添加到 LDAP 目录中。 请参阅以下示例ldapadd
命令:ldapadd -x -D cn=Manager,dc=ibmsymphony,dc=com -W -f groups.ldif [root@oldapserverlsfcl ~]# ldapsearch -x -D cn=Manager,dc=ibmsymphony,dc=com -W -b "ou=groups,dc=ibmsymphony,dc=com" "(objectClass=posixGroup)" Enter LDAP Password: # extended LDIF # # LDAPv3 # base <ou=groups,dc=ibmsymphony,dc=com> with scope subtree # filter: (objectClass=posixGroup) # requesting: ALL # # SymphonyAdmin, groups, ibmsymphony.com dn: cn=SymphonyAdmin,ou=groups,dc=ibmsymphony,dc=com objectClass: top objectClass: posixGroup gidNumber: 1001 cn: SymphonyAdmin description: SymphonyAdmin group memberUid: symphonyuser02 memberUid: symphonyuser01 # Symphonyconsumer, groups, ibmsymphony.com dn: cn=Symphonyconsumer,ou=groups,dc=ibmsymphony,dc=com objectClass: top objectClass: posixGroup gidNumber: 1002 cn: Symphonyconsumer description: Symphonyconsumer group memberUid: symphonyuser03 memberUid: symphonyuser04 # search result search: 2 result: 0 Success
此输出显示在 ou=groups,dc=ibmsymphony,dc=com
组织单元中有两个组条目: "SymphonyAdmin" 和 "Symphonyconsumer"。
稍后,您可以使用 ldapmodify
命令将现有用户添加到这些组。 在先前的 ldapsearch
输出中,两个用户被视为每个组的成员。
在客户端机器上配置 LDAP 认证
接下来,您需要将运行 RHEL 8.4/8.6 的客户机的 LDAP 认证配置为操作系统,将 OLDAP 服务器配置为认证提供程序或身份提供者。 在这种情况下,OLDAP 客户机是 Symphony 集群,因此以下步骤适用于在 RHEL 8.4/8.6 Linux® 机器上运行的 Symphony 集群节点。
在以下步骤中,确保将 "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://ibmsymphony.com/ or IP address will also work BASE dc=ibmsymphony,dc=com
-
在
/etc/sssd
目录中,使用以下内容创建文件sssd.conf
:[domain/default] autofs_provider = ldap cache_credentials = True ldap_search_base = dc=ibmsymphony,dc=com id_provider = ldap auth_provider = ldap chpass_provider = ldap ldap_uri = ldap://<ip address of the LDAP Server> enumerate = true access_provider = simple ldap_id_use_start_tls = false ldap_tls_reqcert = never [sssd] services = nss, pam, autofs domains = default [nss] homedir_substring = /home
使用基本 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
-
运行以下命令以启用
mkhomedir
功能部件:sudo authselect enable-feature with-mkhomedir
-
验证
mkhomedir
是否已启用:[root@icgen2host-10-240-0-39 ~]# authselect current Profile ID: sssd Enabled features: - with-mkhomedir
-
启用并重新启动
oddjobd.service
:systemctl enable --now oddjobd.service systemctl restart oddjobd.service
SSSD 配置为在 RHEL 8.4/8.6 系统上使用 LDAP 服务器 "ibmlsf.com" 进行用户认证。
配置 Symphony 集群
在操作系统层配置 LDAP 客户机认证后,需要配置在 LDAP 客户机上托管的集群,以将 Symphony 集群与 OLDAP 服务器完全集成。 这包括为使用认证插件的 PAM 和缺省客户机配置认证,这将启用 Symphony 集群的用户管理。
为 PAM 和缺省客户机配置用户认证
-
使用
egoshutdown.sh
命令停止 Spectrum Symphony 集群。 要运行关闭脚本,您需要使用管理员帐户登录到集群:#$EGO_TOP/profile.platform egosh user logon -u Admin -x Admin_password soamcontrol app disable all egosh service stop all egosh ego shutdown all
-
在所有管理主机上,在
$EGO_CONFDIR
目录中创建名为pamauth.conf
的插件配置文件。 如果存在,那么可以跳过此步骤。 将/$EGO_CONFDIR /pamauth.conf
替换为配置文件的实际路径。 请参阅以下示例:vi /$EGO_CONFDIR/pamauth.conf
-
确保
/etc/pam.d/
目录中存在 PAM 服务文件 (缺省 PAM 服务为sshd
)。 如果服务文件不存在,请创建该文件并分配 644 个许可权。 如果服务文件存在,那么可以跳过此步骤。#Example for sshd service file: touch /etc/pam.d/sshd chmod 644 /etc/pam.d/sshd
-
编辑
pamauth.conf
文件并设置必需参数和可选参数的值。 您可以指定 PAM_SERVICE,KEYFILE,PAM_CACHEEXPIRYTIME,INCLUDED_USERGROUP,EXCLUDED_USERGROUP,FOLLOW_GETENT_GROUP 和SEC_PAM_旁路之类的参数。 请参阅pamauth.conf
参数的以下示例:PAM_SERVICE=sshd KEYFILE=/tmp/seckey.conf PAM_CACHEEXPIRYTIME=2h INCLUDED_USERGROUP=Developers,Administrators FOLLOW_GETENT_GROUP=Y SEC_PAM_BYPASS=N
-
在管理和计算主机上编辑
$EGO_CONFDIR/ego.conf
文件:a. 在管理主机上,编辑
ego.conf
文件以使用以下值修改EGO_SEC_PLUGIN
和EGO_SEC_CONF
参数:EGO_SEC_PLUGIN=sec_ego_pam_default EGO_SEC_CONF=$EGO_CONFDIR,0,INFO,$EGO_TOP/kernel/log
b. 在计算 (客户机) 主机上,编辑
ego.conf
文件以使用以下值修改EGO_SEC_PLUGIN
和EGO_SEC_CONF
参数:EGO_SEC_PLUGIN= sec_ego_ext_co (for PAM client) EGO_SEC_PLUGIN=sec_ego_default (for “default client” which is ego user) EGO_SEC_CONF=$EGO_TOP/kernel/conf,0,DEBUG,$EGO_TOP/kernel/log
-
以集群管理员身份登录到主主机并启动集群。 根据 shell (
bash
或csh
) 使用以下命令:对于
bash
:#$EGO_TOP/profile.platform #egosh ego start all #soamcontrol app enable application_name
对于
csh
:#source $EGO_TOP/cshrc.platform #egosh ego start all #soamcontrol app enable application_name
-
如果需要认证服务器使用缺省或 PAM 认证方法来认证 PAM 客户机,请以集群管理员 (例如 Admin) 身份登录到
EGO
,并运行egosh user add
命令以将 PAM 用户映射到EGO
帐户。
验证 PAM 和缺省客户机的用户认证
-
要验证用户认证,用户需要使用
soamlogon
或egosh user logon
登录。 但是,在这种情况下,您可以首先从 LDAP 服务器检索用户列表,如以下示例中所示:[root@pp-hpcc-sym-primary-0 ~]# ldapsearch -x -D "cn=Manager,dc=ibmlsf,dc=com" -H ldap://149.81.15.40 -W -b "ou=people,dc=ibmlsf,dc=com" "(objectClass=posixAccount)" | grep "cn:" Enter LDAP Password: cn: usrsupport cn: usroprt cn: user123 cn: user03 cn: user05 cn: user007 cn: symphuser007 [root@pp-hpcc-sym-primary-0 ~]# soamlogon user account:symphuser007 password: Logged on successfully [root@pp-hpcc-sym-primary-0 ~]# egosh symphuser007@HPCCluster>
在此示例中,LDAP 用户 “symphuser007” 能够登录到 Symphony 集群。
-
要将 LDAP 用户 "symphuser007" 添加到 Symphony 集群,请参阅以下示例:
Admin@HPCCluster> user add user account: symphuser007 password: password(type again, please): User account < symphuser007 > added successfully Admin@HPCCluster> user logoff Logged off successfully Admin@HPCCluster> user list ACCOUNT DESCRIPTION ---------------------------------------------------------------- symphuser007 adm adm Admin bin bin chrony cockpit-ws User for cockpit we* cockpit-wsins* User for cockpit-ws* daemon daemon sssd User for sssd nscd NSCD Daemon nslcd LDAP Client User dbus System message bus egoadmin ftp FTP User games games halt halt lp lp lsfuser123 lsfoprt mail mail nobody Kernel Overflow User operator operator polkitd User for polkitd postgres PostgreSQL Server rngd Random Number Gener* root root rpc Rpcbind Daemon rpcuser RPC Service User scalemgmt IBM Spectrum Scale scalepm IBM Spectrum Scale * setroubleshoot shutdown shutdown sshd Privilege-separated* sync sync systemd-cored* systemd Core Dumper systemd-resol* systemd Resolver tcpdump tss Account used for TP* unbound Unbound DNS resolver vpcuser VPC Cloud User @adm @audio @bin @cdrom @chrony
-
要在主集群节点上使用 LDAP 用户 "symphuser007" 登录并运行 Symphony 集群命令,请参阅以下示例:
[symphuser007@pp-hpcc-sym-primary-0 root]$ egosh egosh> user logon user account:symphuser007 password: Logged on successfully symphuser007@HPCCluster> resource list NAME status mem swp tmp ut it pg r1m r15s r15m ls hpcc-sy* ok 14G 0M 87G 3% 8200 0.0 0.1 0.1 0.1 0 hpcc-sy* ok - - - - - - - - - - hpcc-sy* ok 14G 0M 86G 2% 0 0.0 0.1 0.2 0.0 1 symphuser007@HPCCluster> ego info Cluster name : HPCCluster EGO master host name : pp-hpcc-sym-primary-0.ibm.com EGO master version : 3.9 symphuser007@HPCCluster>
结论
OpenLDAP 与 IBM Spectrum Symphony 集成,以提供集中式认证和目录服务。