原文:https://blog.csdn.net/bloodzero_new/article/details/110328113

一 容器本身安全

Docker Security Capability:
AppArmor: AppArmor(应用程序防护)是一种Linux安全模块,可保护操作系统及其应用程序免受安全威胁;
SELinux: SELinux是一个应用程序安全系统,它提供了一个访问控制系统,大大增强了自由访问控制模型;
Seccomp: Seccomp是一种Linux内核功能,可用于限制容器中可用的操作;
不使用–privileged参数启动容器;
端口开放必须遵循最小权限原则,不暴露未使用的端口;
不在容器中启用SSH服务;
不共享主机的网络命名空间(Namespace),也就是不要使用–net=host参数启动容器;
设置故障容器自动重启策略,也就是使用–restart参数;
容器根文件系统设置为只读;
对容器的出口流量进行安全分析,接入NIDS进行分析;
————————————————
版权声明:本文为CSDN博主「zer.zhang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/bloodzero_new/article/details/110328113

容器集群的安全性
对于容器集群Kubernete安全较重要的如下:

控制对Kubernetes API的访问:TLS APII、API认证与授权;
控制对Kubernetes Kubelet的访问;
在运行时控制工作负载或用户的功能:
限制集群中的资源使用;
控制容器的运行权限;
防止容器加载不必要的内核模块;
限制网络访问;
限制云元数据API访问;
控制Pod可以访问哪些节点。
保护集群组件:
限制访问etcd;
启用审计日志
限制访问alpha或beta功能;
定期轮换基础架构的凭据;
集成第三方组件之前必须执行审计;
加密静止的密钥;
接收安全更新警报并报告漏洞。
如同上面所说,集群安全已经算是容器安全的另一个主题,所以本文对集群的安全不过多描述(主要是我还没有吃透)。

容器的安全工具
容器在前几年发展迅速,安全问题也得到了相应的重视,业内出现了很多针对容器安全的工具。当然工具不是本篇文章的重点,后续我会更新关于容器安全工具的安装、使用与对比。这部分主要来源于:https://sysdig.com/blog/33-kubernetes-security-tools/

未完待更新。

Appendix
Docker容器最佳安全实践白皮书V1.0
https://share.weiyun.com/e01eklAr

Aliyun Docker and K8s ATT&CK Matrix

Azure K8s ATT&CK Matrix

其他文章阅读:
10个确保微服务与容器安全的最佳实践:http://dockone.io/article/8207
20种终极工具,为你的Docker搭建安全防火墙:https://mp.weixin.qq.com/s/3IFodzE6K7vr1mHEZdZskA
29 Docker security tools compared:https://sysdig.com/blog/20-docker-security-tools/
33个Kubernetes安全工具:https://blog.fleeto.us/post/33-kubernetes-security-tools/
76%都存在漏洞?!Docker镜像安全扫描应该这样做:https://dbaplus.cn/news-160-2275-1.html
2018 绿盟科技容器安全技术报告:http://www.nsfocus.com.cn/upload/contents/2018/11/20181109100414_79051.pdf
2019年度容器安全现状分析:https://mp.weixin.qq.com/s/jtDlMe5SprpZfIfXryAjzg
DOCKER SECURITY BEST PRACTICES PART 4 – RUNTIME SECURITY:https://anchore.com/blog/docker-security-best-practices-part-4-runtime-security/
Docker Security Guideline:https://docs.docker.com/engine/security/
Docker安全入门与实战(一):https://zhuanlan.zhihu.com/p/43586159
Docker安全入门与实战(二):https://zhuanlan.zhihu.com/p/43671129
Docker安全入门与实战(三):https://zhuanlan.zhihu.com/p/43671511
Docker安全入门与实战(四):https://zhuanlan.zhihu.com/p/43673419
Docker安全自动化扫描工具对比测试:https://blog.csdn.net/wutianxu123/article/details/83216219
Docker容器安全实践:https://www.secrss.com/articles/7016
Docker 容器逃逸案例汇集:https://www.cnblogs.com/xiaozi/p/13423853.html
Securing a Cluster:https://kubernetes.io/docs/tasks/administer-cluster/securing-a-cluster/
国内首个云上容器ATT&CK攻防矩阵发布,阿里云助力企业容器化安全落地:https://developer.aliyun.com/article/765449?spm=a2c6h.13148508.0.0.29cb4f0ejECYcC
全面易用的镜像漏洞检测工具Trivy:https://blog.fleeto.us/post/introducing-trivy/
容器安全风险解决方案(下篇):https://mp.weixin.qq.com/s/NgIT1tX2uTBt3xJ3Jq9ZdA
容器安全学习课程:https://www.katacoda.com/
容器安全在证券行业的最佳实践:https://mp.weixin.qq.com/s/TFlWF7WcC1lT1X244o4VBw
容器静态安全漏洞扫描工具Clair介绍:https://zhuanlan.zhihu.com/p/43547242
探索容器安全性(概述):http://dockone.io/article/5515
如何打造安全的容器云平台:https://blog.qiniu.com/archives/7743
五个Docker监控工具的对比:http://dockone.io/article/397
云原生之容器安全实践:https://tech.meituan.com/2020/03/12/cloud-native-security.html
针对容器的渗透测试方法:https://mp.weixin.qq.com/s/o5fGivwgBMR-w60SXQbSYA
————————————————
版权声明:本文为CSDN博主「zer.zhang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/bloodzero_new/article/details/110328113

