一.镜像来源

二.镜像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