使用 Windows Active Directory 为 IBM Spectrum Symphony 启用用户管理
简介
您可以配置 IBM Spectrum Symphony 使用 Active Directory (AD) 服务器作为用户身份验证的主要目录服务。 该文档概述了使用 PowerShell 在 Windows Server 2019 上安装和配置 Active Directory 和 DNS Server 的分步步骤。 此外,它还包括使用 Samba Winbind 将基于 RHEL 8.4 操作系统的 Symphony Cluster 节点直接连接到 AD 的过程,以确保加密兼容性,并将其连接到 Active Directory 域。
本文档旨在帮助系统管理员无缝配置 IBM Spectrum Symphony 与 Active Directory 用于用户身份验证,从而实现高效的用户管理和访问控制。
常规先决条件
在继续执行配置过程之前,请确保满足先决条件:
- 对于安装和配置 Active Directory 和 DNS 服务器:
- 具有管理特权的 Windows Server 2019 机器。
- 基本熟悉 PowerShell 命令和 Windows Server 管理。
- 要使用 Samba Winbind 将 RHEL 系统直接连接到 AD:
- 能够运行 Samba Winbind 的 RHEL 系统。
- 熟悉 RHEL 命令行界面和系统配置。
- 对 Active Directory 域的访问权以及加入该域的相应许可权。
网络先决条件
在继续配置 IBM Storage Scale 以使用 Active Directory 并将 RHEL 系统连接到 AD 之前,请确保满足以下网络先决条件:
-
网络连接: 您需要 Windows Server 2019 机器 (其中安装了 Active Directory 和 DNS) 与连接到域的 RHEL 系统之间的稳定可靠网络连接。 验证是否未设置任何网络通信问题或防火墙以阻止基本端口。
-
防火墙规则: 复审并更新防火墙规则,以允许 Windows Server 2019 机器,RHEL 系统和域控制器之间进行必要的通信。 用于 AD 通信的密钥端口包括 TCP/UDP 53 (DNS),TCP/UDP 88 (Kerberos),TCP 135 (RPC),TCP/UDP 389 (LDAP),TCP/UDP 445 (SMB) 和 TCP/UDP 636 (LDAPS)。
-
域控制器可访问性: 确认 RHEL 系统可以访问 Active Directory 域控制器,而不会发生任何连接问题。 使用 "ping" 或 "nslookup" 之类的工具来验证是否能够从 RHEL 系统解析域控制器的主机名和 IP 地址。
-
时间同步: 确保参与 Active Directory 域的所有系统 (包括 Windows Server 2019 机器和 RHEL 系统) 的时钟与可靠的时间源同步。 时间同步对于正确认证和 Kerberos 凭单验证至关重要。
-
域 DNS 配置: Active Directory 域必须具有正确配置的 DNS 设置。 域控制器的 IP 地址必须设置为属于 AD 域的所有系统 (包括 Windows Server 2019 机器和 RHEL 系统) 上的主 DNS 服务器。
-
DNS 解析: 验证正向和反向 DNS 解析是否都正常工作。 域控制器的主机名必须可从 Windows Server 2019 机器和 RHEL 系统解析,而 Windows Server 2019 机器的主机名必须可从 RHEL 系统解析。
-
DNS 域名 确保 Active Directory 的 DNS 域名与配置过程中使用的域名匹配。 在这种情况下,用于 Active Directory 的域名 "POCDOMAIN.LOCAL" 在整个配置中必须一致。
-
具有管理特权的Active Directory 用户帐户: 确保具有管理特权的 Active Directory 用户帐户在配置过程中可用。 此帐户用于将 Windows Server 2019 机器提升为域控制器,并将 RHEL 系统连接到 AD 域。
Windows Server 和 Powershell
对于此过程,您需要:
- 具有管理特权的 Windows Server 2019 机器。
- 基本熟悉 PowerShell 命令和 Windows Server 管理。
步骤 1-在 Windows Server 2019 上使用 PowerShell 安装和配置 Active Directory 和 DNS 服务器
-
使用管理特权打开 PowerShell:
a. 按键盘上的 "Windows + X" 键以访问“Power 用户”菜单。
b. 从列表中,选择“Windows PowerShell (管理)”以使用管理特权启动提升的 PowerShell 会话。
-
通过运行以下 PowerShell 命令来安装 Active Directory 域服务角色和 DNS 服务器角色:
powershell code # Install the Active Directory Domain Services Role and DNS Server Role Install-WindowsFeature -Name AD-Domain-Services, DNS -IncludeManagementTools
-
通过运行以下 PowerShell 命令将服务器提升为具有集成 DNS 的域控制器:
powershell code # Set the required parameters $DomainName = "POCDOMAIN.LOCAL" $SafeModePassword = ConvertTo-SecureString -AsPlainText "MySecureDSRMpwd2023!" -Force # Configure and promote the server as a domain controller with integrated DNS Install-ADDSForest -DomainName $DomainName -SafeModeAdministratorPassword $SafeModePassword -DomainMode Win2019 -ForestMode Win2019 -InstallDNS
示例值:
- 域名: POCDOMAIN.LOCAL
- DSRM 密码: MySecureDSRMpwd2023!
运行 PowerShell 命令时,将在服务器上安装并配置 Active Directory 域服务和 DNS 服务器角色。
服务器将自动重新启动以完成域控制器提升过程。
-
在服务器重新启动后,使用您在提升过程中创建的域管理员帐户登录以验证 Active Directory 和 DNS 配置。
验证 Active Directory 和 DNS 配置
通过检查以下内容来验证是否正确配置了 Active Directory 和 DNS:
-
验证 Active Directory 管理
打开“服务器管理器”,在“仪表板”中,确认“Active Directory 用户和计算机”和 "DNS" 列在“工具”下,指示成功安装了 Active Directory 和 DNS 管理工具。
-
启动 Active Directory 用户和计算机 以管理域中的用户帐户,组和组织单元 (OU)。
-
访问 DNS Manage r 以管理域的 DNS 区域和记录。
-
在同一网络中的客户机上,配置 DNS 设置以指向新提升的域控制器的 IP 地址。
-
尝试将客户机连接到 "POCDOMAIN.LOCAL" 域。 成功连接将确认正确的 DNS 解析和功能正常的 Active Directory 域服务。
步骤 2-在 Active Directory 中为访问 Symphony 集群的用户创建用户组和用户
在 Windows Server 上使用 Active Directory 用户和计算机 (ADUC) 管理工具在 Active Directory 域 "pocdomain.local" 中创建名为 "Symphony-group" 的用户组和名为 "Symphonyuser01" 的用户:
在 "pocdomain.local" Active Directory 域中创建用户组和用户需要该域中的管理特权。 确保您具有创建组和用户所需的许可权。 此外,在 Active Directory 中创建用户帐户和组以维护安全网络环境时,请始终设置高强度密码并遵循安全最佳实践。
-
打开Active Directory用户和计算机:
a. 使用管理特权登录到 Windows Server。
b. 单击 启动 并搜索“Active Directory 用户和计算机”。
c. 启动“Active Directory 用户和计算机”管理控制台。
-
创建用户组 Symphony-group:
a. 在 ADUC 控制台中,浏览到要在其中创建用户组的 "pocdomain.local" 域中的组织单元 (OU)。
b. 右键单击 OU,然后选择 新建,然后选择 组。
c. 在 新建对象组 对话框中,输入 Symphony-group 作为组名。
d. 选择组作用域 (例如,全局) 和组类型 (例如,安全性)。
e. 单击 OK 创建 Symphony-group 用户组。
-
创建用户 Symphonyuser01:
a. 在 ADUC 控制台中,浏览至要在其中创建用户 "Symphonyuser01" 的 "pocdomain.local" 域中的相同或不同的组织单元 (OU)。
b. 右键单击 OU,然后选择 新建,然后选择 用户。
c. 在 新建对象-用户 对话框中,输入新用户 **symphonyuser01*的必需信息:
-
全名: 输入用户的全名 (例如,LSF User 01)。
-
用户登录名: 输入用户的登录名 (例如,Symphonyser01)。
-
用户主体名称 (UPN): 将根据用户登录名和域名 (例如,Symphonyuser01@pocdomain.local) 自动生成 UPN。
-
密码: 设置用户帐户的安全密码,并选择用户是否必须在首次登录时更改密码。
-
用户无法更改密码: 如果要阻止用户更改其密码,请选中此选项。
-
密码永不到期: 如果您希望用户的密码永不到期,请选中此选项。
-
帐户处于禁用状态: 缺省情况下,帐户处于启用状态。 如果要创建处于禁用状态的用户帐户,请清除此选项。
d. 单击 下一步 以继续执行任何其他向导步骤。
e. 查看输入的信息,然后单击 完成 以创建新用户 "Symphonyuser01"。
-
-
将 "Symphonyuser01" 添加到 "Symphony-group" 用户组:
a. 在 ADUC 控制台中,找到先前创建的 Symphony-group 用户组。
b. 右键单击 Symphony-group 用户组,然后选择 属性。 c. 在“属性”对话框中,转至 成员 选项卡。
d. 单击 添加,然后在 输入要选择的对象名 字段中输入 Symphonyuser01。
e. 单击 检查名称 以验证用户名。
f. 单击 确定 以将 "Symphonyuser01" 添加到 "Symphony-group" 用户组。
(例如, 单击 应用,然后单击 确定 以保存更改。
步骤 3-使用 Samba Winbind 将基于 RHEL 8.4 的系统上运行的 Symphony 集群直接集成到 AD
使用 Samba Winbind 的直接集成概述
要将 RHEL 系统连接到 Active Directory (AD),需要两个组件: Samba Winbind 和 realmd。 Samba Winbind 与 AD 身份和认证源交互,而 realmd 会检测可用域并配置底层 RHEL 系统服务。
用于直接集成的受支持 Windows 平台和操作系统
与 AD 林的直接集成与以下林和域功能级别兼容:
- 森林功能级别范围 :Windows Server 2008-Windows Server 2016
- 域功能级别范围 :Windows Server 2008-Windows Server 2016
用于直接集成的受支持操作系统包括:
- Windows Server 2022 (RHEL 8.7 及更高版本)
- Windows Server 2019
- Windows Server 2016
- Windows Server 2012 R2
Windows Server 2019 和 Windows Server 2022 不引入新的功能级别,使用 Windows Server 2016 的最高功能级别。
确保支持 AD 和 RHEL 中的公共加密类型
缺省情况下,Samba Winbind 支持 RC4,AES-128和 AES-256 Kerberos 加密类型。 但是,由于安全考虑,不推荐使用 RC4 加密,缺省情况下将其禁用。 AD 用户凭证和信任仍可依赖于 RC4 加密,从而导致认证问题。
为了确保兼容性,您有两个选项:
- 在 Active Directory中启用 AES 加密支持。
- 在 RHEL 中启用 RC4 支持。
要在 RHEL 中启用 RC4 支持,步骤因 RHEL 版本而异。 建议参阅官方文档以获取详细指示信息。
将 Symphony 集群与 Symphony 集群节点连接
Samba Winbind 是 System Security Services Daemon (SSSD) 的替代方法,用于将 Red Hat Enterprise Linux (RHEL) 系统与 Active Directory (AD) 连接。 本节描述如何通过使用 realmd 来配置 Samba Winbind,将 RHEL 系统连接到 AD 域。
使用 Samba Winbind 和 realmd
将 RHEL 8.4 操作系统上托管的 Symphony Cluster 节点连接到 AD 域:
-
安装并更新以下软件包:
# yum install realmd oddjob-mkhomedir oddjob samba-winbind-clients \ samba-winbind samba-common-tools samba-winbind-krb5-locator #yum update
-
使用添加 AD 域 IP 和名称来更新 /etc/hosts。 例如:
[root@amit-rhel84 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.243.0.41 addc1.POCDomain.local
addc1.POCDomain.local 是 AD 服务器 FQDN 名称
-
使用以下命令更新
/etc/resolv.conf
文件中的 DNS 条目:sudo nmcli connection modify "System eth0" ipv4.dns "10.243.0.41" ipv4.ignore-auto-dns yes
此命令不仅更新
/etc/resolv.conf
文件中的 DNS 条目,还可确保 DNS 条目不会自动更新到基于云的 DNS 服务器 -
确认 DNS 文件中的更改:
[root@amit-rhel84 ~]# cat /etc/resolv.conf # Generated by NetworkManager nameserver 10.243.0.41 [root@amit-rhel84 ~]#
除确认外,使用以下名称对域控制器执行 ping 操作:-Ping POCDOMAIN.LOCAL shell:
[root@amit-rhel84 ~]# ping POCDOMAIN.LOCAL PING POCDOMAIN.LOCAL (10.243.0.41) 56(84) bytes of data. 64 bytes from addc1.POCDomain.local (10.243.0.41): icmp_seq=1 ttl=128 time=0.365 ms 64 bytes from addc1.POCDomain.local (10.243.0.41): icmp_seq=2 ttl=128 time=0.722 ms 64 bytes from addc1.POCDomain.local (10.243.0.41): icmp_seq=3 ttl=128 time=0.581 ms 64 bytes from addc1.POCDomain.local (10.243.0.41): icmp_seq=4 ttl=128 time=0.525 ms
-
使用
nslookup
以确保 AD 域可解析:[root@amit-rhel84 ~]# nslookup pocdomain.local Server: 10.243.0.41 Address: 10.243.0.41#53 Name: pocdomain.local Address: 10.243.0.41
-
如果 Active Directory 需要不推荐的 RC4 加密类型用于 Kerberos 认证,请在 RHEL 中启用对这些密码的支持:
# update-crypto-policies --set DEFAULT:AD-SUPPORT
运行此命令后,它将更新加密策略并要求重新引导机器。
-
备份现有 /etc/samba/smb.conf Samba 配置文件:
# mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
-
将 RHEL 8.x 主机连接到 Active Directory 域。 如示例中所述,要连接名为 POCDOMAIN.LOCAL:
# realm join --membership-software=samba --client-software=winbind POCDOMAIN.LOCAL
使用此命令时,域实用程序会自动执行以下操作:
- 为 pocdomain.local 域中的成员资格创建 /etc/samba/smb.conf 文件。
- 将用户和组查找的 winbind 模块添加到 /etc/nsswitch.conf 文件。
- 更新 /etc/pam.d/ 目录中的可插拔认证模块 (PAM) 配置文件。
- 启动 winbind 服务,并使服务能够在系统引导时启动。
-
(可选) 在 /etc/samba/smb.conf 文件中设置备用标识映射后端或定制标识映射设置。 有关更多信息,请参阅 了解和配置 Samba 标识映射。
-
编辑
/etc/krb5.conf
文件并添加此部分:
[plugins]
localauth = {
module = winbind:/usr/lib64/samba/krb5/winbind_krb5_localauth.so
enable_only = winbind
}
- 确认 winbind 服务正在运行。 例如:
#systemctl status winbind
[root@amit-rhel84 ~]# systemctl status winbind
winbind.service - Samba Winbind Daemon
Loaded: loaded (/usr/lib/systemd/system/winbind.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2023-08-09 08:16:16 EDT; 1h 42min ago
Docs: man:winbindd(8)
man:samba(7)
man:smb.conf(5)
Main PID: 4889 (winbindd)
Status: "winbindd: ready to serve connections..."
Tasks: 5 (limit: 49264)
Memory: 10.9M
CGroup: /system.slice/winbind.service
├─4889 /usr/sbin/winbindd --foreground --no-process-group
├─4893 /usr/sbin/winbindd --foreground --no-process-group
├─4894 /usr/sbin/winbindd --foreground --no-process-group
├─4924 /usr/sbin/winbindd --foreground --no-process-group
└─5997 /usr/sbin/winbindd --foreground --no-process-group
要使 Samba 能够查询域用户和组信息,在启动 smb 之前,winbind 服务必须正在运行。
如果安装了 samba 软件包以共享目录和打印机,请启用并启动 smb 服务:
# systemctl enable --now smb
验证步骤
-
显示 AD 用户详细信息,例如 AD 域中的 AD 管理员帐户。 例如:
# getent passwd " POCDOMAIN\administrator" POCDOMAIN\administrator:*:2000500:2000513::/home/administrator@POCDOMAIN:/bin/bash
-
查询 AD 域中域用户组的成员:
# getent group " POCDOMAIN\Domain Users" POCDOMAIN\domain users:x:2000513:
-
(可选) 验证在设置对文件和目录的许可权时是否可以使用域用户和组。 例如,要将 /srv/samba/example.txt 文件的所有者设置为 AD\administrator,并将组设置为 AD\Domain 用户:
# sudo chown "POCDOMAIN\administrator":"POCDOMAIN\Domain Users" example.txt
-
验证 Kerberos 认证是否按预期工作。 在 AD 域成员上,获取 administrator@POCDOMAIN.LOCAL 主体:
# kinit administrator@POCDOMAIN.LOCAL
-
显示高速缓存的 Kerberos 凭单:
# klist Ticket cache: KCM:0 Default principal: Administrator@POCDOMAIN.LOCAL Valid starting Expires Service principal 12/11/2023 08:26:47 12/11/2023 18:26:47 krbtgt/POCDOMAIN.LOCAL@POCDOMAIN.LOCAL renew until 12/18/2023 08:26:23
-
显示可用域:
#realm list pocdomain.local type: kerberos realm-name: POCDOMAIN.LOCAL domain-name: pocdomain.local configured: kerberos-member server-software: active-directory client-software: winbind required-package: oddjob-mkhomedir required-package: oddjob required-package: samba-winbind-clients required-package: samba-winbind required-package: samba-common-tools login-formats: POCDOMAIN\%U login-policy: allow-any-login #wbinfo --all-domains BUILTIN AD-CLIENT POCDOMAIN
其他资源-如果您不希望使用不推荐使用的 RC4 密码,那么可以在 AD 中启用 AES 加密类型。
向 Active Directory (AD) 用户提供 root 用户许可权
要向 Linux 机器上 "POCDOMAIN.LOCAL" 域的 AD 用户提供 root 用户许可权,请执行以下操作:
-
打开终端或连接到 Linux 机器。
-
使用可视化命令编辑 sudoers 文件:
sudo visudo
-
在 sudoers 文件中找到用于配置用户特权的部分:
# Allow root to run any commands anywhere root ALL=(ALL) ALL
-
在 root 用户条目下添加以下行,以允许 "POCDOMAIN\Domain Administrators" 组中的 AD 用户使用 root 用户特权运行命令:
%POCDOMAIN\\Domain\ Administrators ALL=(ALL) ALL
此行向“POCDOMAIN\Domain 用户”组中的所有 AD 用户授予 root 用户特权。 双反斜杠 ("") 用于对特殊字符进行转义。
-
保存对 sudoers 文件的更改并退出编辑器。 作为“POCDOMAIN\Domain 用户”组的成员的 AD 用户现在可以使用 sudo 命令以 root 用户特权运行命令。 例如:
sudo command_to_execute_as_root
出现提示时,AD 用户必须输入自己的密码以进行认证,并以提升的特权运行该命令。
向 AD 用户授予 root 用户许可权时,请谨慎操作。 请务必仅将这些特权授予需要其执行特定任务的可信个人。 定期查看用户特权并遵循安全最佳实践,有助于维护安全的系统环境。
步骤 4-在 Symphony 集群端配置设置
以下是在 Linux 主机上配置 IBM Spectrum Symphony 与 Active Directory 集成的 Kerberos 身份验证的步骤:
-
关闭集群
使用集群管理员凭证登录到集群中的任何管理主机。
#Example egosh user logon –u Admin –x Admin
执行以下命令以正常关闭集群:
#Example soamcontrol app disable all egosh service stop all egosh ego shutdown all
-
修改管理主机上的安全配置: 在每个管理主机上,编辑
$EGO_CONFDIR/ego.conf
文件。将 EGO_SEC_PLUGIN 设置为 "sec_ego_gsskrb"。
#Example EGO_SEC_PLUGIN=sec_ego_gsskrb
设置 EGO_SEC_CONF 以指定插件的配置:
#Example EGO_SEC_CONF="/EGOShare/kernel/conf,600,ERROR,/opt/EGO/kernel/log"
将 EGO_SEC_KRB_SERVICENAME 设置为认证服务器的 Kerberos 主体:
#Example EGO_SEC_KRB_SERVICENAME=symphonyuser03
使用提供的参数创建或修改 $EGO_CONFDIR/sec_ego_gsskrb.conf 文件:
#Example REALM=POCDomain.local KRB5_KTNAME=/etc/krb5.keytab KERBEROS_ADMIN=egoadmin
KRB5_KTNAME=/etc/krb5.keytab KRB5_KTNAME 参数指定密钥表文件的绝对路径。 此文件包含 Kerberos 认证中使用的服务主体的密钥。 此处,路径设置为 "/etc/krb5.keytab",确保检索必要的密钥以进行认证。
KERBEROS_ADMIN=egoadmin KERBEROS_ADMIN 参数指定映射到内置集群管理员 (Admin) 的用户名的 Kerberos 主体。 在此配置中,它设置为 "hpcegoadmin"。 本金对 IBM Spectrum Symphony 集群内的管理任务非常重要,用于验证集群管理员身份。
-
将配置应用于计算和客户机主机。
在计算主机和客户机主机上重复修改步骤,调整它们各自的
$EGO_CONFDIR/ego.conf
和$EGO_CONFDIR/sec_ego_gsskrb.conf
文件中的配置。 -
启动集群并启用应用程序。
在主机之间应用配置后,使用以下命令启动集群并启用应用程序:
#Example egosh ego start soamcontrol app enable appName
-
登录到集群管理主机。
从 POCDomain.local 域中的管理主机,使用 egosh 命令行以管理用户身份登录。 输入 KERBEROS_ADMIN 参数中定义的 Kerberos 主体的密码。
#Example egosh user logon –u Admin –x passwordegoadmin
-
添加 AD 用户 (如果需要)
如果 Linux 管理主机上
$EGO_CONFDIR/sec_ego_gsskrb.conf
文件中的 ENABLE_AD_USERS_MANAGE 参数设置为 "N",则使用 egosh user add 命令将 AD 用户添加到 IBM Spectrum Symphony 中。 提供任何随机字符串作为密码; 它将不用于用户登录。#Example egosh user add –u ad1tester –x 111
-
将角色分配给用户
使用 egosh 用户 assignrole 命令将角色分配给用户帐户。 例如,要将使用者管理角色分配给 ad1tester 和 ad2tester:
#Example egosh user assignrole –u ad1tester –r CONSUMER_ADMIN –p /SymTesting/Symping73.2
-
以 AD 用户身份登录
使用 egosh 命令行以 AD 用户身份登录。 例如,要以 ad1tester:
#Example egosh user logon –u ad1tester –x passwordad1tester
结论
对于希望在 IBM Cloud 环境中无缝集成 IBM Spectrum Symphony 与 Active Directory 的系统管理员来说,本指南是一项重要资源。 它解决了先决条件并提供了逐步指导,确保 Active Directory 和部署在 IBM Virtual Servers 上的 RHEL 系统准备就绪。 从在 Windows Server 2019 上安装 Active Directory 到配置 Kerberos 身份验证,本指南为管理员提供了可靠的参考,以便为 IBM Spectrum Symphony 基础架构内的 IBM Cloud 用户管理和访问控制。