一.镜像来源
二.镜像bug更新
三.node禁止ssh登录,控制用kubectl exec
四.修改默认端口6443
五.api端口访问控制(通过防火墙限制对api的访问)
六.创建资源管理界限(限制用户可以操作的范围牵涉到用户的认证授权准备控制)
参考https://blog.51cto.com/luoguoling/3187063
七.定义资源限额,比如对命名空间得限额(防止ddos干扰)
apiVersion: v1
kind: ResourceQuota
metadata:
name: compute-resources
spec:
hard:
pods: "10"
requests.cpu: "1"
requests.memory: 1Gi
limits.cpu: "2"
limits.memory: 2Gi
#kubectl create -f compute-resources.yaml -n fronted
#注意如果命名空间达到限额了,pod将不会更新成功,需要先修改限额
八.划分网络安全区域(只允许前端pod访问后端pod的网络策略,通过matchlabels来限制对pod的访问)
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: access-nginx
spec:
podSelector:
matchLabels:
run: nginx
ingress:
- from:
- podSelector:
matchLabels:
access: "true"
#参考文档 https://www.cnblogs.com/tylerzhou/p/10995797.html
九.将安全环境应用到pods和容器中
当设计您的容器和pods时,确保为您的pods、容器和存储卷配置安全环境。安全环境是定义在yaml文件中的一项属性。它控制分配给pod/容器/存储卷的安全参数。一些重要的参数有: SecurityContext > runAsNonRoot 容器应该以非root用户运行 SecurityContext > Capabilities 控制分配给容器的Linux能力 SecurityContext > readOnlyRootFilesystem 控制容器对root文件系统是否只读 PodSecurityContext > runAsNonRoot 防止root用户作为pod的一部分运行容器 demo:
apiVersion: v1
kind: Pod
metadata:
name: hello-world
spec:
containers:
# specification of the pod’s containers
# ...
securityContext:
readOnlyRootFilesystem: true
runAsNonRoot: true
十.通过elk记录日志
参考文章:https://help.aliyun.com/knowledge_detail/60782.html