ECS:如何在 UI 中设置 AD 或 LDAP 服务器连接
Summary: 如何在 ECS UI 中设置 Active Directory (AD) 或轻量级目录访问协议 (LDAP) 服务器连接。
Instructions
确认要使用的确切 AD 或 LDAP 信息。
可能会出现以下情况:输入到 ECS 中的值(见下文)与 AD 或 LDAP 服务器上的详细信息不匹配,这可能会为域用户登录尝试生成无效的凭据错误输出。
查看并确保 AD 或 LDAP 服务器中的值。
阅读 ECS 管理员指南中有关“身份验证提供程序”一章和“添加 AD 或 LDAP 身份验证提供程序”的部分。
第 1 节)
必须正确设置身份验证提供程序。
身份验证提供程序是定义 ECS 与 AD 或 LDAP 服务器的连接的位置。
第 2 节和第 3 节)
ECS 可以设置为使用 AD 或 LDAP 用户作为对象用户或作为管理用户登录 ECS UI。
在设置或故障处理中,首先最大限度降低可能问题的复杂性,然后分几个步骤进行。
- 转到 ECS UI > 身份验证提供程序,并使用一个服务器 URL 为一个 AD 或 LDAP 服务器设置身份验证提供程序。这是为了尽可能降低复杂性。
- 在服务器 URL 框中,如果可能,请尝试使用 LDAP 而不是 LDAPS 进行测试。好像 LDAP 不起作用,那么 LDAPS 也不起作用。
- 具有正确的管理器 DN。
- 在精确的用户文件夹中设置搜索基础,而不是在大型搜索基础中,这是为了减少超出的 LDAP 超时值。
- 作为搜索过滤器,选择正确的类型,AD 或 LDAP 服务器上的用户属性将显示要使用的类型。请参见下文。可能的搜索过滤器选项:
sAMAccountName=%U, userPrincipalName=%u, uid=%U - 请注意,一个常见问题是要使用哪种身份验证提供程序类型;AD、Keystone 还是 LDAP?建议是,如果服务器是 Windows Active Directory,则使用 AD 类型。如果服务器是 Linux openLDAP,请使用 LDAP 类型。如果服务器是 Keystone,则使用 Keystone。
- 将测试用户添加为域管理用户并测试登录。
- 在 ECS UI> 上添加测试用户 用户 >管理用户>添加
- 正确的格式应该是 username@domainname,ECS 使用 @ 符号来检测它是否应查找身份验证提供程序中定义的域用户。
- 您必须将用户添加到用户列表,以定义他们在 ECS 上的权限,即管理员或监视用户权限。
- 测试用户登录。
- 如果域用户登录失败,请检查并进行故障处理
- 如果成功,则将搜索库更改为用户想要的主搜索库,即根位置,
- 如果随后失败,则成功登录与失败之间的唯一更改是搜索库更改,请参阅知识库文章 ECS:超出 AD/LDAP 超时值导致间歇性的域用户登录失败
- 如果成功,则现在可以测试域组。
- 如果成功,则将搜索库更改为用户想要的主搜索库,即根位置,
- 如果用户可以登录,则也可以使用用户组。
- 确保所需组的组和用户在搜索基本范围内。
- 最好像上面一样测试测试用户,以确定连接是否正常工作。
- 从 ECS 管理列表中删除组的测试用户,并将用户所属的测试组添加到 ECS 管理用户列表中。就像上面的步骤一样,我们试图尽可能减少可能的故障处理。唯一的区别是,ECS 现在知道的是组,而不是直接用户。
- 请注意知识库文章(需要登录戴尔支持帐户才能访问文章)。也就是说,如果您想要使用组,则必须了解这篇知识库文章。
- 如果域用户登录失败,请检查并进行故障处理
- 对于能够登录的管理用户或组,了解这一点很有帮助,因为对域管理用户设置进行故障处理比对域对象用户设置进行故障处理更容易,因此最好进行测试。
- 如果用户想要使用域对象,并且可以向自己证明相同的域用户作为 UI 管理用户工作,那么了解这一点会很有帮助,就好像用户可以作为 UI 管理用户工作,那么他们应该作为对象用户工作一样。
- 对于 LDAP(LDAP over SSL 或 TLS)证书,请参阅管理员指南和知识库文章 ECS:如何在 ECS 上通过 LDAPS 设置和接受所有证书
- 建议先确认 LDAP 连接是否正常工作,并且用户可以登录 LDAP,然后再查看 LDAP 设置 LDAP。
- 请注意,可能需要有效且完整的证书链。
- 如果使用 LDAPS,身份验证提供程序中的服务器 url 必须采用 FQDN 格式而不是 IP 地址,以便与列出 LDAP 服务器 FQDN(而不是 IP 地址)的 LDAPS 证书相匹配。
列出的步骤的目的是通过将问题简化为要检查的步骤来消除可能的问题。
第 1 节:身份验证提供程序
有关所有步骤,请参见ECS 管理员指南。
如果您希望用户通过 ECS 外部的系统进行身份验证,则可以将身份验证提供程序添加到 ECS。
身份验证提供程序是 ECS 外部可以代表 ECS 对用户进行身份验证的系统。
ECS 存储允许其连接到身份验证提供程序的信息,以便 ECS 可以请求对用户进行身份验证。
在 ECS 中,可以使用以下类型的身份验证提供程序:
- Active Directory (AD) 身份验证或轻量级目录访问协议 (LDAP) 身份验证:用于对在 ECS 中分配给管理角色的域用户进行身份验证。
- 重点:用于对 OpenStack Swift 对象用户进行身份验证。
- 在包含必须登录 ECS 的特定用户的 AD 中创建用户或组:
- 导航:管理 >认证
- 输入名称和描述字段,然后选择正确的服务器类型:
提醒:如果尝试保存不正确的类型,则可能会显示错误消息。
- 输入要使用的域。
- AD 或 LDAP 服务器 URL:
LDAP 的默认端口为 389。
LDAPS 的默认端口为 636。
URL 格式:
ldap://<Domain controller IP>:<port> Or ldaps://<Domain controller IP>:<port>
LDAP 的默认端口为 3268。LDAPS 的默认端口为 3269。
如果使用 LDAPS,则身份验证提供程序中的服务器 URL 必须采用 FQDN 格式,而不是 IP 地址。这是为了匹配将列出 LDAP 服务器 FQDN 而不是 IP 地址的 LDAPS 证书。
- 更改或更新管理器 DN。
例如:管理器 DN:CN=Administrator,CN=Users,DC=nas2008test,DC=com
必须是 Manager DN 用户在 AD 或 LDAP 服务器上的正确位置。
Manager DN:
这是 ECS 用于连接到 Active Directory 或 LDAP 服务器的 Active Directory 绑定用户帐户。当 ECS 管理员指定用户进行角色分配时,此帐户用于搜索 Active Directory。
此用户帐户必须在 Active Directory 中具有“读取所有 inetOrgPerson 信息”。InetOrgPerson 对象类在多个非 Microsoft、LDAP 和 X.500 目录服务中用于表示组织中的人员。
- 提供程序选项
要在此阶段测试和验证连接,请启用它。
- 设置组属性:
违约:快递 之 家
- 更新或更改组白名单
身份验证提供程序定义的一个或多个组名称。
允许
使用多个值和通配符(例如 MyGroup*、TopAdminUsers*)。空值或星号 (*) 使 ECS 了解用户所属的所有组。
默认情况下,如果未添加任何组,则接受来自任何组的用户。
这可用于限制用户组。
空白或星号值:无用户组限制。
- 更新或更改搜索范围
- 更新或更改搜索库。
开始用户搜索的文件夹位置。
如果 用户在搜索库之外,并且搜索范围 尝试登录,则会输出 无效凭据 错误 。
使所有必需的 AD 或 LDAP 用户都在搜索库中。如果用户想要使用用户组,请在搜索库中同时拥有所需的用户和组。
ECS 搜索用户位置,然后搜索组位置(如果需要)。确认搜索库可以找到用户位置,而不仅仅是组位置。
可以在“组白名单”中定义组属性。
请记住,您可以有多个身份验证提供程序(具有不同的搜索基础)。或者,您可以更改搜索库以包括所需的用户位置,例如“CN=Users,DC=nas2008test,DC=com”到“DC=nas2008test,DC=com”
- 搜索筛选器
添加到身份验证提供程序时未验证。如果 AD 配置了备用 UPN 后缀,则搜索筛选器格式值必须为 sAMAccountName=%U,其中 %U 是用户名,并且不包含域名。
- 确认用户要使用的正确搜索过滤器:
检查 AD 或 LDAP 服务器以确认这是 openLDAP 服务器中的 LDIF 文件。
userPrincipalName 的指示器(在 AD 中找到的示例):
dn:CN=user1,CN=Users,DC=marketing,DC=example,DC=com userPrincipalName: user1@marketing.example.com memberOf: CN=marketing,CN=Users,DC=example,DC=com
uid 指示灯(在 openLDAP 中找到的示例)
dn: uid=ldapuser1,ou=People,dc=example,dc=com uid: ldapuser1 cn: ldapuser1 sn: ldapuser1
使用 sAMAccountName=%U 时,用户将以 username@domain.com 身份登录,而不是用户名。
这是为了防止与具有相同用户名的非域用户发生冲突。
即 user1 > 非域用户登录 user1@nas2008test.com > 域用户登录。
要使用的域值应与身份验证提供程序中 nas2008test.com 该用户的域条目匹配。
请注意用户的电子邮件(因为它们可能不匹配),user@nas2008test.com 与 user@emc.com。
sAMAccountName=%U 使用大写 u 而 userPrincipalName=%u 使用小写 u:
通过使用 'U',它只搜索用户名,这就是 sAMAccountName 的目的。
而 userPrincipalName=%u 也会检查用户值的右侧,如果用户的域与域名不同,则很有用。
客户 AD 或 LDAP 团队应知道他们使用哪种方法。
有关差异的更多信息,请参阅在线找到的外部文档。
- 多域林设置。
父示例: dell.com
子域示例:amer.dell.com、emea.dell.com、apac.dell.com
1) 一个组可能位于其中一个域中,而其某些用户可能位于其他域中。
2) 通常,这些域彼此不可见,但父域可以看到所有子域,因此在设置多域林连接时,请使用父域作为身份验证提供程序的主域。
不同的步骤:
A) 以父域命名域。
B) 在身份验证提供程序的“域”框中列出所有感兴趣的域。
C) 如果身份验证提供程序支持多域林,请使用全局编录服务器 IP 并始终指定端口号。默认端口:LDAP: 3268,LDAPS:3269
D) 将搜索库设置为父域的根目录。
E) 请注意,身份验证提供程序名称将是域用户使用的主要标识符。也就是说,在此示例中,添加用户或组,例如: group1@dell.com,而不是子域(如 group1@amer.dell.com
请参阅管理和对象用户设置部分。
第 2 部分:管理和对象用户设置
- 将组添加为管理用户,然后选择正确的角色:
您可以先创建并测试单个 AD 或 LDAP 用户,这在故障处理中非常有用。
然后,如果单个用户可以毫无问题地登录,请测试组管理用户。
注意:嵌套组及其用户依赖于父组的正常工作。通过以父组中的用户身份成功登录,首先测试父组,然后考虑嵌套组。
系统管理员(管理员用户)也可以是系统监视用户(只读访问用户)。管理员权限将覆盖监视用户权限。
- 使用组中的其他用户测试登录。
第 3 部分:AD 或 LDAP 用户作为对象用户设置
创建管理用户对于测试与 AD 或 LDAP 的连接非常有用,并且应在创建对象用户之前完成。
请参阅管理员指南 和 数据访问指南。
- 将域用户添加到命名空间以供对象用户使用:
如果您希望域用户执行 ECS 对象用户作,则必须在命名空间中添加(分配)这些用户。要访问 ECS 对象存储,必须将对象用户和命名空间管理员分配到命名空间。您可以将用户的整个域添加到命名空间中,也可以通过指定与域关联的特定组或属性,将域用户的子集添加到命名空间中。
一个域可以为用户提供多个命名空间。例如,您可能决定将“yourco.com”域中的会计部门等用户添加到 namespace1,将“yourco.com”域中的财务部门等用户添加到namespace2。在本例中,“yourco.com”域为用户提供两个命名空间。
不能将整个域、一组特定用户或特定用户添加到多个命名空间中。例如,“yourco.com”域可以添加到命名空间 1 中,但不能同时添加到命名空间 2 中。
以下示例显示,系统或命名空间管理员已将“yourco.com”域中的用户子集添加到命名空间中;具有“部门”属性 = Active Directory 中的帐户的用户。系统或命名空间管理员已使用 ECS 门户中的 Edit 命名空间将该域中帐户部门的用户添加到命名空间中。
图 1.使用一个 AD 属性
将域用户的子集添加到命名空间中 在“域”选项下选择的域对象用户将是 非管理员对象用户 ,仅对其自己创建的存储区具有访问权限。
属性是一个子集选项,可通过单击“X”将其删除。
属性子集必须与 AD 服务器上的域用户属性匹配。
以下示例显示了另一个示例,其中系统或命名空间管理员在将用户添加到命名空间时使用更精细的粒度。在这种情况下,系统或命名空间管理员在“yourco.com”域中添加了属于 Storage Admins 组的成员,并且 Department 属性 = Accounts,Region 属性 = Pacific,或者属于 Storage Admins 组,Department 属性 = Finance。
图 2.使用多个 AD 属性将一部分域用户添加到命名空间中
- 域用户根据 ECS 数据访问指南创建密钥
ECS Management REST API 允许经过身份验证的域用户请求密钥,以允许他们访问对象存储。在您想要创建自定义客户端以执行某些 ECS 管理作的情况下,可以使用 ECS API 参考。对于简单的作,域用户可以使用 curl 或基于浏览器的 HTTP 客户端来运行 API 以创建密钥。
请参阅数据访问指南部分:创建 S3 密钥:自助服务
可以将域用户创建为对象用户,就像在 UI 上创建普通对象用户一样。
用户可以使用自助服务 API 创建域对象用户。每个域用户都需要一个密钥,无法使用域对象组。
自助服务 API 允许有效的域用户创建密钥,而无需 UI 管理员用户单独创建每个对象用户。
必须事先将命名空间关联到域用户或组,否则在尝试自助式 API 命令时会发生无效错误。
首先测试域用户与 ECS 的连接:
user@device:~$ curl -ik -u TestUser@TestDomain.com https://10.xxx.xxx.xxx:4443/login Enter host password for user 'TestUser@TestDomain.com': HTTP/1.1 200 OK Date: Thu, 09 Apr 2020 14:30:04 GMT Content-Type: application/xml Content-Length: 106 Connection: keep-alive X-SDS-AUTH-TOKEN: BAAcYnJ_token_NlU0PQMAjAQASHVybjpzdG9yYWdlb3M6VmlydHVhbERhdGFDZW50ZXJEYXRhOmJhOGQ3ZTkzLTMyMGYtNDNmNy05Y2FkLWM4YWQzMWFiMzY1MAIADTE1ODYzNjE0Mjg5MTADAC51cm46VG9rZW46NGE3M2Q5ODYtODQ3My00ZjYxLTkwYWQtMzg5NTcyNmRmZGM3AgAC0A8= X-SDS-AUTH-USERNAME: TestUser@TestDomain.com X-SDS-AUTH-MAX-AGE: 28800 <?xml version="1.0" encoding="UTF-8" standalone="yes"?><loggedIn><user>TestUser@TestDomain.com</user></loggedIn>为用户创建密钥
user@device:~$ curl -ks -H "X-SDS-AUTH-TOKEN: BAAcYnJ_token_NlU0PQMAjAQASHVybjpzdG9yYWdlb3M6VmlydHVhbERhdGFDZW50ZXJEYXRhOmJhOGQ3ZTkzLTMyMGYtNDNmNy05Y2FkLWM4YWQzMWFiMzY1MAIADTE1ODYzNjE0Mjg5MTADAC51cm46VG9rZW46NGE3M2Q5ODYtODQ3My00ZjYxLTkwYWQtMzg5NTcyNmRmZGM3AgAC0A8=" https://10.xxx.xxx.xxx:4443/object/secret-keys | xmllint --format - <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <user_secret_keys> <secret_key_1/> <secret_key_1_exist>false</secret_key_1_exist> <secret_key_2/> <secret_key_2_exist>false</secret_key_2_exist> <key_timestamp_1/> <key_timestamp_2/> </user_secret_keys>使用令牌创建有效的域对象用户,并检查:
user@device:~$ curl -ks -H "X-SDS-AUTH-TOKEN: BAAcYnJ_token_NlU0PQMAjAQASHVybjpzdG9yYWdlb3M6VmlydHVhbERhdGFDZW50ZXJEYXRhOmJhOGQ3ZTkzLTMyMGYtNDNmNy05Y2FkLWM4YWQzMWFiMzY1MAIADTE1ODYzNjE0Mjg5MTADAC51cm46VG9rZW46NGE3M2Q5ODYtODQ3My00ZjYxLTkwYWQtMzg5NTcyNmRmZGM3AgAC0A8=" -H "Content-Type:application/json" -X POST -d "{}" https://10.xxx.xxx.xxx:4443/object/secret-keys | xmllint --format -
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<user_secret_key>
<link rel="self" href="/object/user-secret-keys/TestUser@TestDomain.com"/>
<secret_key>6C7fW_Secret_Key_COl38yzAHIRorJ3oiK</secret_key>
<key_expiry_timestamp/>
<key_timestamp>2020-04-09 14:44:27.431</key_timestamp>
</user_secret_key>
域用户现在应该能够像普通对象用户一样使用 S3 浏览器等应用程序来使用命名空间。
Additional Information
用户登录错误:
"Access is denied due to invalid or expired credentials."
- 用户或密码不正确。
- 未找到用户和未找到用户可能是由于该用户的身份验证 提供程序中的搜索库不正确 。
- 对 ECS 身份验证提供程序的更改 可能需要几分钟才能生效,更正后的身份验证提供程序仍在更新与 AD 或 LDAP 的连接。
- 对于该用户,用户 AD 参数“User must change password at next login”处于活动状态。请注意,ECS 无法更改 AD 或 LDAP 服务器上的域用户密码,因此这会导致错误,因为 AD 或 LDAP 服务器会尝试强制实施该参数。在其他应用程序上更改密码,或清除参数复选框。对于此问题,还建议使用 3.6.2.0 或更高版本,因为 ECS 随后会提示用户有关 AD 服务器请求以执行以下作:
"User must change password at next login." -
sAMAccountName 类型用户缺少username@domain的正确域值。
-
您可能已将搜索基础设置为:
CN=Groups,DC=CAS,DC=EMC,DC=com
While the user location is:
CN=Users,DC=CAS,DC=EMC,DC=com
将搜索库设置为可在搜索范围中找到所需用户和所需组的位置:
DC=CAS,DC=EMC,DC=com
搜索基础是查找用户及其所在的组,而不仅仅是用户所在的组。可以使用组白名单选项在搜索中筛选出组成员身份。
尝试创建身份验证提供程序时,可能会发生错误:
"Error 1008 (http:400): invalid parameter"
"Connection to the LDAP server succeeded, but the Manager DN CN=Users,DC=CAS,DC=EMC,DC=com or its password failed to authenticate"
- 设置为完全正确的用户位置,CN=Administrator,CN=Users,DC=CAS,DC=EMC,DC=com,而不是 CN=Users,DC=CAS,DC=EMC,DC=com
- 密码正确无误。
- 用户拥有成为 Manager DN 用户所需的授权。
尝试创建身份验证提供程序时,可能会发生错误:
"Error 7000 (http: 500): An error occurred in the API Service. An error occurred in the API service. Cause: Error creating auth provider."
在新 VDC 设置的情况下,如果在 VDC 具有复制组之前尝试添加 AD 或 LDAP 身份验证提供程序。可能会出现上述错误消息。
可能原因:
必须先创建复制组,然后才能配置身份验证提供程序。
作为 AD 或 LDAP,用户可以用作管理用户或对象用户。
对象用户需要复制组才能工作,因此添加身份验证提供程序可能会因复制组检查失败而出错。
ECS 支持人员可以在身份验证提供程序尝试时签入objcontrolsvc.log日志:
command type REQUEST_AUTHPROVIDER_CREATE failed with error code ERROR_RG_NOT_FOUND and message 'replication group urn:storageos:ReplicationGroupInfo:00000000-0000-0000-0000-000000000000:global not found'
如果是这样,请将复制组添加到 VDC,然后重试添加身份验证提供程序。
如果用户更改了 LDAP 服务器,而新 LDAP 服务器的 FQDN 与旧 LDAP 服务器的 FQDN 匹配。
当前 LDAP SSL 证书可能指向旧 LDAP 服务器,因此 LDAP SSL 证书必须替换为更新的 LDAP SSL 证书。
可能的错误消息:
检查颁发的证书,并确保 FQDN 与 ECS UI 中使用的 URL 完全匹配。或者,查看使用者备用名称是否与证书完全匹配:
命令:
sudo openssl s_client -connect :636 < /dev/null | openssl x509 -noout -text | grep DNS:
node1:~ # sudo openssl s_client -connect XXX.XXX.XXX:636 < /dev/null| openssl x509 -noout -text | grep DNS:
depth=0
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0
verify error:num=21:unable to verify the first certificate
verify return:1
DNS:FQDN.LDAPS1.LOCAL
node1:~ # sudo openssl s_client -connect XXX.XXX.XXX:636| openssl x509 -noout -text | grep DNS:
depth=0
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0
verify error:num=21:unable to verify the first certificate
verify return:1
DNS:FQDN.LDAPS.LOCAL
检查 ECS 上的 LDAPS 证书匹配项,如果不是,则可能是 ECS 需要新的正确证书。
如果是这种情况,用户可以考虑向 ECS 支持人员创建 SR 以获得帮助。
- 用户是否已正确填写 Authentication Provider 字段?
-
是否已创建管理用户?
-
在 ECS 登录时是否正确输入了测试用户和密码?
-
他们是否能够使用域中的其他用户身份登录?
-
这是第一次在 ECS 上设置 AD 或 LDAP?
-
如果不是在 ECS 上设置新的 AD 或 LDAP,他们是否能够使用这些凭据登录?如果是,请确定是否有任何会影响授权的更改?
准备好所有必需的详细信息以获得支持,包括所需域的测试用户详细信息。
支持可能需要 Web Ex 会话,并且用户需要显示支持 AD 或 LDAP 服务器和 ECS 详细信息。支持人员可能需要用户输入测试用户凭据。
此内容已翻译成 15 种不同的语言: