当前位置: 首页 > news >正文

将 OpenLDAP 与 IBM Spectrum LSF 集成

IBM Spectrum LSF 是一个工作负载管理平台,提供强大的资源管理功能来优化应用程序性能和最大限度提高资源使用率。 OpenLDAP 是轻量级目录访问协议 (LDAP) 的开放式源代码实现,提供集中式认证和目录服务。

通过遵循本教程中概述的步骤,您可以将 OpenLDAP 与 IBM Spectrum LSF集成,这使您能够使用现有 LDAP 基础结构进行认证,从而使用户能够更安全,更简化地访问 IBM Spectrum LSF。

本教程仅涵盖在 Linux® 系统 (RHEL 7.9 作为主机) 上配置 OpenLDAP 服务器。

设计注意事项

将 OpenLDAP 与 IBM Spectrum LSF 集成涉及修改 LSF 配置文件和 OpenLDAP 服务器配置文件。 此集成的设计注意事项包括:

  1. IBM Spectrum LSF 使用可插入认证模块 (PAM) 框架进行认证。
  2. IBM Spectrum LSF 的 PAM 配置位于 /etc/pam.d/lsf 文件中。
  3. OpenLDAP 使用称为专有名称 (DN) 的分层命名结构来标识目录中的条目。
  4. OpenLDAP 配置文件位于 /etc/openldap/slapd.conf 或 /etc/openldap/slapd.d/中。
  5. 必须将 OpenLDAP 服务器配置为通过安全连接 (LDAPS) 使用 LDAP 协议进行认证。

准备工作

开始之前,请确保查看以下先决条件:

常规先决条件

  1. 已安装并配置 IBM Spectrum LSF V 10.1 或更高版本。
  2. 已安装并配置 OpenLDAP V 2.4 或更高版本。
  3. 可从 IBM Spectrum LSF 集群节点访问 OpenLDAP 服务器。
  4. ldapsearch 命令行工具安装在每个 IBM Spectrum LSF 集群节点上。
  5. pam_ldap 和 nss_ldap LDAP 客户机库安装在每个 IBM Spectrum LSF 集群节点上。

网络先决条件

要成功将 OpenLDAP 与 Spectrum LSF 集群节点集成,必须满足以下网络需求:

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

步骤 1: 配置 OpenLDAP 服务器

确保您有权访问具有 root 用户特权的 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=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} 值替换为您在上一步中生成的密码散列。

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

    ldapmodify -Y EXTERNAL -H ldapi:/// -f chdomain.ldif

  10. 创建名为 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 

  1. 通过运行以下命令来应用上一步中所做的更改:

ldapadd -x -D cn=Manager,dc=ibmlsf,dc=com -W -f basedomain.ldif

  1. 使用编辑器 (例如 VI) 创建名为 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} 值替换为先前生成的密码散列。

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

ldapadd -x -D cn=Manager,dc=ibmlsf,dc=com -W -f ldapuser.ldif

  1. 要验证是否已按先前步骤中提到的那样创建用户,请使用以下命令:

ldapsearch -x -LLL -b "ou=People,dc=ibmlsf,dc=com" "(objectClass=posixAccount)" uid cn

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

步骤 2: 在 OLDAP 目录中创建用户组

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

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

  2. 您可以将上一步中的内容保存在具有 .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> with scope subtree # filter: (objectClass=posixGroup) # requesting: ALL # # LSFadministrators, groups, ibmlsf.com dn: cn=LSFadministrators,ou=groups,dc=ibmlsf,dc=com objectClass: top objectClass: posixGroup gidNumber: 1001 cn: LSFadministrators description: LSFadministrators group memberUid: user2lsf memberUid: user1lsf # LSFconsumers, groups, ibmlsf.com dn: cn=LSFconsumers,ou=groups,dc=ibmlsf,dc=com objectClass: top objectClass: posixGroup gidNumber: 1002 cn: LSFconsumers description: LSFconsumers group memberUid: lsfoprt memberUid: lsfsupport # search result search: 2 result: 0 Success 

