配置AD认证


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

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

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

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

    使用TLS?如果AD服务器使用的证书是自签名的,或者不是来自公认的证书颁发机构,请确保手头有PEM格式的CA证书(与所有中间证书连接)。您必须在配置期间设置此证书,以便Rancher能够验证证书。

    二、选择Active Directory

    • 使用本地admin帐户登录Rancher UI 。
    • 全局视图中,导航到安全>认证
    • 选择Active Directory,配置AD服务参数。

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

    表1:AD服务器参数

    四、配置用户/组架构(可选)

    注意 如果您的AD服务器为标准配置,那可以跳过此步骤

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

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

    表2:用户架构配置参数

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

    表3: 组架构配置参数

    完成配置后,继续测试与AD服务器的连接。如果测试成功,将隐式启用使用已配置的Active Directory进行身份验证。

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

    • 输入应映射到本地主帐户的AD帐户的用户名密码
    • 单击使用Active Directory进行身份验证以完成设置。

    六、附件一:使用ldapsearch识别Search Base和架构

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

    ldapsearch工具可以帮助您查询AD服务器用户和组对象的模式。

    处于演示的目的,我们假设:

    • Active Directory服务器的主机名为ad.acme.com
    • 服务器正在侦听端口上的未加密连接389
    • Active Directory域是acme
    • 拥有一个有效的AD帐户,其中包含用户名jdoe和密码secret

    此命令执行LDAP搜索,search base设置为根域(-b "dc=acme,dc=com"),过滤器以用户(sAMAccountNam=jdoe)为目标,返回所述用户的属性:

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

    类似地,基于memberOf属性[4]中引用的组的DN,组Search Base的正确值应该是该值的父节点,即:OU=Groups,DC=acme,DC=com

    上述ldapsearch查询的输出结果还可以确定用户架构的配置:

    • Username Attribute: name [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

    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

    • Object Class: group [1]
    • Name Attribute: name [2]
    • Group Member Mapping Attribute: member [3]
    • Search Attribute: sAMAccountName [4]查看成员属性值,我们可以看到它包含引用用户的DN。这对应用户对象中的distinguishedName属性。因此必须将Group Member User Attribute参数的值设置为此属性值。

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

    如果在测试与Active Directory服务器的连接时遇到问题,请检查为服务帐户输入的凭据以及Search Base配置。还可以检查Rancher日志以帮助查明问题原因。调试日志可能包含有关错误的更多详细信息,请参考。