【k8s】scc权限 restricted、anyuid、privileged
文章目录
- 概述
- 1. 内置的scc
- 2. OpenShift如何确定pod的scc
- 2.1 Pod未带SCC标签的情况
- 2.2. Pod带有SCC标签的情况
- 参考
概述
在OpenShift(后文简称OCP)中,很早就一个概念:Security Context Constraints ,简称SCC,即安全上下文约束。K8S的Pod安全策略和OCP中的SCC有一定继承(现有OCP的SCC后有K8S的pod安全策略)。为了更好地理解K8S的容器安全策略,并且控制篇幅,我们在本篇中先介绍OCP的SCC。
1. 内置的scc
安全上下文约束是OpenShift提供的工具,用于控制平台上允许每个Pod请求的特权。OpenShift带有8个预定义的安全上下文约束,您可以使用oc get scc命令列出这些约束。
SCC | Description | 说明 |
---|---|---|
restricted | 受限拒绝访问所有主机功能,并要求Pod必须与UID和分配给名称空间的SELinux上下文一起运行。这是限制性最强 的SCC,默认情况下,它用于经过身份验证的用户 | 换句话说,这是最安全的一种SCC。 |
nonroot | nonroot提供受限SCC的所有功能,但允许用户使用任何非root UID运行。用户必须指定UID,或者必须在容器运行时清单上指定UID。 | 需要具有相同的其他受限制的SCC安全功能的可预测的非根UID的应用程序可以使用此SCC,只要它们在清单中通知了UID。 |
anyuid | anyuid提供了受限SCC的所有功能,但允许用户使用任何UID和任何GID运行。 | 在kubernetes和OpenShift之类的平台上,这等效于允许在容器内部和外部都允许UID 0或root用户。SELinux在这里起到了重要的作用,它增加了一层保护,并且使用seccomp过滤不需要的系统调用。 |
hostmount-anyuid | hostmount-anyuid提供了受限SCC的所有功能,但允许通过Pod进行主机安装和任何UID。这主要由持久性卷回收器使用。警告:此SCC允许主机文件系统作为任何UID(包括UID 0)进行访问。请谨慎授权。 | 与anyuid相同的警告,但在这里它会更进一步,并允许安装主机卷。请注意,描述中提到的卷回收器是受信任的工作负载,也是必不可少的基础架构. |
hostnetwork | hostnetwork允许使用主机网络和主机端口,但仍要求Pod必须与分配给namepac的UID和SELinux上下文一起运行e | 在这里,pod/容器将能够直接“查看和使用”主机网络堆栈。非零UID和预分配的SELinux上下文将有助于提供另一层安全性。 |
node-exporter | node-exporter scc is used for the Prometheus node exporter | Node-exporter 是为Prometheus设计的,用于从集群中检索指标。它允许访问主机网络,主机PIDS和主机卷,但不能访问主机IPC。也允许anyuid。不能被其他应用程序使用。 |
hostaccess | hostaccess允许访问所有主机名称空间,但仍要求Pod必须与分配给名称空间的UID和SELinux上下文一起运行。警告:此SCC允许主机访问名称空间,文件系统和PIDS。它只能由受信任的Pod使用。谨慎行事。 | 在描述中,主机名称空间是指在pod或容器名称空间之外,或者,我们可以将其称为节点或根Linux名称空间。确实,限制UID并使用SELinux将为保护节点设置一层安全性。但是,它是一个非常宽松的SCC,仅应由绝对必要的受信任工作负载使用。 |
Privileged | privileged允许访问所有特权和主机功能,并具有以任何用户,任何组,任何fsGroup和任何SELinux上下文运行的能力。警告:这是最宽松 的SCC,仅应用于集群管理。谨慎行事。 | 此scc允许pod /容器控制主机/ worker节点甚至其他容器中的所有内容。这是最特权和最宽松的SCC策略。仅受信任的工作负载应使用此选项,并讨论是否应将其用于生产中是有效的。特权pod可以完全控制主机。 |
本质是scc权限列表不同
:
restricted | anyuid | privileged |
---|---|---|
allowHostDirVolumePlugin: false | allowHostDirVolumePlugin: false | allowHostDirVolumePlugin: true |
allowHostIPC: false | allowHostIPC: false | allowHostIPC: true |
allowHostNetwork: false | allowHostNetwork: false | allowHostNetwork: true |
allowHostPID: false | allowHostPID: false | allowHostPID: true |
allowHostPorts: false | allowHostPorts: false | allowHostPorts: true |
allowPrivilegeEscalation: true | allowPrivilegeEscalation: true | allowPrivilegeEscalation: true |
allowPrivilegedContainer: false | allowPrivilegedContainer: false | allowPrivilegedContainer: true |
allowedCapabilities: null | allowedCapabilities: [ | allowedCapabilities: [*] |
NET_RAW | ||
FSETID | ||
SETGID | ||
SETUID | ||
CHOWN | ||
SYS_CHROOT] | ||
allowedUnsafeSysctls: | allowedUnsafeSysctls: [*] | |
apiVersion: security.openshift.io/v1 | apiVersion: security.openshift.io/v1 | apiVersion: security.openshift.io/v1 |
defaultAddCapabilities: null | defaultAddCapabilities: null | defaultAddCapabilities: null |
fsGroup: | fsGroup: RunAsAny | fsGroup: RunAsAny |
groups: [] | groups: [system:cluster-admins] | groups: [system:cluster-admins, system:nodes, system:masters] |
kind: SecurityContextConstraints | kind: SecurityContextConstraints | kind: SecurityContextConstraints |
name: restricted | name: anyuid | name: privileged |
resourceVersion: “3512475209” | resourceVersion: “3512475203” | resourceVersion: “340” |
uid: bdb21b4f-dfda-456a-8aa3-7fdcd8ee2f2d | uid: d35f70ed-47ce-4b22-83d0-b0b2a4bc07f8 | uid: 1df9ef3c-1fab-4031-a2cd-3d7479069050 |
priority: null | priority: 10 | priority: null |
readOnlyRootFilesystem: false | readOnlyRootFilesystem: false | readOnlyRootFilesystem: false |
requiredDropCapabilities: [KILL, MKNOD, SETUID, SETGID] | requiredDropCapabilities: [MKNOD] | requiredDropCapabilities: null |
runAsUser: | runAsUser: RunAsAny | runAsUser: RunAsAny |
seLinuxContext: | seLinuxContext: MustRunAs | seLinuxContext: RunAsAny |
supplementalGroups: RunAsAny | supplementalGroups: RunAsAny | supplementalGroups: RunAsAny |
users: [] | users: [] | users: [system:admin, system:serviceaccount:openshift-infra:build-controller] |
volumes: [configMap, csi, downwardAPI, emptyDir, ephemeral, persistentVolumeClaim, projected, secret] | volumes: [configMap, csi, downwardAPI, emptyDir, ephemeral, persistentVolumeClaim, projected, secret] | volumes: [*] |
2. OpenShift如何确定pod的scc
- 如果Pod指定了SCC注解,且ServiceAccount有权限使用该SCC,则优先使用注解指定的SCC。
- 如果未指定注解,则基于ServiceAccount的绑定权限,从严格到宽松挑选合适的SCC。
- 无论是否指定注解,最终都需要验证ServiceAccount的绑定权限,这意味着标签并不能完全绕过权限控制。
2.1 Pod未带SCC标签的情况
如果Pod没有明确指定SCC,OpenShift会按照以下流程选择一个适用的SCC:
- 检查Pod的ServiceAccount,以及该ServiceAccount的角色绑定所允许的SCC列表。
- 对SCC列表按照权限的严格程度排序:
- 从最严格的SCC(例如restricted)到最宽松的SCC(例如privileged)。
- 从排序中选择第一个Pod能满足的SCC作为其适用的SCC。
2.2. Pod带有SCC标签的情况
- OpenShift允许通过Pod的openshift.io/scc注解直接指定使用的SCC。
- 如果Pod通过注解明确指定了一个SCC(如openshift.io/scc=restricted),OpenShift会优先尝试使用该SCC。
- 然而,Pod仍需满足以下条件:
- Pod的ServiceAccount具有绑定到该SCC的权限:OpenShift会检查绑定(RoleBinding 或 ClusterRoleBinding)中,是否允许ServiceAccount使用这个指定的SCC。
- 如果绑定验证成功,则使用指定的SCC。
- 如果绑定验证失败,则该Pod无法创建。
参考
K8S中的Pod安全策略(上):K8S学习篇3
OpenShift如何确定pod的scc?
相关文章:
【k8s】scc权限 restricted、anyuid、privileged
文章目录 概述1. 内置的scc2. OpenShift如何确定pod的scc2.1 Pod未带SCC标签的情况2.2. Pod带有SCC标签的情况 参考 概述 在OpenShift(后文简称OCP)中,很早就一个概念:Security Context Constraints ,简称SCC…...
2025华数杯国际赛A题完整论文讲解(含每一问python代码+数据+可视化图)
大家好呀,从发布赛题一直到现在,总算完成了2025“华数杯”国际大学生数学建模竞赛A题Can He Swim Faster的完整的成品论文。 本论文可以保证原创,保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文…...
ThreadLocal 的使用场景
在现代电商平台中,ThreadLocal 常用于以下场景,特别是与线程隔离相关的业务中,以提高性能和简化上下文传递。 1. 用户上下文信息管理 场景:在用户发起的每次请求中,需要携带用户 ID、角色、权限等信息,而这…...
后端开发 Springboot整合Redis Spring Data Redis 模板
目录 redis 配置 RedisConfig 类 完整代码 代码讲解 1. 类定义和注解 2. 定义 RedisTemplate Bean 3. 配置 JSON 序列化 4. 配置 Redis 的 key 和 value 序列化方式 5. 完成配置并返回 RedisTemplate 总结 redis 服务接口实现类 类级别 注入 RedisTemplate 常用 Re…...
代码随想录算法训练营第 4 天(链表 2)| 24. 两两交换链表中的节点19.删除链表的倒数第N个节点 -
一、24. 两两交换链表中的节点 题目:24. 两两交换链表中的节点 - 力扣(LeetCode) 视频:帮你把链表细节学清楚! | LeetCode:24. 两两交换链表中的节点_哔哩哔哩_bilibili 讲解:代码随想录 dummy-…...
【RDMA学习笔记】1:RDMA(Remote Direct Memory Access)介绍
从帝国理工的PPT学习。 什么是RDMA Remote Direct Memory Access,也就是Remote的DMA,是一种硬件机制,能直接访问远端结点的内存,而不需要处理器介入。 其中: Remote:跨node进行数据传输Directÿ…...
网络安全常见的35个安全框架及模型
大家读完觉得有帮助记得关注和点赞!!! 01、概述 网络安全专业机构制定的一套标准、准则和程序,旨在帮助组织了解和管理面临的网络安全风险。优秀的安全框架及模型应该为用户提供一种可靠方法,帮助其实现网络安全建设…...
Elasticsearch介绍及使用
Elasticsearch 是一款基于 Lucene 库构建的开源、分布式、RESTful 风格的搜索引擎和分析引擎,具有强大的全文搜索、数据分析、机器学习等功能,广泛应用于日志分析、实时数据分析、全文检索等场景。 核心概念 索引(Index)…...
Leetocde516. 最长回文子序列 动态规划
原题链接:Leetocde516. 最长回文子序列 class Solution { public:int longestPalindromeSubseq(string s) {int n s.size();vector<vector<int>> dp(n, vector<int>(n, 1));for (int i 0; i < n; i) {dp[i][i] 1;if (i 1 < n &&…...
iOS 逆向学习 - Inter-Process Communication:进程间通信
iOS 逆向学习 - Inter-Process Communication:进程间通信 一、进程间通信概要二、iOS 进程间通信机制详解1. URL Schemes2. Pasteboard3. App Groups 和 Shared Containers4. XPC Services 三、不同进程间通信机制的差异四、总结 一、进程间通信概要 进程间通信&am…...
高级生化大纲
一,蛋白质化学: 蛋白质分离是生物化学和分子生物学研究中的一项基本技术,用于根据蛋白质的物理和化学特性将其从混合物中分离出来。 1. 离心分离法 离心分离法利用离心力来分离不同质量或密度的颗粒和分子。 差速离心:通过逐…...
YARN WebUI 服务
一、WebUI 使用 与HDFS一样,YARN也提供了一个WebUI服务,可以使用YARN Web用户界面监视群集、队列、应用程序、服务、流活动和节点信息。还可以查看集群详细配置的信息,检查各种应用程序和服务的日志。 1.1 首页 浏览器输入http://node2.itc…...
【Unity3D】利用IJob、Burst优化处理切割物体
参考文章: 【Unity】切割网格 【Unity3D】ECS入门学习(一)导入及基础学习_unity ecs教程-CSDN博客 【Unity3D】ECS入门学习(十二)IJob、IJobFor、IJobParallelFor_unity ijobparallelfor-CSDN博客 工程资源地址&…...
【大前端】Vue3 工程化项目使用详解
目录 一、前言 二、前置准备 2.1 环境准备 2.1.1 create-vue功能 2.1.2 nodejs环境 2.1.3 配置nodejs的环境变量 2.1.4 更换安装包的源 三、工程化项目创建与启动过程 3.1 创建工程化项目 3.2 项目初始化 3.3 项目启动 3.4 核心文件说明 四、VUE两种不同的API风格 …...
基于文件系统分布式锁原理
分布式锁:在一个公共的存储服务上打上一个标记,如Redis的setnx命令,是先到先得方式获得锁,ZooKeeper有点像下面的demo,比较大小的方式判决谁获得锁。 package com.ldj.mybatisflex.demo;import java.util.*; import java.util.co…...
简历整理YH
一,订单中心 1,调拨单 融通(Rocketmq)-订单中心:ECC_BMS123(已出单),125(分配),127(发货),129(收货) 通过RocketMq接入多场景订单数据 2,销售单 sap(FTP)-订单中心,下发1002,1003,…...
Kotlin 协程基础三 —— 结构化并发(二)
Kotlin 协程基础系列: Kotlin 协程基础一 —— 总体知识概述 Kotlin 协程基础二 —— 结构化并发(一) Kotlin 协程基础三 —— 结构化并发(二) Kotlin 协程基础四 —— CoroutineScope 与 CoroutineContext Kotlin 协程…...
微信小程序实现长按录音,点击播放等功能,CSS实现语音录制动画效果
有一个需求需要在微信小程序上实现一个长按时进行语音录制,录制时间最大为60秒,录制完成后,可点击播放,播放时再次点击停止播放,可以反复录制,新录制的语音把之前的语音覆盖掉,也可以主动长按删…...
校园跑腿小程序---轮播图,导航栏开发
hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 🦁作者简介:一名喜欢分享和记录学习的在校大学生…...
详细全面讲解C++中重载、隐藏、覆盖的区别
文章目录 总结1、重载示例代码特点1. 模板函数和非模板函数重载2. 重载示例与调用规则示例代码调用规则解释3. 特殊情况与注意事项二义性问题 函数特化与重载的交互 2. 函数隐藏(Function Hiding)概念示例代码特点 3. 函数覆盖(重写ÿ…...
一文读懂单片机的串口
目录 串口通信的基本概念 串口通信的关键参数 单片机串口的硬件连接 单片机串口的工作原理 数据发送过程 数据接收过程 单片机串口的编程实现 以51单片机为例 硬件连接 初始化串口 发送数据 接收数据 串口中断服务函数 代码示例 单片机串口的应用实例 单片机与…...
HTML5 网站模板
HTML5 网站模板 参考 HTML5 Website Templates...
mybatis分页插件:PageHelper、mybatis-plus-jsqlparser(解决SQL_SERVER2005连接分页查询OFFSET问题)
文章目录 引言I PageHelper坐标II mybatis-plus-jsqlparser坐标Spring Boot 添加分页插件自定义 Mapper 方法中使用分页注意事项解决SQL_SERVER2005连接分页查询OFFSET问题知识扩展MyBatis-Plus 框架结构mybatis-plus-jsqlparser的 Page 类引言 PageHelper import com.github.p…...
uniapp中rpx和upx的区别
在 UniApp 中,rpx 和 upx 是两种不同的单位,它们的主要区别在于适用的场景和计算方式。 ### rpx(Responsive Pixel) - **适用场景**:rpx 是一种响应式单位,主要用于小程序和移动端的布局。 - **计算方式**…...
什么是卷积网络中的平移不变性?平移shft在数据增强中的意义
今天来介绍一下数据增强中的平移shft操作和卷积网络中的平移不变性。 1、什么是平移 Shift 平移是指在数据增强(data augmentation)过程中,通过对输入图像或目标进行位置偏移(平移),让目标在图像中呈现出…...
java.net.SocketException: Connection reset 异常原因分析和解决方法
导致此异常的原因,总结下来有三种情况: 一、服务器端偶尔出现了异常,导致连接关闭 解决方法: 采用出错重试机制 二、 服务器端和客户端使用的连接方式不一致 解决方法: 服务器端和客户端使用相同的连接方式ÿ…...
Maven 仓库的分类
Maven 是一个广泛使用的项目构建和依赖管理工具,在 Java 开发生态中占据重要地位。作为 Maven 的核心概念之一,仓库(Repository)扮演着至关重要的角色,用于存储项目的依赖、插件以及构建所需的各种资源。 了解 Maven 仓…...
隧道网络:为数据传输开辟安全通道
什么是隧道网络? 想象一下,你正在一个陌生的城市旅行,并且想要访问家里的电脑。但是,直接连接是不可能的,因为家庭网络通常受到防火墙或路由器的保护,不允许外部直接访问。这时候,隧道网络&…...
CentOS 7 下 Nginx 的详细安装与配置
1、安装方式 1.1、通过编译方式安装 下载Nginx1.16.1的安装包 https://nginx.org/download/nginx-1.16.1.tar.gz 下载后上传至/home目录下。 1.2、通过yum方式安装 这种方式安装更简单。 2、通过编译源码包安装Nginx 2.1、安装必要依赖 sudo yum -y install gcc gcc-c sudo…...
JAVA 使用apache poi实现EXCEL文件的输出;apache poi实现标题行的第一个字符为红色;EXCEL设置某几个字符为别的颜色
设置输出文件的列宽,防止文件过于丑陋 Sheet sheet workbook.createSheet(FileConstants.ERROR_FILE_SHEET_NAME); sheet.setColumnWidth(0, 40 * 256); sheet.setColumnWidth(1, 20 * 256); sheet.setColumnWidth(2, 20 * 256); sheet.setColumnWidth(3, 20 * 25…...
幼儿园主题网络图设计思路/搜索引擎优化的主要特征
Python通过语言的简洁性,让我们以人类思考的方式来编写代码,新手更容易上手,老鸟更爱不释手。 要写出Pythonic(优雅的,地道的,整洁的)代码,还要平时多观察那些大牛代码,这里明哥收集了一些比较常见的Pythonic写法,帮助你养成写优秀代码的习惯。 01.变量交换 交换两…...
做燕鲍翅的网站/上海做seo的公司
1.如果一个脚本要获取某个物体的引用,在脚本中定义Public GameObject go,在Hierarchy中将对应物体拖过去,这是最常用的方式,很简单 2.如果一个脚本要获取很多物体的引用,当然可以在脚本中定义很多个Public GameObject go变量&…...
网站报纸什么软件做/东莞网站建设优化诊断
B类网路子网掩码是225.255.224.0,那子网个数是多少? 首先将子网掩码划分成二进制如下 1111 1111 .1111 1111 .1100 0000 .0000 0000 在根据 下图B类网路的地址的划分知道网络地址应该是16位, 上题目地址是18位,所以之类主机为因该是8-2位,出去全0和全1的…...
用织梦做网站能练技术吗/google app
阿甘正传 src url:http://blog.csdn.net/VC_Tony/archive/2010/03/25/5417566.aspx 今天早上看了阿甘正传觉得,我们还是得抽点时间看看电影,特别是像《阿甘正传》这种有韵味的电影,里面的人生哲学真的很值得人们去深思。我已经好…...
网站建设和seo讲师要求/seo入门基础教程
react 异步渲染如果您曾经制作过基本的React应用程序页面,则它可能会遇到SEO较差以及在速度较慢的设备上出现性能问题的情况。 您通常可以使用NodeJS添加回传统的服务器端网页渲染,但这并不是一个简单的过程,尤其是对于异步API。 通过在服务…...
那个网站可以帮助做数学题/地推接单平台
问题场景: 在阿里云搭建一个apache服务器,正常访问XAMPP目录下的页面。 服务器本地是可以正常访问的 但是远程 就不可以访问了: 出现这样的画面: 解决方法 1、按照提示找到httpd-xampp.conf文件,路径在“/xampp/apache…...