二 k8s安全 pod安全

参考文章:保障集群内节点和网络安全(SecurityContext PodSecurityPolicy NetworkPolicy)
链接:https://blog.csdn.net/WuYuChen20/article/details/103683502

2.1 securityContext
阻止容器以root用户运行
如果攻击者获取了访问镜像仓库的权限,并上传一个标签一样的镜像,并以root用户运行。kubernetes的调度器运行该pod实例,kubelet会拉取攻击者的镜像,并运行该镜像中的任何代码。
虽然容器与宿主节点基本上是隔离的,使用root用户运行容器中的进程然然是不好的实践。例如,当宿主节点上的一个目录被挂载到容器中,如果该容器使用了root用户运行,那它就用于该目录的所有权限,如果是非root用户运行,它就只有部分权限。

apiVersion: v1
kind: Pod
metadata:name: xxx
spec:containers:- name: xxximage: alpinecommand: ["/bin/sleep", "9999"]securityContext:runAsNonRoot: true    

2.2 PodSecurityPolicy
在上面已经介绍了如何在部署一个pod时在一个宿主节点上做任何想做的事情,很明显要有一种机制来限制用户使用其中部分功能,集群管理员可以使用 PodSecurityPolicy资源来限制对以上安全相关的特性的使用。
如果pod spec中任何一个字段向设置该范围以外的值,那该pod将不会被API服务器接收。
注意:PodSecurityPolicy策略对已存在的pod无效,因为PodeSecurityPolicy资源只在创建和升级pod的时候生效

PodSecurityPolicy 资源介绍
PodSecurityPolicy是一种集群资源(无命名空间)的资源,它定义了用户能否在pod中使用各种安全相关的特性。维护PodSecurityPolicy资源中的配置策略的工作由集成在API服务器中的PodSecurityPolicy准入插件来完成。
注意:你的集群不一定开启了PodSecurityPoicy 准入控制插件,需要开启它才行

当向API服务器发送pod资源时,PodSecurityPolicy准入控制插件会将这个pod与已经配置的PodSecurityPolicy进行校验,如果这个pod符合集群中已有的安全策略,它会被存入etcd。如果不符合将会被直接拒绝。这个插件也会根据安全策略中配置的默认值对pod进行修改。

了解PodSecurityPolicy可以做的事情
一个PodSecurityPolicy资源可以定义以下事项:

是否允许pod使用宿主节点的PID、IPC和网络命名空间
pod允许绑定宿主节点端口
容器运行时允许使用用户的ID
是否允许拥有特权模式容器的pod
允许添加哪些内核功能、默认使用哪些内核功能,总是禁用哪些内核功能
允许使用哪些SELinux选项
容器是否允许使用可写入的根文件系统
允许容器在哪些文件系统组下运行
允许pod使用哪些类型的存储卷

