Rancher 使用 LDAP 与 Active Directory 服务器通信。因此,Active Directory 的身份验证流与 OpenLDAP 认证的身份验证流相同。

您需要创建或从您的 AD 管理员处获取一个新的 AD 用户,以用作 Rancher 的服务帐户。此用户必须具有足够的权限,才能执行 LDAP 搜索并读取您的 AD 域下的用户和组的属性。

通常(非管理员)域用户 帐户应用于此目的,因为默认情况下,该用户对域分区中的大多数对象具有只读权限。

但是,请注意,在某些锁定的 Active Directory 配置中,此默认行为可能不适用。在这种情况下,您需要确保服务帐户用户在Base OU(包含用户和组)上或全局范围内至少拥有 ReadList Content 权限。

使用 TLS?

如果 AD 服务器使用的证书是自签名的或不是来自认可的证书颁发机构,请确保手头有 PEM 格式的 CA 证书(包含任何中间证书)。您必须在配置期间粘贴此证书,以便 Rancher 能够验证证书链。

  1. 使用初始的本地帐户登录到 Rancher UI。
  2. 全局 视图中,导航到 安全 > 认证
  3. 选择 Active Directory 。将显示配置 AD 服务器的表单。

配置 Active Directory 服务器设置

在标题为1. 配置Active Directory服务器的部分中,填写您的 Active Directory 服务器的信息字段。有关每个参数所需值的详细信息,请参阅下表。

表 1:AD 服务器参数


在标题为2. 自定义架构的部分中,必须为 Rancher 提供与目录中使用的架构对应的用户和组属性的正确映射。

Rancher 使用 LDAP 查询来搜索和检索关于 Active Directory 中的用户和组的信息。本节中配置的属性映射用于构造搜索筛选器和解析组成员身份。因此,最重要的是所提供的设置反映了您的 AD 域的真实情况。

如果您不熟悉 Active Directory 域中使用的架构,请参阅以确定正确的配置值。

用户架构

下表详细说明了用户架构部分配置的参数。

表 2:用户架构配置参数


组架构

下表详细说明了组架构配置的参数。

表 3:组架构配置参数


测试身份验证

完成配置后,请使用您的 AD 管理员账户,测试与 AD 服务器的连接。如果测试成功,将启用与配置的 Active Directory 的身份验证,您的账户会成为管理员账户。

  1. 输入应映射到本地主体帐户的 AD 帐户的用户名密码
  2. 单击启用 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:

  1. $ ldapsearch -x -D "acme\jdoe" -w "secret" -p 389 \
  2. -h ad.acme.com -b "ou=groups,dc=acme,dc=com" \
  3. -s sub "CN=examplegroup"

此命令将通知我们用于组对象的属性:

LDAP Group

同样,这允许我们确定要在组架构配置中输入的正确值:

  • 对象类型: group[1]
  • 名称属性: name[2]
  • 搜索属性: sAMAccountName[4]

查看 member 属性的值,我们可以看到它包含被引用用户的 DN。这对应于我们的用户对象中的 distinguishedName 属性。因此,必须将组成员映射属性参数的值设置为此属性。

同样,我们可以看到用户对象中 memberOf 属性中的值对应于组的 distinguishedName[5]。因此,我们需要将参数的值设置为此属性。