OpenLDAP と IBM Spectrum Symphony との統合
以下のチュートリアルでは、ハイパフォーマンス分散コンピューティング・プラットフォームである IBM Spectrum Symphonyと OpenLDAP を統合する方法について学習します。 OpenLDAP は、Lightweight Directory Access Protocol (LDAP) のオープン・ソース実装であり、ネットワーク内のユーザー、グループ、およびその他のオブジェクトに関する情報を保管および管理するために使用できます。
このチュートリアルでは、ユーザー認証の基本ディレクトリー・サービスとして OpenLDAP を使用するように IBM Spectrum Symphony を構成する際に必要なステップについて学習します。 また、 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 サーバーが構成されたため、LSF クラスタにアクセスする予定のユーザーで構成されるユーザーグループを OLDAP ディレクトリ内に作成する必要があります。
-
グループを作成するには、
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」という組織単位を作成します。 次の 2 つのエントリーは、「SymphonyAdmin」と「Symphonyconsumer」という名前のグループを作成します。
各グループ項目は、グループのスキーマを定義する
objectClass
"top" と "posixGroup" を指定します。gidNumber
属性はグループの固有 ID を指定し、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」の 2 つのグループ項目があることを示しています。
その後、 ldapmodify
コマンドを使用して、既存のユーザーをこれらのグループに追加できます。 上記の ldapsearch
出力では、2 人のユーザーが各グループのメンバーとして表示されています。
クライアント・マシンでの LDAP 認証の構成
次に、RHEL 8.4/8.6 を実行しているクライアント・マシンの LDAP 認証を OS として構成し、OLDAP サーバーを認証プロバイダーまたは ID プロバイダーとして構成する必要があります。 この場合、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
-
SSD 認証プロファイルを有効にします。
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
ldap_search_base
パラメーターを基本 DN で更新し、ldap_uri
を LDAP サーバーの URL で更新します。 -
/etc/sssd/sssd.conf
ファイルのアクセス権を変更します。chmod 600 /etc/sssd/sssd.conf
-
SSD を再始動して有効にします。
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 は、LDAP サーバー「ibmlsf.com」を使用する RHEL 8.4/8.6 システムでのユーザー認証に LDAP を使用するように構成されています。
Symphony クラスターの構成
OS 層で LDAP クライアント認証を構成した後、Symphony クラスターを OLDAP サーバーと完全に統合するために、LDAP クライアントでホストされるクラスターを構成する必要があります。 これには、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
-
すべてのマネジメント・ホストで、
pamauth.conf
という名前のプラグイン構成ファイルを$EGO_CONFDIR
ディレクトリーに作成します。 存在する場合は、このステップをスキップできます。/$EGO_CONFDIR /pamauth.conf
は、ご使用の構成ファイルへの実際のパスに置き換えてください。 以下の例を参照してください。vi /$EGO_CONFDIR/pamauth.conf
-
PAM サービス・ファイル (デフォルトの PAM サービスは
sshd
) が/etc/pam.d/
ディレクトリーに存在することを確認します。 サービス・ファイルが存在しない場合は、作成して 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_BYPASS などのパラメーターを指定できます。 以下の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
-
クラスター管理者として 1 次ホストにログオンし、クラスターを始動します。 シェル (
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
-
1 次クラスター・ノードで 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 と統合され、認証とディレクトリーの集中サービスを提供します。