This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.7.3. 配置 LDAP 身份提供程序
				配置 ldap 身份提供程序,使用简单绑定身份验证来针对 LDAPv3 服务器验证用户名和密码。
			
7.3.1. 关于 OpenShift Container Platform 中的身份提供程序 复制链接链接已复制到粘贴板!
					默认情况下,集群中只有 kubeadmin 用户。要指定身份提供程序,您必须创建一个自定义资源 (CR) 来描述该身份提供程序并把它添加到集群中。
				
						OpenShift Container Platform 用户名不能包括 /、: 和 %。
					
7.3.2. 关于 LDAP 身份验证 复制链接链接已复制到粘贴板!
在身份验证过程中,搜索 LDAP 目录中与提供的用户名匹配的条目。如果找到一个唯一匹配项,则尝试使用该条目的可分辨名称 (DN) 以及提供的密码进行简单绑定。
执行下面这些步骤:
- 
							通过将配置的 
url中的属性和过滤器与用户提供的用户名组合来生成搜索过滤器。 - 使用生成的过滤器搜索目录。如果搜索返回的不是一个条目,则拒绝访问。
 - 尝试使用搜索所获条目的 DN 和用户提供的密码绑定到 LDAP 服务器。
 - 如果绑定失败,则拒绝访问。
 - 如果绑定成功,则将配置的属性用作身份、电子邮件地址、显示名称和首选用户名来构建一个身份。
 
					配置的 url 是 RFC 2255 URL,指定要使用的 LDAP 主机和搜索参数。URL 的语法是:
				
ldap://host:port/basedn?attribute?scope?filter
ldap://host:port/basedn?attribute?scope?filter
在这个 URL 中:
| URL 组件 | 描述 | 
|---|---|
|   
									  |   
									对于常规 LDAP,使用   | 
|   
									  |   
									LDAP 服务器的名称和端口。LDAP 默认为   | 
|   
									  |   所有搜索都应从中开始的目录分支的 DN。至少,这必须是目录树的顶端,但也可指定目录中的子树。  | 
|   
									  |   
									要搜索的属性。虽然 RFC 2255 允许使用逗号分隔属性列表,但无论提供多少个属性,都仅使用第一个属性。如果没有提供任何属性,则默认使用   | 
|   
									  |   
									搜索的范围。可以是   | 
|   
									  |   
									有效的 LDAP 搜索过滤器。如果未提供,则默认为   | 
如果您使用不安全的 LDAP 连接(ldap:// 或端口 389),则必须在配置向导中检查 Insecure 选项。
在进行搜索时,属性、过滤器和提供的用户名会组合在一起,创建类似如下的搜索过滤器:
(&(<filter>)(<attribute>=<username>))
(&(<filter>)(<attribute>=<username>))
例如,可考虑如下 URL:
ldap://ldap.example.com/o=Acme?cn?sub?(enabled=true)
ldap://ldap.example.com/o=Acme?cn?sub?(enabled=true)
					当客户端尝试使用用户名 bob 连接时,生成的搜索过滤器将为 (&(enabled=true)(cn=bob))。
				
					如果 LDAP 目录需要身份验证才能搜索,请指定用于执行条目搜索的 bindDN 和 bindPassword。
				
7.3.3. 创建 LDAP Secret 复制链接链接已复制到粘贴板!
要使用身份提供程序,您必须定义一个包含 bindPassword 的 OpenShift Container Platform Secret。
定义包含 bindPassword 的 OpenShift Container Platform Secret。
oc create secret generic ldap-secret --from-literal=bindPassword=<secret> -n openshift-config
$ oc create secret generic ldap-secret --from-literal=bindPassword=<secret> -n openshift-configCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意包含
--from-literal参数的 bindPassword 的 secret 键必须名为bindPassword,如上述命令所示。
7.3.4. 创建 ConfigMap 复制链接链接已复制到粘贴板!
					身份提供程序使用 openshift-config 命名空间中的 OpenShift Container Platform ConfigMap 来包含证书颁发机构捆绑包。主要用于包含身份提供程序所需的证书捆绑包。
				
使用以下命令,定义包含证书颁发机构的 OpenShift Container Platform ConfigMap。证书颁发机构必须存储在 ConfigMap 的
ca.crt键中。oc create configmap ca-config-map --from-file=ca.crt=/path/to/ca -n openshift-config
$ oc create configmap ca-config-map --from-file=ca.crt=/path/to/ca -n openshift-configCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
7.3.5. LDAP CR 示例 复制链接链接已复制到粘贴板!
以下自定义资源 (CR) 显示 LDAP 身份提供程序的参数和可接受值。
LDAP CR
- 1
 - 此提供程序名称作为前缀放在返回的用户 ID 前,以此组成身份名称。
 - 2
 - 控制如何在此提供程序的身份和用户对象之间建立映射。
 - 3
 - 用作身份的属性列表。使用第一个非空属性。至少需要一个属性。如果列出的属性都没有值,身份验证会失败。定义属性按原样检索,允许使用二进制值。
 - 4
 - 用作电子邮件地址的属的列表。使用第一个非空属性。
 - 5
 - 用作显示名称的属性列表。使用第一个非空属性。
 - 6
 - 为此身份置备用户时用作首选用户名的属性列表。使用第一个非空属性。
 - 7
 - 在搜索阶段用来绑定的可选 DN。如果定义了
bindPassword,则必须设置此项。 - 8
 - 对包含绑定密码的 OpenShift Container Platform Secret 的可选引用。如果定义了
bindDN,则必须设置此项。 - 9
 - 可选:对包含 PEM 编码证书颁发机构捆绑包的 OpenShift Container Platform ConfigMap 的引用,以用于验证所配置 URL 的服务器证书。仅在
insecure为false时使用。 - 10
 - 为
true时,不会对服务器进行 TLS 连接。为false时,ldaps://URL 使用 TLS 进行连接,并且ldap://URL 升级到 TLS。使用ldaps://URL 时,此项应该设为false,因为这些 URL 始终会尝试使用 TLS 进行连接。 - 11
 - RFC 2255 URL,指定要使用的 LDAP 主机和搜索参数。
 
						要将用户列在 LDAP 集成的白名单中,请使用 lookup 映射方法。在允许从 LDAP 登录前,集群管理员必须为每个 LDAP 用户创建身份和用户对象。
					
7.3.6. 将身份提供程序添加到集群中 复制链接链接已复制到粘贴板!
安装集群之后,请在其中添加一个身份提供程序,以便您的用户可以进行身份验证。
先决条件
- 创建 OpenShift Container Platform 集群。
 - 为身份提供程序创建自定义资源 (CR)。
 - 必须已经以管理员身份登录。
 
流程
应用定义的 CR:
oc apply -f </path/to/CR>
$ oc apply -f </path/to/CR>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果一个 CR 不存在,
oc apply会创建一个新的 CR,并可能会触发以下警告Warning: oc apply should be used on resources created by either oc create --save-config or oc apply。在这种情况下,您可以忽略这个警告。以来自身份提供程序的用户身份登录集群,并在提示时输入密码。
oc login -u <username>
$ oc login -u <username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确认用户登录成功,并显示用户名。
oc whoami
$ oc whoamiCopy to Clipboard Copied! Toggle word wrap Toggle overflow