一、背景介绍
在Kubernetes1.5中,对于kubelet新增加了几个同认证/授权相关的几个启动参数,分别是:
认证相关参数:
• anonymous-auth参数:是否启用匿名访问,可以选择true或者false,默认是true,表示启用匿名访问。
• authentication-token-webhook参数:使用tokenreviewAPI来进行令牌认证。
• authentication-token-webhook-cache-ttl参数:webhook令牌认证缓存响应时长。
• client-ca-file参数:表示使用x509证书认证,如果设置此参数,那么就查找client-ca-file参数设置的认证文件,任何请求只有在认证文件中存在的对应的认证,那么才可以正常访问。
授权相关参数:
• authorization-mode参数:kubelet的授权模式,可以选择AlwaysAllow或者Webhook,如果设置成Webhook,那么使用SubjectAccessReviewAPI进行授权。
• authorization-webhook-cache-authorized-ttl参数:webhook授权时,已经被授权内容的缓存时长。
• authorization-webhook-cache-unauthorized-ttl参数:webhook授权时,没有被授权内容的缓存时长。
二、认证
默认anonymous-auth参数设置成true,也就是可以进行匿名认证,这时对kubelet API的请求都以匿名方式进行,系统会使用默认匿名用户和默认用户组来进行访问,默认用户名“system:anonymous”,默认用户组名“system:unauthenticated”。
可以禁止匿名请求,这时就需要设置kubelet启动参数:“--anonymous-auth=false”,这时如果请求时未经过认证的,那么会返回“401 Unauthorized”。
可以使用x509证书认证(X.509格式的证书是最通用的一种签名证书格式)。这时就需要设置kubelet启动参数:“--client-ca-file”,提供认证文件,通过认证文件来进行认证。同时还需要设置api server组件启动参数:“--kubelet-client-certificate”和“--kubelet-client-key”。在认证文件中一个用户可以属于多个用户组,比如下面例子产生的认证:
op