(1) WebHookToken认证
WebHook 认证就是一种回调机制,用来验证 BearerToken 的正确性,要使用这种认
证方式需要配置如下参数。
① --authentication-token-webhook-config-file:这是一个配置文件,用于描述如何访问远程的 WebHook服务。
② --authentication-token-webhook-cache-ttl:缓存认证时间,默认是 2分钟。
③ --authentication-token-webhook-version:使用哪个版本发送和接收 WebHook的消息,TokenReview可以使用 authentication.k8s.io/v1beta1或 authentication.k8s.io/v1,默认的是authentication.k8s.io/v1beta1。
当客户端使用一个 BearerToken去访问 APIServer时,WebHook认证模块会使用TokenReview对象的JSON格式向远端服务器发送请求,这个对象中包含了 Token。远端服务器为返回给 TokenReview对象的 Status 字段填充内容,内容包含此次请求认证是否通过。
(7)认证代理
可以为Kubernetes设置一个认证代理,这个认证代理将信息放在请求头中发送给APIServer,APIServer 从请求头中识别用户。启用认证代理需要设置以下几个参数。
① --requestheader-username-headers:用于指定用户名列表,不区分大小写,按照顺序检查用户身份。
② --requestheader-group-headers:用于指定组列表,不区分大小写,按照顺序检查用户组的名称。
③ --requestheader-extra-headers-prefix:指定额外的列表,不区分大小写。
④ --requestheader-client-ca-file:指定有效的客户端的证书,在检查请求头中的用户名之前,必须在指定的文件中提供有效的客户端证书并针对证书颁发机构进行验证。
为防止请求头攻击,在检查请求头之前,代理客户端要为APIServer 提供有效的客户端证书进行校验。
(8)匿名认证
启用后,未被其他配置身份验证方模块拒绝的请求将被视为匿名请求,并被赋予用户名 system:anonymous和组 system:unauthenticated。在配置了 Token身份验证且启用了匿名访问的服务器上,提供无效 BearerToken的请求将收到401 未经授权错误。而不提供 BearerToken的请求将被视为匿名请求。
在 Kubernetes1.6之后的版本,如果鉴权模式不是 AlwaysAllow,则匿名访问默认是启用的。