查看一个PodSecurityPolicy样例

apiVersion: extensions/v1beta1
kind: PodSecurityPolicy
metadata:name: default
spec:hostPID: false      // 禁用宿主节点的PID命名空间hostIPC: false      // 禁用宿主节点的IPC命名空间hostNetwork: false  // 禁用宿主节点的网络命名空间hostPorts:   // 限制容器可以绑定宿主节点的哪些端口- min: 10000       // 10000-110000 可以绑定max: 11000- min: 13000       // 13000-14000 可以绑定max: 14000privileged: false  // 禁止使用特权模式的容器运行readOnlyRootFilesystem: true  // 容器强制使用只读的根文件系统runAsUser:        // 以supplemental、fsGroup rule: RunAsAny  // 一起允许用户使用任何的用户或用户组运行容器fsGroup:       rule: RunAsAnysupplementalGroups:rule: RunAsAnyseLinux:         // 可以使用SELinux的任何选项rule: RunAsAnyvolumes:         // 可以使用任何类型的存储卷- '*'

runasuser fsGroup 具体策略:

runAsUser:rule: MustRunAsrange:- min: 2   // min=max 可以指定一个特定的IDmax: 2
fsGroup:rule: MustRunAsrange:    // 指定了用户组ID在 2-10,20-30(包含临界值) 范围内用户组ID- min: 2max: 10- min: 20max: 30
supplementalGropus:rule: MustRunAsrange:- min: 2max: 10- min: 20max: 30   

2.3 NetworkPolicy
上面所讲的安全特性配置都是pod和pod中的容器上。现在来了解一下如何通过限制pod与pod之间通信,来确保pod之间的网络安全。
是否可以进行这些配置取决于集群中使用的网络插件,如果网络插件支持,可以通过NetworkPolicy资源配置网络隔离。
一个NetworkPolicy会应用在匹配它的标签选择器的pod上,指明这些允许访问这些pod的源地址,或这些pod可以访问的目标地址。这些分别由入向(ingress)和出向(egress)规则指定。这两者都可以匹配由标签选择器选出的pod,或者一个namespace中的所有pod,或者通过无类别域间路由CIDR指定的IP地址段。

在一个命名空间中启用网络隔离

apiVersion: network.k8s.io/v1
kind: NetworkPolicy
metadata: name: default-deny
spec:podSelector:// 空的标签选择器会匹配命名空间中所有的pod

pod安全三策略SecurityContext PodSecurityPolicy NetworkPolicy 参考文章:
https://blog.csdn.net/WuYuChen20/article/details/103683502
(本文章是学习《kubernetes in action》 一书时做的笔记,由于本人是刚学习k8s,且自学方式就是把它敲一遍,然后加一些自己的理解。所以会发现很多内容是跟书中内容一模一样,如果本文是对本书的侵权,敬请谅解,告知后会删除。如果引用或转载,请注明出处——谢谢)

