一    官网文档

Pod 安全性标准

为 Pod 或容器配置安全性上下文

Pod的安全策略

二    Security Context

(1)背景引入

说明:'privileged'(特权模式) '不等于' root-->比如:root用户无法'关闭容器网卡'思考:哪些容器需要'修改内核参数'?

(2)安全上下文的配置级别

(3)安全上下文的设置方式

三    Pod 设置 Security Context

用法: 在 Pod 定义的'资源清单文件中'添加 'securityContext' 字段,就可以为 Pod 指定安全上下文相关的设定特点: 通过'该字段'指定的内容将会对'当前 Pod 中的所有容器'生效

(2)常用字段的介绍

kubectl explain 'pods.spec.securityContext'

apiVersion: v1
kind: Pod
metadata:name: security-context
spec:volumes:- name: sec-volemptyDir: {}securityContext:          '三个常用参数'runAsUser: 1000runAsGroup: 3000fsGroup: 2000containers:- name: sec-demoimage: busyboxcommand: ["sh", "-c", "sleep 3600"]volumeMounts:- name: sec-volmountPath: /pod/secsecurityContext:allowPrivilegeEscalation: false

一个思考

制作镜像'USER'是root,但是进程运行的是1000,不能往'数据卷'里面写文件-->'怎么办?'(1)进程指定成root -->'根本上'(2)initContaner  --> chmod 改变权限

(3)查看和验证

说明的是runAsUser指的是'常驻进程-->也就是entrypoint或者cmd'的'用户身份'-->'也是进入容器后相应bash的用户身份'

①  进入容器,top命令查看

kubectl exec -it security-context -- top

对比

②   查看数据卷


③   综合查看

④  尝试删除

四    容器设置 Security Context

kubectl explain pods.spec.'containers.securityContext'说明: 参数和Pod级别差不多,这里'不再细讲'

apiVersion: v1
kind: Pod
metadata:name: security-context-container
spec:securityContext:runAsUser: 1000                              '对比'containers:- name: sec-ctx-demoimage: busyboxcommand: [ "sh", "-c", "sleep 60m" ]securityContext:runAsUser: 2000                            '对比'allowPrivilegeEscalation: false          

kubectl exec -it security-context-container -- top

五   设置 Linux Capabilities

(1)背景

(2)什么是 Capabilities

capabilities man page

(3) docker中设置

场景引入

Docker 容器本质上就是一个进程,所以理论上容器就会和进程一样会有一些默认的开放权限,默认情况下 Docker 会删除必须的 capabilities 之外的所有 capabilities,因为在容器中我们经常会以 root 用户来运行,使用 capabilities 限制后,容器中的使用的 root 用户权限就比我们平时在宿主机上使用的 root 用户权限要少很多了,这样即使出现了安全漏洞,也很难破坏或者获取宿主机的 root 权限,所以 Docker 支持 Capabilities 对于容器的安全性来说是非常有必要的。

不过我们在运行容器的时候可以通过指定 --privileded 参数来开启容器的超级权限,这个参数一定要慎用,因为他会获取系统 root 用户所有能力赋值给容器,并且会扫描宿主机的所有设备文件挂载到容器内部,所以是非常危险的操作。

但是如果你确实需要一些特殊的权限,我们可以通过 --cap-add 和 --cap-drop 这两个参数来动态调整,可以最大限度地保证容器的使用安全。

下面'表格中'列出的 Capabilities 是 'Docker 默认给容器添加的',我们可以通过 --cap-drop '去除'其中一个或者多个

vendor/github.com/containerd/containerd/oci/'spec_unix.go',这个文件定义了'缺省的capability'

新版本

下面'表格中'列出的 Capabilities 是 Docker '默认删除'的,我们可以通过'--cap-add添加'其中一个或者多个:

需求:修改网络接口数据

默认情况下是'没有权限的',因为需要的 'NET_ADMIN' 这个 Capabilities ,'默认被移除了'

docker run -it --rm '--cap-add=NET_ADMIN' busybox /bin/sh
所以在'不使用 --privileged 的情况下'('也不建议')我们可以使用 --cap-add=NET_ADMIN 将这个 Capabilities 添加回来备注: root和privileged的'权限的对比'在这里凸线出来了-->root默认只有14种'capabilities',privileged具有'操作系统所有'的

参考博客

(4)操作系统上设置

 kernel 2.2 之后Linux  以capabilities区分不同单元的关联root特权,'非root'进程都去'检查对应的capabilities'

扩展学习

结论:ping 命令在执行时需要'访问网络',所需的 capabilities 为 'cap_net_admin' 和 'cap_net_raw'

继续探究

列出了'系统支持'的capability

查看'当前进程'的 capabilities 信息

(5)Kubernetes设置

效果

细节: 如果在容器中先'关闭网卡,再开启网卡',网络不通

