【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
推荐阅读
- Spring Boot指标监控与健康检查
- [设计模式系列] 建造者
- 源码解读Dubbo分层设计思想
- 华为三面(说说ListMap和Set有什么区别())
- 你的域名是如何变成 IP 地址的()
- Java开发工程师进阶篇-深入浅出Redis
- 面试官(如何从10亿数据中快速判断是否存在某一个元素())
- Tensorflow保存神经网络参数有妙招(Saver和Restore)
- 双十一前的一把火 —— NutUI 大促组件火热发布