k8s安全

【k8s安全】出门莫恨无人随,书中车马多如簇。这篇文章主要讲述k8s安全相关的知识,希望能为你提供帮助。
一.镜像来源 二.镜像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

    推荐阅读