本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

配置活动目录 (AD)

如果您的组织使用 Microsoft Active Directory 作为中央用户储存库,您可以配置 Rancher 与 Active Directory 服务器通信以进行用户身份验证。这允许 Rancher 管理员根据在 Active Directory 中外部管理的用户和组控制对集群和项目的访问,同时允许最终用户在登录 Rancher UI 时使用其 AD 凭据进行身份验证。

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

在开始之前,请熟悉 外部身份验证配置和主要用户 的概念。

先决条件

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

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

但是,请注意,在某些受限的 Active Directory 配置中,此默认行为可能不适用。在这种情况下,您需要确保服务帐户用户至少具有 读取列出内容 的权限,这些权限可以在基础 OU(包含用户和组)上或在域上全局授予。

使用 TLS?
  • 如果 AD 服务器使用的证书是自签名的或不是来自受认可的证书颁发机构,请确保手头有 CA 证书(与任何中间证书连接在一起),格式为 PEM。您需要在配置过程中粘贴此证书,以便Rancher能够验证证书链。

  • 在升级到 v2.6.0 后,如果 AD 服务器上的证书不支持 SAN 属性,则通过 Rancher 对活动目录进行身份验证时可能会失败。这是 Go v1.15 中默认启用的检查。

    • 收到的错误是 "创建 SSL 连接时出错:LDAP 结果代码 200 "网络错误": x509: 证书依赖于传统的通用名称字段,请使用 SAN 或临时启用通用名称匹配,方法是设置 GODEBUG=x509ignoreCN=0"。

    • 要解决此错误,请更新或用支持 SAN 属性的新证书替换 AD 服务器上的证书。或者,可以通过将 GODEBUG=x509ignoreCN=0 设置为 Rancher 服务器容器的环境变量来忽略此错误。

配置步骤

打开 Active Directory 配置

  1. 使用初始本地`admin`账户登录Rancher UI。

  2. 在左上角,点击*☰ > 用户与身份验证*。

  3. 在左侧导航菜单中,点击 身份验证提供者

  4. 点击 ActiveDirectory身份验证提供程序:将显示 ActiveDirectory 表单。

  5. 填写表单。如需帮助,请参阅下方的配置详细信息。

  6. 单击 启用

配置 Active Directory 服务器设置

在标题为 1. Configure an Active Directory server 的部分中,填写与您的 Active Directory 服务器相关的信息。请参阅以下表格以获取每个参数所需值的详细信息。

如果您不确定在用户/组搜索基础字段中输入的正确值,请参阅 使用 ldapsearch 确定搜索基础和模式

表 1:AD 服务器参数

参数 说明

主机名

指定 AD 服务器的主机名或 IP 地址

端口

指定 Active Directory 服务器侦听连接的端口。未加密的 LDAP 通常使用标准端口 389,而 LDAPS 使用端口 636。

TLS

选中此框以启用 SSL/TLS 上的 LDAP(通常称为 LDAPS)。

服务器连接超时

Rancher 等待的秒数,在此之后将认为 AD 服务器不可达。

服务账户用户名

输入具有只读访问您域分区的 AD 账户的用户名(请参见 先决条件)。用户名可以以 NetBIOS 格式输入(例如:"DOMAIN\serviceaccount")或 UPN 格式(例如:"serviceaccount@domain.com")。

服务账户密码

服务帐户的密码。

默认登录域

当您使用 AD 域的 NetBIOS 名称配置此字段时,未带域的用户名(例如:“jdoe”)将自动转换为带斜杠的 NetBIOS 登录名(例如:“LOGIN_DOMAIN\jdoe”),在绑定到 AD 服务器时.如果您的用户使用 UPN(例如:"jdoe@acme.com")作为用户名进行身份验证,则此字段 必须 保持为空。

用户搜索基础

您目录树中开始搜索用户对象的节点的区分名称。所有用户必须是此基础 DN 的后代。例如:"ou=people,dc=acme,dc=com"。

组搜索基础

如果您的组位于与 User Search Base 下配置的节点不同的节点下,您需要在此提供区分名称。否则请留空。例如:"ou=groups,dc=acme,dc=com"。


配置用户/组架构

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

Rancher 使用 LDAP 查询来搜索和检索有关 Active Directory 中用户和组的信息。在此部分配置的属性映射用于构建搜索过滤器并解析组成员资格。因此,提供的设置必须反映您 AD 域的实际情况。

如果您对 Active Directory 域中使用的架构不熟悉,请参考 使用 ldapsearch 确定搜索基础和架构 以确定正确的配置值。

用户架构

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

表 2:用户架构配置参数

参数 说明

对象类

用于您域中用户对象的对象类名称。如果已定义,仅需指定对象类的名称 - 不要 将其包含在如 &(objectClass=xxxx) 的 LDAP 封装程序中。

用户名属性

适合作为显示名称的用户属性值。

登录属性

与用户在登录 Rancher 时输入的凭据的用户名部分匹配的属性值。如果您的用户使用其 UPN(例如 "jdoe@acme.com")作为用户名进行身份验证,则此字段通常必须设置为 userPrincipalName。否则,对于旧的 NetBIOS 风格的登录名称(例如 "jdoe"),通常是 sAMAccountName

用户成员属性

包含用户所属于的组的属性。

搜索属性

当用户在 UI 中输入文本以添加用户或组时,Rancher 查询 AD 服务器并尝试根据此设置中提供的属性匹配用户。可以通过用管道("|")符号分隔来指定多个属性。要匹配 UPN 用户名(例如 jdoe@acme.com),通常应将此字段的值设置为 userPrincipalName

搜索过滤器

