网站推他网站,百度经验官方网站登录入口,wordpress做公司网站,wordpress首页刷新k8s的安全机制#xff1a;
核心#xff1a;分布式集群管理工具#xff0c;就是容器编排#xff0c;安全机制的核心#xff1a;API server 作为整个集群内部通信的中介#xff0c;也是外控控制的入口。实验的安全机制都是围绕api server来进行设计#xff1a;
请求api资…k8s的安全机制
核心分布式集群管理工具就是容器编排安全机制的核心API server 作为整个集群内部通信的中介也是外控控制的入口。实验的安全机制都是围绕api server来进行设计
请求api资源
1认证
2鉴权
3准入机制
三个条件都通过才开源在k8s集群当中创建。 认证Anthentcation
HTTP TOKEN通过token失败合法用户。token是一个很差很复杂的一个字符串字符串是用来表达客户的一种方式。
每一个token对应一个用户名用户名存储在apiserver能够访问的文件中。
客户端发起请求时http headr包含token。
客户端发起请求----(请求包含)token----apiserver(用户名存储文件)-----解码------用户名-----访问集群。 http base用户密码的验证方式。用户名和密码都是通过base64进行加密加密完成的字符串http requset的haeder Atuthorization发送给服务端。服务端收到加密字符串节目获取用户名和密码验证通过登录成功。 https 证书最严格的方式也是最严谨的方式。基于CA根证书的客户端进行验证。 认证的访问类型
k8s组件对api server组件的访问 kubelet kube-proxy
pod对API server的访问。pod coredns dashborad都是pod。也需要访问api
客户端 kubectl kubelet kube-proxy
controller manager sheduler 与 api server在一台服务器可以直接使用api server的非安全端口访问。 8080端口
kubectl kubelet kube-proxy都是通过apiserver的https证书进行双向验证都是用6443端口进行验证 签发证书
1手动签发二进制部署就是手动签发证书ca签发---把证书匹配到每个对应组件。如何访问6443即可。
2自动签发 kubeadmkubelet第一次访问api server 使用token,token 通过之后controller manager 会为kubelet生成一个证书以后都是通过证书访问。kubeadm修改 了证书的有效期。默认1年。
3kubeconfig 文件包含了集群的参数CA证书API server地址客户端的参数客户端的证书和私钥集群的名称和用户名。
k8s中的组件通过启动时自动访问不同的kube config可以分为不同的集群-----api server----namespace-----资源对象----pod-----容器
kubeconfig即是集群的描述文件也是一个集群的保存文件包含了集群的分为方式和认证信息。
~/.kube/config 保存的是kubectl的访问认证信息。
4serviceAccount:
serviceAccount:就是为了方便pod中的容器访问API server。pod的动作增删改查动态的每个pod手动生成一个证书就不现实了于是k8s使用了service Account来进行循环认证serviceAccount包含了统一的认证信息直接进行api server访问。
5secret保存资源对象
serviceAccount内部保存的是 token service-account-token
secret保存的是自定义的报名信息。
6serviceAccount
1token
2ca.crt
3namespace 二鉴权
之前的认证过程只是确认了双方都是可信的可以相互通信鉴权是为了确定请求方的访问权限。
能做哪些指定的操作。
1AlwaysDeny拒绝所有一般是测试
2AlwaysAllow允许所有一般也是用于测试
3ABAC attribute-based access control 基于属性的访问控制
4webhook外部访问集群内部的鉴权方式
5RBAC role-base access control 基于角色的访问控制也是k8s默认的规则机制。 角色
role
绑定角色 rolebinding 将角色绑定到指定的命名空间
集群
clusterrole 可以授权所有密码空间的资源限制
绑定集群 clusterrolebinding将集群的角色绑定到命名空间。 准入控制
准入控制是API server的一个准入控制器的插入类别不同的插件可以实现不同的准入控制机制。
一般情况下建议使用官方默认的准入控制器
limitranger 命名空间的配额管理
serviceAccount
resourceQuota命名空间的配额限制。 3实验
------------------- 实践创建一个用户只能管理指定的命名空间 -------------------
//创建一个用户
useradd cheng
passwd cheng //使用这个用户进行资源操作会发现连接 API Server 时被拒绝访问请求
su - cheng
kubectl get pods
The connection to the server localhost:8080 was refused - did you specify the right host or port? //创建用于用户连接到 API Server 所需的证书和 kubeconfig 文件
//先上传证书生成工具 cfssl、cfssljson、cfssl-certinfo 到 /usr/local/bin 目录中 chmod x /usr/local/bin/cfssl* mkdir /opt/cheng
cd /opt/cheng vim user-cert.sh #API Server 会把客户端证书的 CN 字段作为 User把 names.O 字段作为 Group chmod x user-cert.sh
./user-cert.sh
#/etc/kubernetes/pki/ 目录中会生成 cheng-key.pem、cheng.pem、cheng.csr cd /etc/kubernetes/pki/
cfssl gencert -caca.crt -ca-keyca.key -profilekubernetes /opt/cheng/cheng-csr.json | cfssljson -bare cheng ############################### cd /opt/cheng
vim rbac-kubeconfig.sh kubectl create namespace cheng-cloud
chmod x rbac-kubeconfig.sh
./rbac-kubeconfig.sh 192.168.176.61 使用上下文参数生成 cheng.kubeconfig 文件
kubectl config use-context kubernetes --kubeconfigcheng.kubeconfig //查看证书
cat cheng.kubeconfig mkdir /home/cheng/.kube
cp cheng.kubeconfig /home/cheng/.kube/config
chown -R cheng:cheng /home/cheng/.kube/ //RBAC授权
vim rbac.yaml kubectl apply -f rbac.yaml
kubectl get role,rolebinding -n cheng-cloud //切换用户测试操作权限
su - cheng
vim pod-test.yaml cheng这个用户只有对pod 的get, watch, list, create 这些权限。