IBM Cloud Docs
将 OpenLDAP 与 IBM Spectrum Symphony 集成

将 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 之间的集成涉及以下组件:

  1. OpenLDAP 目录服务: 此组件存储和管理用户认证数据,例如用户名和密码。
  2. IBM Spectrum Symphony 分布式计算平台: 此组件使用 OpenLDAP 中的认证数据来认证用户,并使他们能够运行分析和数据密集型应用程序。
  3. LDAP 认证过程: 此过程使 IBM Spectrum Symphony 能够与 OpenLDAP 通信,并使用其现有凭证对用户进行认证。

OpenLDAP 与 IBM Spectrum Symphony 体系结构集成支持集中用户管理,提高安全性和简化用户认证。 该集成还允许使用现有认证凭证,从而减少用户记住多个登录凭证的需求。 总体而言,该架构为分布式计算环境中的用户认证和目录管理提供了稳健高效的解决方案。

准备工作

开始之前,请务必查看以下先决条件:

常规先决条件

要成功将 OpenLDAP 与 IBM Spectrum Symphony集成,必须满足以下系统需求和先决条件:

  1. OpenLDAP 与 IBM Spectrum Symphony安装在专用服务器或同一服务器上。
  2. IBM Spectrum Symphony 安装在具有最新补丁和更新的受支持操作系统上。
  3. 您具有对 OpenLDAP 和 IBM Spectrum Symphony都具有管理特权的用户帐户。
  4. 您熟悉 LDAP 认证和目录服务。
  5. 您可以访问 Symphony 配置文件并能够对其进行修改。

网络先决条件

要成功将 OpenLDAP 与 IBM Spectrum Symphony集成,必须满足以下网络需求:

  1. OpenLDAP 服务器与 IBM Spectrum Symphony 节点之间的网络连接: 确保 OpenLDAP 服务器可以通过网络与 IBM Spectrum Symphony 节点进行通信。 这可以通过在 OpenLDAP 服务器和 IBM Spectrum Symphony 节点上配置网络设置来实现。
  2. 端口需求: OpenLDAP 服务器和 IBM Spectrum Symphony 节点必须能够通过特定端口进行通信。 缺省情况下,OpenLDAP 将端口 389 用于未加密通信,将端口 636 用于加密通信。IBM Spectrum Symphony 使用端口 7777 在客户机与服务器之间进行通信。
  3. 防火墙配置: 如果网络中存在防火墙,请确保打开必要的端口以在 OpenLDAP 服务器与 IBM Spectrum Symphony 节点之间进行通信。
  4. DNS 配置: 确保 IBM Spectrum Symphony 节点可以解析 OpenLDAP 服务器的主机名或 IP 地址。 如果 DNS 解析不可用,请在每个节点上配置 /etc/hosts 文件以包含 OpenLDAP 服务器的主机名和 IP 地址。

配置 OpenLDAP 服务器

确保您有权访问具有 root 用户特权的 RHEL 7.9 Linux® 系统。

  1. 通过运行以下命令来安装 OpenLDAP 服务器和客户机软件包:

    yum -y install openldap-servers openldap-clients
    
  2. 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
    
  3. 通过运行以下命令,启动 slapd 服务并使其能够在引导时自动启动:

    systemctl start slapd
    systemctl enable slapd
    
  4. 通过运行 slappasswd 命令来生成管理密码。 系统会提示您输入密码。 例如:

    slappasswd
    

    您会看到类似于以下内容的输出:

    示例输出:

    {SSHA}FUMV8TZ9lZQxABxCBE5UZ+oU/dlwf/d4
    

    请注意稍后生成的密码散列 (在本例中为 {SSHA}FUMV8TZ9lZQxABxCBE5UZ+oU/dlwf/d4)。

  5. 创建名为 chrootpw.ldif 的文件,并向其添加以下行:

    dn: olcDatabase={0}config,cn=config
    changetype: modify
    add: olcRootPW
    olcRootPW: {SSHA}FUMV8TZ9lZQxABxCBE5UZ+oU/dlwf/d4
    

    olcRootPW 值替换为您在上一步中生成的密码散列。

  6. 通过运行以下命令来导入基本模式:

    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
    
  7. 通过再次运行 slappasswd 命令来生成管理器密码。 例如:

    slappasswd
    

    您会看到类似于以下内容的输出:

    示例输出:

    {SSHA}TVW9z6WLIBC3EXtFHFWnb2EVlK7EZQ3b
    

    请注意稍后生成的密码散列 (在本例中为 {SSHA}TVW9z6WLIBC3EXtFHFWnb2EVlK7EZQ3b)。

  8. 通过创建名为 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} 值替换为您在上一步中生成的密码散列。

  9. 通过运行以下命令来应用更改:

    ldapmodify -Y EXTERNAL -H ldapi:/// -f chdomain.ldif
    
  10. 创建名为 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
  1. 通过运行以下命令来应用上一步中所做的更改:
