12、k8s安全机制

k8s作为一个分布式的微服务管理系统,保证集群安全是一个非常重要的任务。

核心:api-server

我们围绕集群权限的设置,其实就是设置api-server的权限。

创建权限步骤

围绕api-server的权限,分为三个步骤:

1、认证------创建server-account账号

  1. token:api-server私钥签名的字符串序列号,用于访问api-server,server端的认证。
  2. ca.crt:ca根证书,用于客户端验证api-server发送的证书。
  3. namespace:api-server办法的token来使用指定的命名空间。

认证只是确认双方的通信是可信的,在此基础上建立通信连接。

2、鉴权

确定请求对方集群的资源的权限。

RBAC:基于角色的访问控制。

k8s1.6之后,默认的鉴权方式:

  • 对集群中的资源(pod,deployment,service)和非资源(元信息和资源状态)都可以进行完整的覆盖,无需重启api-server。

鉴权的主体

(1)角色:

  • role:授权指定命名空间的资源控制的权限
  • ClusterRole:可以对所有命名空间的资源的控制权

(2)角色绑定:

  • RoleBinding:把角色绑定到主体(命名空间)
  • ClusterRoleBinding:将集群角色绑定到主体(所有命名空间)

(3)主体的对象:

  • uer:用户
  • namespace:命名空间
  • group:用户组
  • serviceAccount:服务账号

3、准入控制

每一个对于api-server的请求都会有一个准入控制器插件的列表,发送到api-server的请求都会进过准入控制器插件的检查,检查不通过,请求会被拒绝。

官方自带请求控制器:

LimitRaner:

resourcequota:

namespacelifecycle:命名空间的回收机制

实操

创建一个用户,访问指定的命名空间,权限的设置和修改

1、准备一个账号和三个密钥文件

2、生成证书

签发证书

cfssl gencert -ca=ca.crt -ca-key=ca.key -profile=kubernetes /opt/yaml/anquan/lucky-csr.json | cfssljson -bare lucky

3、设置认证配置文件

4、设置鉴权配置文件

如果想要给用户添加使用namespace的权限,需要额外添加。

5、传参运行认证配置文件

使用上下文文件

  • 注意:上面的cp是错误的,正确的是cp lucky.kubeconfig /home/lucky/.kube/config

最后运行鉴权yaml文件即可实现lucky用户的k8s权限

相关推荐
oMcLin27 分钟前
如何在Ubuntu 20.04上配置并调优Kubernetes集群,确保在多租户环境下的高可用性与资源分配?
linux·ubuntu·kubernetes
小李独爱秋1 小时前
计算机网络经典问题透视:电子邮件的安全协议PGP主要都包含哪些措施?
运维·服务器·网络·网络协议·计算机网络·安全
上海云盾安全满满1 小时前
棋牌APP被攻击了要怎么办
网络·安全·游戏
小李独爱秋1 小时前
计算机网络经典问题透视:互联网的网络层安全协议族IPsec都包含哪些主要协议?
运维·服务器·开发语言·网络协议·计算机网络·安全
星幻元宇VR2 小时前
地震起因及先兆学习系统,提升地震安全教育的新方式
安全·虚拟现实
星幻元宇VR2 小时前
VR消防行走平台|沉浸+互动双重提升应急教育
安全·vr·虚拟现实
星幻元宇VR2 小时前
突破传统消防训练,VR消防体验屋让培训更高效
安全·vr·虚拟现实
一路向北⁢2 小时前
短信登录安全防护方案(Spring Boot)
spring boot·redis·后端·安全·sms·短信登录
_OP_CHEN2 小时前
【从零开始的Qt开发指南】(二十)Qt 多线程深度实战指南:从基础 API 到线程安全,带你实现高效并发应用
开发语言·c++·qt·安全·线程·前端开发·线程安全