安全机制

k8s的安全机制,分布式集群管理工具,就是容器编排,安全机制的核心就是围绕API SERVER ,作为整个集群内部通信的中介,也是外部控制的入口,所有的安全机制都是围绕api server来进行设计

请求api资源需要过三关

1.认证

2.鉴权

3.准入机制

三个条件都通过,才可以在k8s集群当中创建

认证

Anthentcation

HTTP 通过token识别合法用户,token是一个很长,很复杂的一个字符串,字符串是用来表达客户的一种方式,而每一个token都对应一个用户名,用户名存储在apiserver能够访问的文件中,当客户端发起请求时,http headr包含token。

流程:客户端发起请求到-token-apiserver(用户存储文件)-解码-用户名-访问集群

http base

用户+密码的验证方式,用户名和密码都是通过base64进行加密,加密完成的字符串,http requset的header Atuthorization发送给服务端,服务端会收到加密的字符串,解码,之后获取用户名和密码

https证书

最严格的方式,也是最严谨的方式,基于CA根证书签名的客户端身份进行验证

认证的访问类型

k8s的组件对api server的访问  如kubelet,kube-proxy

pod对apiserver的访问 如pod coredns,dashborad都是pod,也需要访问api

客户端和kubectl

Kubelet kube-proxy:

Controller manager sheduler 与api server在一台服务器,可以直接使用api server的非安全端口访问有可能是(8080)

Kubectl和kubelet和kube-proxy都是通过api server的https证书进行双向验证,都是用6443端口进行验证

签发证书

手动签发

二进制部署就是手动签发,CA签发就是把证书匹配到每个对应组件,然后访问6443即可

自动签发

kubeadm,kubelet第一次要访问api server使用的是token,token通过之后,comtroller manager 会为kubelet生成一个证书,以后都是通过证书访问,kubeadm修改了证书的有效期,默认是1年

Kubeconfig

文件包含了集群的参数,CA证书,API server地址,客户端的参数(客户端的整数和私钥),以及集群的名称和用户名,k8s组件都是通过启动时制定访问不同的kubeconfig文件切换到不同的集群,再到api server--namespace再到资源对象,pod,容器,kubeconfig既是集群的描述文件,也是一个集群信息的保存文件,包含了集群的访问方式和他的认证信息,一般都在家目录下(隐藏文件).kube/config保存的是kubectl的访问认证信息

ServiceAccount

就是为了方便pod中的容器来访问API server,pod的动作(增删改查),动态的,每个pod手动生成一个证书就不现实了,于是k8s使用了service Account来循环认证,包含了统一的认证信息,直接进行api server访问

Secret

保存资源对象,aserviceAccount内部,保存的token service-account-token,secret保存的是自定义的保密信息

ServiceAccount

1.Token

2.Ca.crt

3.Namespace

都会被自动挂载到pod当中

鉴权

鉴权

之前的认证过程,只是确认了双方都是可信的,可以互相通信的,鉴权是为了确定请求方的访问权限,能做哪些指定的操作

AlwaysDeny

拒绝所有,一般是测试

AlwaysAllow

允许所有,一般也是测试

ABAC

attribute-based access control 基于属性的访问控制

Webhook

集群外部访问集群内部的鉴权方式

RBAC

role-base access control 基于角色的访问控制,也是k8s现在默认的规则机制

角色

                    角色

role

指定命名空间的资源控制权限

rolebinding

将角色绑定到指定的命名空间

                      集群

Clusterrole

可以授权所有命名空间的资源控制权限

clusterrolebinding

将集群的角色绑定到命名空间

准入控制

准入控制是API server的一个准入控制器的插件列表,不同的插件可以实现不同的准入控制机制,一般情况下建议使用官方默认的准入控制器

Limitranger:配置命名空间的配额管理

ServiceACCount:

ResourceQuota:命名空间的配置限制

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