kubelet 认证

译自 https://kubernetes.io/docs/admin/kubelet-authentication-authorization/

Overview

通过kubelet暴露的https api接口,可以访问到不同的“敏感”数据,并且允许你在节点和容器内执行不同级别的操作。

本篇文档描述了kublet https 断点如何鉴权。

Kubelet 认证

默认情况下,到kubelet HTTPS endpoints且没有被其他配置的认证方法拒绝的请求被视为匿名请求。对于匿名请求会给定system:anonymous的用户名和system:unauthenticated用户组。

禁止匿名用户访问,对不可靠的请求返回401 Unauthorized:
- 启动kublet的时候添加--anonymous-auth=false参数

开启X509客户端证书认证:
- 添加启动参数--client-ca-file, 并提供一个验证客户端证书的CA。
- 启动apiserver时需添加--kubelet-client-certificate--kube-client-key 参数
- 详情参考 apiserver authentication documentation

要启动API承载令牌(包括serviceaccount账户令牌)以用于对kublet的HTTPS 端点进行身份验证:
- 确保authentication.k8s.io/v1beta1 API组在apiserver中被启用
- 以--authenticatioin-token-webhook, --kubeconfig以及--require-kubeconfig参数启动kubelet
- kubelet调用事先在apiserver中定义好的TokenReview API以确定来自承载令牌的用户信息

Note: --require-kubeconfig 在1.8中已经过时,未来的版本会移除该参数

Kubelet 授权

每个通过身份认证的请求(包括匿名请求)都会被授权。默认的授权模式是AlwaysAllow, 这会放行所有的请求。

出于某些原因,可以将对kubelet api的访问进行细分:
- 开启anonymous 授权, 但是匿名用户能够访问的kubelet API应该做限制
- 开启承载令牌认证,但任意API用户(如服务帐户)调用kubelet API的能力应该是有限的。
- 客户端证书身份验证已启用,但只有部分由已配置CA签名的客户端证书应被允许使用kubelet API

要细分对kubelet API的访问,请将授权委托给apiserver:
- 确保authentication.k8s.io/v1beta1 API组在apiserver中被启用
- 以--authenticatioin-token-webhook, --kubeconfig以及--require-kubeconfig参数启动kubelet
- Kubelet在配置的APIserver上调用SubjectAccessReview API来确定每个请求是否被授权

kubelet使用与apiserver相同的请求属性方法来授权API请求。
请求动作由http的请求方法确定:

HTTP verb request verb
POST create
GET,HEAD get
PUT update
PATCH patch
DELETE delete

资源和子资源是根据传入请求的路径确定的:

Kubelet API resource subresource
/stats/* nodes stats
/metrics/* nodes metrics
/logs/* nodes log
/spec/* nodes spec
all others nodes proxy

namespace和API组属性始终是一个空字符串,资源名称始终是kubelet的Node API对象的名称。

在此模式下运行时,请确保传递给apiserver的--kubelet-client-certificate--kubelet-client-key标志所标识的用户具有以下属性的权限:

  • verb=*, resource=nodes, subresource=proxy
  • verb=*, resource=nodes, subresource=stats
  • verb=*, resource=nodes, subresource=log
  • verb=*, resource=nodes, subresource=spec
  • verb=*, resource=nodes, subresource=metrics
发布了31 篇原创文章 · 获赞 6 · 访问量 7万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章