前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >k8s之API Server认证

k8s之API Server认证

作者头像
Liusy
发布2020-11-19 15:09:23
1.3K0
发布2020-11-19 15:09:23
举报
文章被收录于专栏:Liusy01Liusy01

集群安全性

在生产环境中,必须保障集群用户的角色以及权限问题,不能给所有用户都赋予管理员权限。

(1)集群的安全性必须考虑如下几个目标

(1)保证容器与其所在宿主机的隔离

(2)限制容器给基础设置或其他容器带来的干扰

(3)最小权限原则:合理限制所有组件的权限,确保组件只执行它被授权的行为,通过限制单个组件的能力来限制它的权限范围

(4)明确组件间边界的划分

(5)划分普通用户和管理员的角色

(6)在必要时允许将管理员权限赋给普通用户

(7)允许拥有Secret(Keys、Certs、Passwords)数据的应用在集群中运行

API Server认证管理

k8s集群提供了三种级别的客户端身份认证方式:

(1)HTTPS证书认证

基于CA根证书签名的的双向数字认证方式,CA机构是第三方证书权威机构,认证步骤如下图:

1、服务器端向CA机构申请证书,CA机构下发根证书、服务端证书、私钥给申请者

2、客户端向CA机构申请证书,CA机构下发根证书、客户端证书、私钥给申请者

3、客户端向服务端发起请求,服务端下发服务端证书给客户端,客户端通过私钥进行解密,并利用服务端证书中的公钥认证证书信息比较证书中的信息,如果一致,则客户端认可服务端身份

4、客户端向服务端发送证书,服务端使用私钥进行解密,获得客户端证书公钥,并用公钥认证证书信息,确认客户端是否合法

5、两端协商好加密方案后,客户端产生一个随机密钥,通过协商好的方案加密该密钥,并发送该密钥给服务端,服务端收到密钥后,双方使用这个随机密钥进行信息传输。

(2)HTTP Token认证

通过一个Token来识别合法用户,就像HTTP请求的Cookie一样,只不过Cookie是浏览器端,Token是服务端。

用一个很长的特殊编码方式并且难以被模仿的字符串--Token,Token对应用户信息,存储在API Server中能访问的一个文件夹中,客户端只需在请求时的HTTP Header中放入Token,API Server就可以识别用户信息。

(3)HTTP Base认证

通过用户名加密码的方式认证,把(用户名+冒号+密码)用Base64编码后放到HTTP Request中的Header Authorization域中发给服务端,服务端收到后进行解密,获取用户名和密码,然后进行用户授权验证

API Server授权管理

当API Server被调用时,需要先进行用户认证,然后通过授权策略执行用户授权。

API Server支持以下几种授权策略(通过API Server启动参数--authorization-mode设置)

(1)AlwaysDeny:拒绝所有请求

(2)AlwaysAllow:允许接收所有请求

(3)ABAC(Attributed-Based Access Control):基于属性的访问控制,表示使用用户配置的授权规则对用户请求进行匹配和控制

(4)Webhook:通过调用外部REST服务对用户进行授权

(5)RBAC:Role-Based Access Control,基于角色的访问控制

(6)Node:一种专用模式,用于对kubelet发起的请求进行访问控制

API Server在接收到请求后,会根据请求中的数据生成一个访问策略对象,如果请求中不带某些属性,则会为这些属性根据类型设置默认值,然后将这个访问策略对象和授权策略文件中的所有访问策略对象逐条匹配,如果至少一个匹配上,则请求被鉴权通过,否则终止调用流程。

end

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-11-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Liusy01 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 集群安全性
    • (1)集群的安全性必须考虑如下几个目标
    • API Server认证管理
      • (1)HTTPS证书认证
        • (2)HTTP Token认证
          • (3)HTTP Base认证
          • API Server授权管理
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档