此输出显示在 ou=groups,dc=ibmlsf,dc=com 组织单元中有两个组条目: LSFadministrators 和 LSFconsumers

稍后,您可以使用 ldapmodify 命令将现有用户添加到这些组。 在先前的 ldapsearch 输出中,两个用户被视为每个组的成员。

步骤 3: 在客户端机器上配置 LDAP 认证

接下来,需要为正在将 RHEL 8 作为操作系统运行的客户端机器配置 LDAP 认证,并将 OLDAP 服务器作为认证提供程序或身份提供者运行。 在这种情况下, OLDAP 客户机是 LSF 集群,因此以下步骤适用于在 RHEL 8 Linux® 机器上运行的 LSF 集群节点。

在以下步骤中,确保将 "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://ibmlsf.com/ <or IP address will also work> BASE dc=ibmlsf,dc=com

  4. 在 /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://<ip address of the LDAP Server> [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

现在,您已将 SSSD 配置为在 RHEL 8 系统上使用 LDAP 服务器 "ibmlsf.com" 进行用户认证。

步骤 4: 配置 LSF 集群

现在,您已配置 LDAP 客户机认证,需要配置在 LDAP 上托管的 LSF 集群以指向 OLDAP 服务器,这将确保 LSF 集群与 OLDAP 服务器的集成可用于用户管理。

  1. 备份现有 lsf.conf 和 lsf.cluster.name 文件:

    cp/etc/lsf.conf /etc/lsf.conf.backup cp/etc/lsf.cluster.name /etc/lsf.cluster.name.backup

  2. 编辑 lsf.conf 文件以添加 LDAP 认证设置:

    AUTHMODE=ldap AUTHLDAPSERVER=<OpenLDAP_server> AUTHLDAPBASEDN=<LDAP_base_DN> AUTHLDAPUSER=<bind_DN> AUTHLDAPPASS=<bind_password> AUTHLDAPUSERTYPE=<user_object_class> AUTHLDAPUSERSEARCH=<user_search_filter> AUTHLDAPGROUP=<group_object_class> AUTHLDAPGROUPSEARCH=<group_search_filter>

    将值替换为您的相关信息。 请参阅下表以获取更多详细信息:

    表 1. LDAP 认证设置
    描述
    <OpenLDAP_server>OpenLDAP 服务器的主机名或 IP 地址
    <LDAP_base_DN>OpenLDAP 目录的基本 DN
    <bind_DN>IBM Spectrum LSF 应该用于绑定到 OpenLDAP 服务器以进行认证的用户的专有名称
    <bind_password>绑定用户的密码
    <user_object_class>OpenLDAP 目录中用户条目的对象类
    <user_search_filter>用户条目的搜索过滤器
    <group_object_class>组条目的对象类
    <group_search_filter>组条目的搜索过滤器
  3. 重新启动以下三个服务,以便您在 lsf.conf 文件中配置的认证设置可以生效:

    bctrld restart sbd all

    bctrld restart res all

    bctrld restart lim all

  4. 编辑 lsf.cluster.name 文件以指定 LDAP 认证域:

    LSF_CLUSTER_NAME=<cluster_name> LSF_LDAP_DOMAIN=<LDAP_authentication_domain

    将 <cluster_name> 替换为 IBM Spectrum LSF 集群的名称,并将 <LDAP_authentication_domain> 替换为 LDAP 认证域的名称。

授予对 LSF 集群的访问权

要向组授予对 LSF 集群的访问权,需要编辑 LSF 配置文件以将该组包含在相应的访问控制表 (ACL) 中。

