配置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
:
ldapsearch -x -D "acme\jdoe" -w "secret" -p 389 \
-h ad.acme.com -b "ou=groups,dc=acme,dc=com" \
-s sub "CN=examplegroup"
以上命令将显示组对象的属性:
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日志以帮助查明问题原因。调试日志可能包含有关错误的更多详细信息,请参考。