ldapadd -x -D cn=Manager,dc= ibmsymphony,dc=com -W -f basedomain.ldif
  1. 使用编辑器 (例如 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} 值替换为先前生成的密码散列。

  1. 通过运行以下命令来应用更改:
ldapadd -x -D cn=Manager,dc= ibmsymphony,dc=com -W -f ldapuser.ldif
  1. 要验证是否已创建用户,请使用以下命令:
ldapsearch -x -LLL -b "ou=People,dc=ibmsymphony,dc=com" "(objectClass=posixAccount)" uid cn

OpenLDAP 服务器现已配置完毕,可供使用。 通过创建更多 LDIF 文件并使用 ldapadd 命令将这些文件导入到目录中,可以添加更多用户和组。

在 OLDAP 目录中创建用户组

现在已配置 OpenLDAP 服务器,您需要在 OLDAP 目录中创建用户组,该用户组由应该访问 LSF 集群的用户组成。

  1. 要创建组,请使用 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 属性提供组的简要描述。

  2. 您可以将上一步中的内容保存在具有 .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=***" 部分中的域名替换为您自己的域名。

  1. 请运行以下命令:

    yum -y install openldap-clients nss-pam-ldapd
    
    yum install authselect sssd oddjob oddjob-mkhomedir
    
    authconfig --enablesssd --enablesssdauth --update
    
  2. 启用 SSSD 认证概要文件:

    authselect select sssd
    
  3. 将 LDAP 服务器 URL 和基本搜索 DN 添加到 /etc/openldap/ldap.conf 文件,如以下示例中所示:

    URI ldap://ibmsymphony.com/ or IP address will also work
    BASE dc=ibmsymphony,dc=com
    
  4. /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

  5. 更改 /etc/sssd/sssd.conf 文件的许可权:

    chmod 600 /etc/sssd/sssd.conf
    
  6. 重新启动并启用 SSSD:

    systemctl restart sssd
    systemctl enable sssd
    
  7. 运行以下命令以启用 mkhomedir 功能部件:

    sudo authselect enable-feature with-mkhomedir
    
  8. 验证 mkhomedir 是否已启用:

    [root@icgen2host-10-240-0-39 ~]# authselect current
    Profile ID: sssd
    Enabled features:
    - with-mkhomedir
    
  9. 启用并重新启动 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 和缺省客户机配置用户认证

  1. 使用 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
    
  2. 在所有管理主机上,在 $EGO_CONFDIR 目录中创建名为 pamauth.conf 的插件配置文件。 如果存在,那么可以跳过此步骤。 将 /$EGO_CONFDIR /pamauth.conf 替换为配置文件的实际路径。 请参阅以下示例:

    vi /$EGO_CONFDIR/pamauth.conf
    
  3. 确保 /etc/pam.d/ 目录中存在 PAM 服务文件 (缺省 PAM 服务为 sshd)。 如果服务文件不存在,请创建该文件并分配 644 个许可权。 如果服务文件存在,那么可以跳过此步骤。

    #Example for sshd service file:
    touch /etc/pam.d/sshd
    chmod 644 /etc/pam.d/sshd
    
  4. 编辑 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
    
  5. 在管理和计算主机上编辑 $EGO_CONFDIR/ego.conf 文件:

    a. 在管理主机上,编辑 ego.conf 文件以使用以下值修改 EGO_SEC_PLUGINEGO_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_PLUGINEGO_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
    
  6. 以集群管理员身份登录到主主机并启动集群。 根据 shell (bashcsh) 使用以下命令:

    对于 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
    
  7. 如果需要认证服务器使用缺省或 PAM 认证方法来认证 PAM 客户机,请以集群管理员 (例如 Admin) 身份登录到 EGO,并运行 egosh user add 命令以将 PAM 用户映射到 EGO 帐户。

验证 PAM 和缺省客户机的用户认证

  1. 要验证用户认证,用户需要使用 soamlogonegosh 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 集群。

  1. 要将 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
    
  2. 要在主集群节点上使用 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 集成,以提供集中式认证和目录服务。