k8s 安全原理
部署态的安全控制:
1.认证 authentication
x509 ,sa,username/password
x509 启动参数:--client-ca-file=ca.crt (指定根证书)
service account 启动参数:--service-account-key-file=key.pem (用以生成token),由controller创建,pod用sa中的token 访问api
认证方式有多种,一种通过即可,输出userinfo;然后基于userinfo 进行鉴权
2.鉴权 authorization
RBAC ,ABAC, Node
rbac: role,rolebinding (作用于namespace);clusterRole,clusterRoleBinding
3.Admission(PodSecurityPolicy)
admin 用户创建podsercurityPolicy,决定能创建什么样的pod;允许挂载什么volume
;允许使用什么网络(例如直接使用主机网络hostnetwork)
它是一个k8s对象;貌似类似于openshift中的SCC的对象,restricted,privileged
4.Pod SecurityContext
pod .yaml 文件中的对象
有容器级别 与pod 级别;在容器级别有系统调用权限设置例如时钟设置等
属性:privileged;runAsUser;fsGroup 等
运行态的安全控制
5.Network policy
k8s 的一种对象; 用于集群项目间的访问控制,ip 白名单什么的
Ingress :入口请求控制
Egress :出口请求控制
安全持久化保存键值etcd