k8s系列 之 容器安全pod安全 集群安全相关推荐

  1. 【K8S系列】快速初始化⼀个最⼩集群

    序言 走得最慢的人,只要不丧失目标,也比漫无目的地徘徊的人走得快. 文章标记颜色说明: 黄色:重要标题 红色:用来标记结论 绿色:用来标记一级重要 蓝色:用来标记二级重要 希望这篇文章能让你不仅有一定 ...

  2. 【博客628】k8s pod访问集群外域名原理以及主机开启了systemd-resolved的不同情况

    k8s pod访问集群外域名原理以及使用了systemd-resolved的不同情况 1.不同情况下的linux主机访问外部域名原理 没有使用systemd-resolved的linux主机上访问外部 ...

  3. k8s:概念以及搭建高可用集群

    一.k8s概念和架构 1.k8s概述 k8s是谷歌在2014年开源的容器化集群管理系统 使用k8s进行容器化应用部署 使用k8s利于应用扩展 k8s目标实施让容器化应用程序更加简洁高效 2.特性 (1 ...

  4. 大数据系列(一)之hadoop介绍及集群搭建

    大数据系列(一)之hadoop介绍及集群搭建 文章最早发布来源,来源本人原创初版,同一个作者: https://mp.weixin.qq.com/s/fKuKRrpmHrKtxlCPY9rEYg 系列 ...

  5. Kafka系列之:不重启kafka集群设置kafka topic数据保留时间

    Kafka系列之:不重启kafka集群设置kafka topic数据保留时间 一.kafka topic数据保留3天的bash命令 二.查看kafka删除数据日志 三.批量设置上千个topic保留3天 ...

  6. CDC系列(一)、Canal 集群部署及使用(带WebUI)

    目录 前言 准备工作 MySQL开启Binlog 安装Canal Admin WEB UI 安装Canal Server 监控MySQL并导入Kafka 尾巴 前言 CDC(Change Data C ...

  7. k8s容器化部署及集群搭建笔记

    kubeadm部署k8s 将此文章写给我最心爱的女孩 目录 kubeadm部署k8s 1.部署准备工作 小知识 2.安装具体步骤 1.安装docker 2.配置国内镜像加速器 3.添加k8s的阿里云y ...

  8. Kubernetes 中创建 Pod 时集群中到底发生了些什么?

    想象一下,如果我想将 nginx 部署到 Kubernetes 集群,我可能会在终端中输入类似这样的命令: $ kubectl run --image=nginx --replicas=3 然后回车. ...

  9. 入门K8s:一键脚本搭建Linux服务器集群

    前言 好久没有写系列博客了,本文主要是对网上文章的总结篇,主要是将安装和运行代码做了一次真机实验,亲测可用.文章内包含的脚本和代码,多来自于网络,也有我自己的调整和配置,文章末尾对参考的文献做了列举, ...

最新文章

  1. 三菱je-a系列伺服支持modbusrtu 协议吗_入门课程 | 三菱FX系列PLC的软元件介绍
  2. latex下IEEE模板中嵌套Python代码
  3. linux下wifi编程(基于netlink和nl80211.h)
  4. 怎么查看有关cas的报错_Linux LVM I/O报错,你也遇到这样的问题吗?
  5. 学习 jQuery下拉框,单选框,多选框整理
  6. 为什么WebUI里新建任务的状态字段下拉框里没有released选项
  7. 关于挽救爱情的一次求学尝试
  8. HDU-3401 Trade 单调队列优化DP
  9. SMARTS决策引擎技术白皮书
  10. u盘扩容盘用什么软件测试,扩容盘,小编教你如何检测U盘是否为扩容盘
  11. linux mint 下如何制作win7启动盘
  12. Vue H5微信分享功能实现
  13. vue slot具名插槽
  14. 项目设计-基于SpringBoot和Vue开发的宿舍管理系统
  15. 织梦微信小程序一键生成插件(资讯案例模板),整合织梦CMS一切数据信息
  16. gsoc 任务_我在GSoC'20中进行编码的第三周
  17. 开发微领地小蜜系统APP平台
  18. 关于小电脑研制与经营的研究报告
  19. GEE实战 | LULC获取与处理
  20. 基于信息增益的ID3决策树介绍。

热门文章

  1. Gemfire命令集
  2. qdatetime.h C2589 C2059
  3. 2023 EMOJI表情包合成微信小程序源码
  4. Shell sed命令
  5. 戴尔服务器电池位置,DELL 戴尔Latitude 5480拆机换电池
  6. JAVA开发环境配置
  7. 手机音频口反向列表 类Square手机刷卡器注意事项
  8. 图片压缩大小电脑怎么操作?3秒教你图片怎么压缩大小
  9. 一行能装逼的 JavaScript 代码
  10. 爸爸喜欢做的事有钓鱼、看书 。 妈妈喜欢做的事有画画、烹饪 。 儿子继承了父母双方的爱好,输出儿子喜欢做的事。