Kubernetes(十九)Security Context(一)
一 官网文档
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(一)相关推荐
- kubernetes安全:RBAC,Security Context,PSP,准入控制器
文章目录 RBAC 权限控制前言 API 对象 RBAC 只能访问某个 namespace 的普通用户 创建用户凭证 创建角色 创建角色权限绑定 测试 只能访问某个 namespace 的 Servi ...
- kubernetes资源对象之security context
安全上下文(Security Context)定义 Pod 或 Container 的的权限和访问控制. 安全上下文包括但不限于: 自主访问控制(Discretionary Access Contro ...
- 使用Minikube部署本地Kubernetes集群(二十九)
前言 使用Minikube部署本地k8s集群相对比较简单,非常推荐将其用于本地k8s开发环境,唯一麻烦点的仅仅是网络问题. 在本篇教程中,我们使用了国内的镜像来完成本地k8s集群的搭建.如果搭建过程中 ...
- 微服务接入oauth2_SpringCloud微服务实战系列(十九)Ouath2在真实场景中的应用之客户端接入(第一种写法)...
SpringCloud微服务实战系列(十九)Ouath2在真实场景中的应用之客户端接入(第一种写法) 一.概述 在<SpringCloud微服务实战系列(十七)Ouath2在真实场景中的应用之资 ...
- 【2021-07-31 更新】【梳理】简明操作系统原理 第十九章 身份认证和访问控制(docx)
配套教材: Operating Systems: Three Easy Pieces Remzi H. Arpaci-Dusseau Andrea C. Arpaci-Dusseau Peter Re ...
- linux覆盖文件如何还原_大数据笔试真题集锦-——第十九章Linux面试题
第十九章目录 第十九章 Linux 19.1 Linux中.如何调整文件最大打开数 修改linux的软硬件限制文件/etc/security/limits.conf. 在文件尾部添加如下代码: * s ...
- javaweb学习总结(三十九)——数据库连接池
javaweb学习总结(三十九)--数据库连接池 一.应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长.假设网站一天10 ...
- linux覆盖文件如何还原_大数据笔试真题集锦---第十九章Linux面试题
我会不间断的更新,维护,希望可以对正在找大数据工作的朋友们有所帮助. 第十九章目录 第十九章 Linux 19.1 Linux中.如何调整文件最大打开数 修改linux的软硬件限制文件/etc/sec ...
- Android开发笔记(一百三十九)可定制可滑动的标签栏
App在页面底部展现标签栏导航的效果,有多种实现方式,包括TabActivity方式.ActivityGroup方式.FragmentActivity方式等等,具体的实现方案参见之前的博文< A ...
最新文章
- 万能android调用webservice方法——参数类型不受限制
- Poptset学员之牛奶咖啡糖
- Android--常驻BroadReceiver实现短信提醒
- 如何线程安全的使用HashMap
- 更别致的词向量模型(一):simpler glove
- 【数据竞赛】5行代码提升GBDT,提升巨大!
- js 运算符 语句
- Composite(组合)--对象结构型模式
- LeetCode 486. 预测赢家(博弈DP)
- IDS与IPS的区别(HIDS、NIDS)
- org.jgroups.ChannelException: failed to start p...
- 【流媒体服务】海康摄像头RTSP视频推流、转码、拉流、直播综合应用(六):【1】VLC+FFMPEG+Nginx实现RTSP到RTMP网页直播
- 计算机所建造全过程,Midas 桥梁设计建模计算,全过程图文解析!
- Mujoco-小球建模与控制
- Sloth组件之NetRisc.Configuration源代码发布
- 三次bezier曲线 MATLAB,Matlab 画二次及三次Bezier曲线,8控制点的B样条曲线
- 获取Throwable里头的错误信息
- 《Python编程:从入门到实践》中的小练习(1)
- 为什么移动在国外显示无服务器,开通了国际漫游怎么还是无服务
- 什么是鸟撞?该如何设计防鸟撞的建筑?#可持续设计
热门文章
- 阿里JVM SANDBOX原理
- 从mysql8.0读取数据并形成pandas dataframe类型数据,精确定位行列式中的元素,并读取...
- idea 编写ATM取款机
- 漫谈项目开发-不要以实现功能为导向
- [分享]英语面试问答大全
- python画龙猫_手把手教你画龙猫,详细到每一条线!
- c语言中生日蛋糕图片大全,简单生日蛋糕图片大全
- 面食机器市场前景分析及行业研究报告
- python高频交易策略_VNPY中 Tick级别准高频交易简单策略
- 杭州少年科学院计算机编程社,号外 | 少年科学院成立了!