Kubernetes(十九)Security Context(一)相关推荐

  1. kubernetes安全:RBAC,Security Context,PSP,准入控制器

    文章目录 RBAC 权限控制前言 API 对象 RBAC 只能访问某个 namespace 的普通用户 创建用户凭证 创建角色 创建角色权限绑定 测试 只能访问某个 namespace 的 Servi ...

  2. kubernetes资源对象之security context

    安全上下文(Security Context)定义 Pod 或 Container 的的权限和访问控制. 安全上下文包括但不限于: 自主访问控制(Discretionary Access Contro ...

  3. 使用Minikube部署本地Kubernetes集群(二十九)

    前言 使用Minikube部署本地k8s集群相对比较简单,非常推荐将其用于本地k8s开发环境,唯一麻烦点的仅仅是网络问题. 在本篇教程中,我们使用了国内的镜像来完成本地k8s集群的搭建.如果搭建过程中 ...

  4. 微服务接入oauth2_SpringCloud微服务实战系列(十九)Ouath2在真实场景中的应用之客户端接入(第一种写法)...

    SpringCloud微服务实战系列(十九)Ouath2在真实场景中的应用之客户端接入(第一种写法) 一.概述 在<SpringCloud微服务实战系列(十七)Ouath2在真实场景中的应用之资 ...

  5. 【2021-07-31 更新】【梳理】简明操作系统原理 第十九章 身份认证和访问控制(docx)

    配套教材: Operating Systems: Three Easy Pieces Remzi H. Arpaci-Dusseau Andrea C. Arpaci-Dusseau Peter Re ...

  6. linux覆盖文件如何还原_大数据笔试真题集锦-——第十九章Linux面试题

    第十九章目录 第十九章 Linux 19.1 Linux中.如何调整文件最大打开数 修改linux的软硬件限制文件/etc/security/limits.conf. 在文件尾部添加如下代码: * s ...

  7. javaweb学习总结(三十九)——数据库连接池

    javaweb学习总结(三十九)--数据库连接池 一.应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长.假设网站一天10 ...

  8. linux覆盖文件如何还原_大数据笔试真题集锦---第十九章Linux面试题

    我会不间断的更新,维护,希望可以对正在找大数据工作的朋友们有所帮助. 第十九章目录 第十九章 Linux 19.1 Linux中.如何调整文件最大打开数 修改linux的软硬件限制文件/etc/sec ...

  9. Android开发笔记(一百三十九)可定制可滑动的标签栏

    App在页面底部展现标签栏导航的效果,有多种实现方式,包括TabActivity方式.ActivityGroup方式.FragmentActivity方式等等,具体的实现方案参见之前的博文< A ...

最新文章

  1. 万能android调用webservice方法——参数类型不受限制
  2. Poptset学员之牛奶咖啡糖
  3. Android--常驻BroadReceiver实现短信提醒
  4. 如何线程安全的使用HashMap
  5. 更别致的词向量模型(一):simpler glove
  6. 【数据竞赛】5行代码提升GBDT,提升巨大!
  7. js 运算符 语句
  8. Composite(组合)--对象结构型模式
  9. LeetCode 486. 预测赢家(博弈DP)
  10. IDS与IPS的区别(HIDS、NIDS)
  11. org.jgroups.ChannelException: failed to start p...
  12. 【流媒体服务】海康摄像头RTSP视频推流、转码、拉流、直播综合应用(六):【1】VLC+FFMPEG+Nginx实现RTSP到RTMP网页直播
  13. 计算机所建造全过程,Midas 桥梁设计建模计算,全过程图文解析!
  14. Mujoco-小球建模与控制
  15. Sloth组件之NetRisc.Configuration源代码发布
  16. 三次bezier曲线 MATLAB,Matlab 画二次及三次Bezier曲线,8控制点的B样条曲线
  17. 获取Throwable里头的错误信息
  18. 《Python编程:从入门到实践》中的小练习(1)
  19. 为什么移动在国外显示无服务器,开通了国际漫游怎么还是无服务
  20. 什么是鸟撞?该如何设计防鸟撞的建筑?#可持续设计

热门文章

  1. 阿里JVM SANDBOX原理
  2. 从mysql8.0读取数据并形成pandas dataframe类型数据,精确定位行列式中的元素,并读取...
  3. idea 编写ATM取款机
  4. 漫谈项目开发-不要以实现功能为导向
  5. [分享]英语面试问答大全
  6. python画龙猫_手把手教你画龙猫,详细到每一条线!
  7. c语言中生日蛋糕图片大全,简单生日蛋糕图片大全
  8. 面食机器市场前景分析及行业研究报告
  9. python高频交易策略_VNPY中 Tick级别准高频交易简单策略
  10. 杭州少年科学院计算机编程社,号外 | 少年科学院成立了!