返回介绍

kubelet的认证授权

发布于 2019-09-08 09:20:22 字数 3245 浏览 1207 评论 0 收藏 0

概览

Kubelet 的 HTTPS 端点对外暴露了用于访问不同敏感程度数据的 API,并允许您在节点或者容器内执行不同权限级别的操作。

本文档向您描述如何通过认证授权来访问 kubelet 的 HTTPS 端点。

Kubelet 认证

默认情况下,所有未被配置的其他身份验证方法拒绝的,对 kubelet 的 HTTPS 端点的请求将被视为匿名请求,并被授予 system:anonymous 用户名和 system:unauthenticated 组。

如果要禁用匿名访问并发送 401 Unauthorized 的未经身份验证的请求的响应:

  • 启动 kubelet 时指定 --anonymous-auth=false 标志

如果要对 kubelet 的 HTTPS 端点启用 X509 客户端证书身份验证:

  • 启动 kubelet 时指定 --client-ca-file 标志,提供 CA bundle 以验证客户端证书
  • 启动 apiserver 时指定 --kubelet-client-certificate--kubelet-client-key 标志
  • 参阅 apiserver 认证文档 获取更多详细信息。

启用 API bearer token(包括 service account token)用于向 kubelet 的 HTTPS 端点进行身份验证:

  • 确保在 API server 中开启了 authentication.k8s.io/v1beta1 API 组。
  • 启动 kubelet 时指定 --authentication-token-webhook--kubeconfig--require-kubeconfig 标志
  • Kubelet 在配置的 API server 上调用 TokenReview API 以确定来自 bearer token 的用户信息

Kubelet 授权

接着对任何成功验证的请求(包括匿名请求)授权。默认授权模式为 AlwaysAllow,允许所有请求。

细分访问 kubelet API 有很多原因:

  • 启用匿名认证,但匿名用户调用 kubelet API 的能力应受到限制
  • 启动 bearer token 认证,但是 API 用户(如 service account)调用 kubelet API 的能力应受到限制
  • 客户端证书身份验证已启用,但只有那些配置了 CA 签名的客户端证书的用户才可以使用 kubelet API

如果要细分访问 kubelet API,将授权委托给 API server:

  • 确保 API server 中启用了 authorization.k8s.io/v1beta1 API 组
  • 启动 kubelet 时指定 --authorization-mode=Webhook--kubeconfig--require-kubeconfig 标志
  • kubelet 在配置的 API server 上调用 SubjectAccessReview API,以确定每个请求是否被授权

kubelet 使用与 apiserver 相同的 请求属性 方法来授权 API 请求。

Verb(动词)是根据传入的请求的 HTTP 动词确定的:

HTTP 动词request 动词
POSTcreate
GET, HEADget
PUTupdate
PATCHpatch
DELETEdelete

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

Kubelet API资源子资源
/stats/*nodesstats
/metrics/*nodesmetrics
/logs/*nodeslog
/spec/*nodesspec
all othersnodesproxy

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文