此过滤器应用于 Rancher 尝试将用户添加到站点访问列表或尝试将成员添加到集群或项目时搜索的用户列表。例如,用户搜索过滤器可以是 (|(memberOf=CN=group1,CN=Users,DC=testad,DC=rancher,DC=io)(memberOf=CN=group2,CN=Users,DC=testad,DC=rancher,DC=io))。注意:如果搜索过滤器不使用 有效的 AD 搜索语法,,则用户列表将为空。

用户启用属性

包含表示用户帐户标志的按位枚举的整数值的属性。Rancher 使用此信息来确定用户帐户是否被禁用。您通常应将其设置为 AD 标准 userAccountControl

禁用状态位掩码

这是 User Enabled Attribute 的值,表示一个被禁用的用户帐户。您通常应将其设置为 Microsoft Active Directory 架构中指定的默认值 "2"(请参见 这里)。


组架构

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

表 3:组架构配置参数

参数 说明

对象类

用于您域中组对象的对象类名称。如果已定义,仅需指定对象类的名称 - 不要 将其包含在如 &(objectClass=xxxx) 的 LDAP 封装程序中。

名称属性

适合作为显示名称的组属性。

组成员用户属性

用户属性 的名称,其格式与 Group Member Mapping Attribute 中的组成员匹配。

组成员映射属性

包含组成员的组属性名称。

搜索属性

用于在将组添加到集群或项目时构建搜索过滤器的属性。请参见用户架构 Search Attribute 的描述。

搜索过滤器

当 Rancher 尝试将组添加到站点访问列表或尝试将组添加到集群或项目时,此过滤器会应用于搜索的组列表。例如,组搜索过滤器可以是`(|(cn=group1)(cn=group2))`。注意:如果搜索过滤器不使用 有效的 AD 搜索语法,,则组列表将为空。

组DN属性

与描述用户成员资格的用户属性值格式匹配的组属性名称。请参见`User Member Attribute`。

嵌套组成员资格

此设置定义Rancher是否应解析嵌套组成员资格。仅在您的组织使用这些嵌套成员资格时使用(即,您有包含其他组作为成员的组)。我们建议在可能的情况下避免嵌套组,以避免在存在大量嵌套成员资格时可能出现的性能问题。


测试鉴定

完成配置后,请通过测试与AD服务器的连接*使用您的AD管理员帐户*。如果测试成功,使用您测试的帐户将隐式启用与配置的Active Directory的身份验证,并将其设置为管理员。

与此步骤中输入的凭据相关的AD用户将映射到本地主体帐户,并在Rancher中分配管理员权限。因此,您应当认真决定使用哪个AD帐户来执行此步骤。

  1. 输入应映射到本地主体帐户的AD帐户的*用户名*和*密码*。

  2. 点击*与Active Directory进行身份验证*以完成设置。

结果:

  • Active Directory身份验证已启用。

  • 您已使用提供的AD凭据以管理员身份登录Rancher。

在LDAP服务中断的情况下,您仍然可以使用本地配置的`admin`帐户和密码登录。

附录:使用ldapsearch识别搜索基础和架构

为了成功配置AD身份验证,提供与您的AD服务器的层次结构和架构相关的正确配置至关重要。

ldapsearch工具允许您查询您的AD服务器以了解用于用户和组对象的架构。

为了下面提供的示例命令,我们将假设:

  • Active Directory服务器的主机名为`ad.acme.com`

  • 服务器在端口 389 上监听未加密的连接

  • Active Directory域为`acme`

  • 您拥有有效的AD帐户,用户名为 jdoe,密码为 secret

识别搜索基础

首先,我们将使用 ldapsearch 来识别用户和组的父节点的可分辨名称 (DN):

$ ldapsearch -x -D "acme\jdoe" -w "secret" -p 389 \
-h ad.acme.com -b "dc=acme,dc=com" -s sub "sAMAccountName=jdoe"

此命令执行 LDAP 搜索,搜索基础设置为域根 (-b "dc=acme,dc=com"),过滤器针对用户账户 (sAMAccountNam=jdoe),返回该用户的属性:

ldapsearch user

由于在这种情况下,用户的 DN 为 CN=John Doe,CN=Users,DC=acme,DC=com [5],我们应该将 User Search Base 配置为父节点 DN CN=Users,DC=acme,DC=com

同样,根据 memberOf 属性 [4] 中引用的组的 DN,Group Search Base 的正确值将是该值的父节点,即 OU=Groups,DC=acme,DC=com

识别用户架构

上述 ldapsearch 查询的输出还允许确定在用户架构配置中使用的正确值:

  • Object Class: person [1]

  • Username Attributename [2]

  • Login Attribute: sAMAccountName [3]

  • User Member Attribute: memberOf [4]

如果我们组织中的 AD 用户使用其 UPN(例如 jdoe@acme.com)进行身份验证,而不是短登录名,那么我们必须将 Login Attribute 设置为 userPrincipalName

我们还将 Search Attribute 参数设置为 **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"

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

ldapsearch group

同样,这使我们能够确定在组架构配置中输入的正确值:

  • Object Class: group [1]

  • Name Attribute: name [2]

  • Group Member Mapping Attribute: member [3]

  • Search Attribute: sAMAccountName [4]

查看*member*属性的值,我们可以看到它包含了被引用用户的DN。这对应于我们用户对象中的*distinguishedName*属性。因此,必须将`Group Member User Attribute`参数的值设置为此属性。

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

附录:查错

如果在测试与Active Directory服务器的连接时遇到问题,请首先仔细检查输入的服务帐户凭据以及搜索基础配置。您还可以检查Rancher日志,以帮助确定问题的原因。调试日志可能包含有关错误的更详细信息。请参阅如何启用调试日志中的文档。