Rancher 使用 LDAP 与 Active Directory 服务器通信。因此,Active Directory 的身份验证流与 OpenLDAP 认证的身份验证流相同。
您需要创建或从您的 AD 管理员处获取一个新的 AD 用户,以用作 Rancher 的服务帐户。此用户必须具有足够的权限,才能执行 LDAP 搜索并读取您的 AD 域下的用户和组的属性。
通常(非管理员)域用户 帐户应用于此目的,因为默认情况下,该用户对域分区中的大多数对象具有只读权限。
但是,请注意,在某些锁定的 Active Directory 配置中,此默认行为可能不适用。在这种情况下,您需要确保服务帐户用户在Base OU(包含用户和组)上或全局范围内至少拥有 Read 和 List Content 权限。
使用 TLS?
如果 AD 服务器使用的证书是自签名的或不是来自认可的证书颁发机构,请确保手头有 PEM 格式的 CA 证书(包含任何中间证书)。您必须在配置期间粘贴此证书,以便 Rancher 能够验证证书链。
- 使用初始的本地帐户登录到 Rancher UI。
- 在 全局 视图中,导航到 安全 > 认证。
- 选择 Active Directory 。将显示配置 AD 服务器的表单。
配置 Active Directory 服务器设置
在标题为1. 配置Active Directory服务器
的部分中,填写您的 Active Directory 服务器的信息字段。有关每个参数所需值的详细信息,请参阅下表。
表 1:AD 服务器参数
在标题为2. 自定义架构
的部分中,必须为 Rancher 提供与目录中使用的架构对应的用户和组属性的正确映射。
Rancher 使用 LDAP 查询来搜索和检索关于 Active Directory 中的用户和组的信息。本节中配置的属性映射用于构造搜索筛选器和解析组成员身份。因此,最重要的是所提供的设置反映了您的 AD 域的真实情况。
如果您不熟悉 Active Directory 域中使用的架构,请参阅使用 ldapsearch 确认搜索起点和架构以确定正确的配置值。
用户架构
下表详细说明了用户架构部分配置的参数。
表 2:用户架构配置参数
组架构
下表详细说明了组架构配置的参数。
表 3:组架构配置参数
测试身份验证
完成配置后,请使用您的 AD 管理员账户,测试与 AD 服务器的连接。如果测试成功,将启用与配置的 Active Directory 的身份验证,您的账户会成为管理员账户。
- 输入应映射到本地主体帐户的 AD 帐户的用户名和密码。
- 单击启用 Active Directory 认证以完成设置。
结果:
- 已启用 Active Directory 身份验证。
- 您已使用提供的 AD 凭据以系统管理员身份登录到 Rancher。
注意:
如果 LDAP 服务中断,您仍然可以使用本地配置的
admin
帐户和密码登录。
为了成功配置 AD 身份验证,必须提供与 AD 服务器的层次结构和架构相关的正确配置。
ldapsearch 工具允许您查询您的 AD 服务器以了解用于用户和组对象的架构。
对于下面提供的示例命令,我们假设:
- Active Directory 服务器的主机名为
ad.acme.com
- 服务器正在监听端口
389
上的未加密连接 - 您有一个用户名为
jdoe
和密码为secret
的有效 AD 帐户
此命令执行 LDAP 搜索,搜索起点设置为域根目录(-b "dc=acme,dc=com"
),并执行针对用户帐户的筛选器(sAMAccountNam=jdoe
),返回所述用户的属性:
因为在这种情况下,用户的 DN 是CN=John Doe,CN=Users,DC=acme,DC=com
[5],所以我们应该使用父节点 DNCN=Users,DC=acme,DC=com
配置用户搜索起点。
同样,基于 memberOf 属性[4]中引用的组的 DN,组搜索起点的正确值将是该值的父节点,即OU=Groups,DC=acme,DC=com
。
确认用户架构
上述查询的输出还允许确定在用户架构配置中使用的正确值:
对象类型
: person[1]用户名属性
: name[2]登录属性
: sAMAccountName[3]用户成员属性
: memberOf[4]
我们还将搜索属性
参数设置为sAMAccountName | name。这样,用户可以通过输入用户名或全名添加到 Rancher UI 中的集群/项目中。
接下来,我们将查询与此用户关联的组之一,在本例中为CN=examplegroup,OU=groups,DC=acme,DC=com
:
$ ldapsearch -x -D "acme\jdoe" -w "secret" -p 389 \
-h ad.acme.com -b "ou=groups,dc=acme,dc=com" \
-s sub "CN=examplegroup"
此命令将通知我们用于组对象的属性:
同样,这允许我们确定要在组架构配置中输入的正确值:
对象类型
: group[1]名称属性
: name[2]搜索属性
: sAMAccountName[4]
查看 member 属性的值,我们可以看到它包含被引用用户的 DN。这对应于我们的用户对象中的 distinguishedName 属性。因此,必须将组成员映射属性
参数的值设置为此属性。
同样,我们可以看到用户对象中 memberOf 属性中的值对应于组的 distinguishedName[5]。因此,我们需要将参数的值设置为此属性。