特定 LDAP 命令行工具和命令可能有所不同。

  1. 以 LSF 管理员身份登录到集群中的任何主机。

  2. 打开 lsb.users (/opt/ibm/lsf/conf/lsbatch/HPCCLUSTER/configdir)。

  3. 编辑 "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 

  4. 要启用用户组管理员,请在 GROUP_ADMIN 列中指定用户或用户组,使用空格分隔用户和用户组,并将每个 GROUP_ADMIN 条目括在方括号中。

  5. 保存更改。

  6. 运行 badmin ckconfig 以检查新的用户组定义。 如果报告了任何错误,请修正问题并再次检查配置。

  7. 运行 badmin reconfig 以重新配置集群。

管理 LSF 集群

登录后,可以使用 EGO 命令来管理 LSF 集群,例如 egosh resource, egosh job和 egosh host等 (如以下示例中所示)。

要完成以下步骤,您需要使用具有高特权的 LSF 用户帐户。 只有具有高特权的帐户才能将用户添加到 LSF 集群,然后向其分配角色。 但是,如果为新添加的用户分配了 CLUSTER_Admin 角色,那么该用户还可以为随后添加的用户完成以下步骤。

  1. 要将 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

  2. 通过运行以下命令,使用上一步中添加的用户登录到 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> 

  3. 通过运行以下命令向新用户分配角色:

    lsfadmin@HPCCluster> user assignrole -u user1lsf -r CONSUMER_USER Role <Consumer User> is assigned to user <user1lsf>. lsfadmin@HPCCluster> user list ACCOUNT PHONE EMAIL DESCRIPTION ---------------------------------------------------------------- Admin Guest user2lsf user1lsf smith

结论

现在,您已成功将 OpenLDAP 与 IBM Spectrum LSF 集成,以提供集中式认证和目录服务,这使您能够使用现有 LDAP 基础结构进行认证。 您还启用了对 IBM Spectrum LSF的安全且简化的用户访问权。

相关文章:

  • 工业数据的特殊性和安全防护体系探索思考
  • 数据结构--图
  • VuePress安装及使用——使用 Markdown 创建你自己的博客网站和电子书
  • 23.ACL
  • LINUX SD卡备份的镜像+烧录启动时自动扩展最后一个分区
  • 【数据结构】什么是堆?
  • 2023年第四届 “赣网杯” 网络安全大赛 gwb-web3 Write UP【PHP 临时函数名特性 + 绕过trim函数】
  • 八股文打卡day2——计算机网络(2)
  • Maven知识
  • 【QT】解决QTableView鼠标点击合并单元格高亮显示问题
  • Jenkins在window下配置Android打包配置
  • 2023年超声波清洗机实测!清洁力强的超声波清洗机到底如何选择?
  • JWT令牌的作用和生成
  • 【Python】使用进程池Pool创建进程
  • WTN6系列语音芯片:PWM与DAC音频输出在PCB设计中的优势
  • 【React系列】如何构建React应用程序
  • HTTP那些事
  • js学习笔记
  • laravel 用artisan创建自己的模板
  • MySQL用户中的%到底包不包括localhost?
  • Redux 中间件分析
  • spring + angular 实现导出excel
  • 分享几个不错的工具
  • 简单数学运算程序(不定期更新)
  • 聊聊hikari连接池的leakDetectionThreshold
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 通信类
  • $.ajax()方法详解
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (离散数学)逻辑连接词
  • (六)激光线扫描-三维重建
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (转)关于多人操作数据的处理策略
  • (转)母版页和相对路径
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .NET : 在VS2008中计算代码度量值
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .Net Winform开发笔记(一)
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .net开发引用程序集提示没有强名称的解决办法
  • .net连接oracle数据库
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
  • .NET序列化 serializable,反序列化
  • [BZOJ5250][九省联考2018]秘密袭击(DP)
  • [c++] 什么是平凡类型,标准布局类型,POD类型,聚合体
  • [C++]priority_queue的介绍及模拟实现
  • [COI2007] Sabor
  • [CSDN首发]鱿鱼游戏的具体玩法详细介绍
  • [Design Pattern] 工厂方法模式
  • [Godot] 3D拾取
  • [HJ56 完全数计算]
  • [HNCTF 2022 WEEK2]easy_include 文件包含遇上nginx