kube-apiserver组件是整个容器云集群的运转核心,是集群的入口,是跟各个功能组件交互通信的枢纽;k8s集群的安全机制也是围绕apiserver进行设计的,专家是否可以介绍一下保障APIServer安全的三大机制建设方案:认证(Authentication)、鉴权(Authorization)和准入控制(Admission Control)。
b站上有一些视频讲的比较清楚,之前看过一个k8s企业化容器云平台保姆级教程的视频,讲的很不错。简单来讲,就是访问的三个步骤。
API-server的作用
API-server提供的安全机制
认证方式之——TLS
授权方式之——node
授权方式之——RBAC
准入控制之——NodeRestriction
自定义准入插件
参考下这篇文章https://mp.weixin.qq.com/s/6HBrgMuN551VaKoKKMiHlg
收起--- Authentication认证支持客户端证书,密码、Plain Tokens、Bootstrap Tokens、JWT Tokens(used for service accounts)等几种方式,需要根据各个单位的安全能力现状进行认证技术的选型和对接,实施时认证系统需支持MFA多因子认证能力。
--- Authorization鉴权有下面的5种方式:
AlwaysDeny:标识拒绝所有的请求,一般用于测试
AlwaysAllow:允许接受所有请求,如果集群不需要授权流程,则可以采用该策略
ABAC:(Attribute-Base Access Control)基于属性的访问控制,表示使用用户配置的授权规则对用户请求进行匹配和控制,淘汰
Webhook:通过调用外部 REST 服务对用户进行授权
RBAC:基于角色的访问控制,现行默认规则,较常用。
这需要根据各个单位的云管平台或容器云管理平台的授权能力进行选型,通常选择RBAC、WebHook、ABAC之一进行对接。
--- Admission Controller 准入控制也支持多种插件,也要根据各个单位的安全需求和运维要求,定制出准入控制链和启用相关插件。譬如通常会启用 Service Account 、SecurityContextDeny、ResourceQuota 、 LimitRanger插件 。