OpenShift 4 - 容器安全之 SecurityContext 配置

2024-01-05 10:04

本文主要是介绍OpenShift 4 - 容器安全之 SecurityContext 配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《OpenShift / RHEL / DevSecOps 汇总目录》

以下两文介绍了如何利用容器特权配置对容器平台进行安全攻击,而本文介绍和部署运行容器相关的最佳 SecurityContext 实践。

  • 《容器安全 - 利用容器的特权配置实现对Kubernetes攻击,以及如何使用 PSA
    防范风险(视频)》

  • 《OpenShift - 利用容器的特权配置实现对OpenShift攻击,以及如何使用 PSA 和 RHACS
    防范风险(视频)》

安全上下文

安全上下文(Security Context)定义 Pod 或 Container 的特权与访问控制设置。由下表可以看出,可在 Pod 和 Container 设置的 SecurityContext 项目部分相同、部分有差异。其中 Pod 的设置是缺省值,而 Container 的设置可以覆盖 Pod 的设置。

pod.spec.securityContextpod.spec.containers.securityContext
allowPrivilegeEscalation
capabilities
fsGroup
fsGroupChangePolicy
privileged
procMount
runAsGrouprunAsGroup
runAsNonRootrunAsNonRoot
runAsUserrunAsUser
seLinuxOptionsseLinuxOptions
seccompProfileseccompProfile
supplementalGroups
sysctls
windowsOptionswindowsOptions

下面介绍其中和容器安全相关的项目:

allowPrivilegeEscalation

allowPrivilegeEscalation 决定容器的权限是否可以升级。当设置为 true 时,容器将获得默认权限之外的额外权限;false 可以帮助降低权限升级攻击的风险。

  containers:- name: webappimage: nginx:1.17securityContext:allowPrivilegeEscalation: false

runAsNonRoot

runAsNonRoot 用来设置用于防止容器以 root 用户身份运行,因为 root 用户身份运行可能很危险。一般建议尽可能以非 root 方式运行容器,以降低权限升级攻击的风险。但请记住,某些应用程序可能需要 root 访问权限才能正常运行。当 runAsNonRoot 设置为 true 时,容器将以非根用户 ID(UID)启动,而不是默认的根用户 UID 0。

  containers:- name: webappimage: nginx:1.17securityContext:runAsNonRoot: true

readOnlyRootFilesystem

readOnlyRootFilesystem 用来设置用于阻止对容器 root 文件系统的写访问。启用此设置并将其设置为 "true "时,容器的 root 文件系统将被挂载为只读,如果尝试写入 root 文件系统失败,将导致运行时错误。启用此设置虽然会减少攻击面,不过可能并不适合所有容器/应用程序,尤其是那些需要对 root 文件系统进行写访问才能正常运行的容器/应用程序。

  containers:- name: webappimage: nginx:1.17securityContext:readOnlyRootFilesystem: true

runAsUser

runAsUser 用来设置用于指定运行容器时应使用的用户 ID。默认情况下,容器是以 root 用户身份运行的,如果攻击者获得了对容器的访问权限,就会带来安全风险。为了降低权限升级攻击的风险,容器应尽可能以非 root 用户的身份运行。此配置可在 pod 和/或容器级别使用;如果在容器级别设置,它将覆盖 pod 的配置。

  containers:- name: webappimage: nginx:1.17securityContext:runAsGroup: 1000

runAsGroup

runAsGroup 用来设置指定容器主进程应在哪个组 ID 下运行。此配置也可用于 pod 和/或容器级别;如果在容器级别设置,它将覆盖 pod 的配置。

  containers:- name: webappimage: nginx:1.17securityContext:runAsGroup: 1000

capabilities

capabilities 用来设置容器可用的内核能力。建议缺省可放弃容器所有能力,只在必要时添加授权或允许的能力,这有助于降低容器遭受潜在权限升级攻击的风险。将 capabilities 字段设置为空对象 {} 即可从容器中删除所有 Linux 能力。

  containers:- name: webappimage: nginx:1.17securityContext:capabilities: {}
  containers:- name: webappimage: nginx:1.17securityContext:capabilities:add:- SYS_TIMEdrop:- SYS_ADMIN

参考

https://www.cncf.io/blog/2023/12/15/best-practices-for-securing-kubernetes-deployments/
https://kubesec.io/basics/securitycontext-capabilities/

这篇关于OpenShift 4 - 容器安全之 SecurityContext 配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/572503

相关文章

MySQL 中的服务器配置和状态详解(MySQL Server Configuration and Status)

《MySQL中的服务器配置和状态详解(MySQLServerConfigurationandStatus)》MySQL服务器配置和状态设置包括服务器选项、系统变量和状态变量三个方面,可以通过... 目录mysql 之服务器配置和状态1 MySQL 架构和性能优化1.1 服务器配置和状态1.1.1 服务器选项

SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤

《SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤》本文主要介绍了SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤,文中通过示例代码介绍的非常详... 目录 目标 步骤 1:确保 ProxySQL 和 mysql 主从同步已正确配置ProxySQL 的

Go语言中三种容器类型的数据结构详解

《Go语言中三种容器类型的数据结构详解》在Go语言中,有三种主要的容器类型用于存储和操作集合数据:本文主要介绍三者的使用与区别,感兴趣的小伙伴可以跟随小编一起学习一下... 目录基本概念1. 数组(Array)2. 切片(Slice)3. 映射(Map)对比总结注意事项基本概念在 Go 语言中,有三种主要

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL

配置springboot项目动静分离打包分离lib方式

《配置springboot项目动静分离打包分离lib方式》本文介绍了如何将SpringBoot工程中的静态资源和配置文件分离出来,以减少jar包大小,方便修改配置文件,通过在jar包同级目录创建co... 目录前言1、分离配置文件原理2、pom文件配置3、使用package命令打包4、总结前言默认情况下,

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2

浅析Rust多线程中如何安全的使用变量

《浅析Rust多线程中如何安全的使用变量》这篇文章主要为大家详细介绍了Rust如何在线程的闭包中安全的使用变量,包括共享变量和修改变量,文中的示例代码讲解详细,有需要的小伙伴可以参考下... 目录1. 向线程传递变量2. 多线程共享变量引用3. 多线程中修改变量4. 总结在Rust语言中,一个既引人入胜又可

Redis多种内存淘汰策略及配置技巧分享

《Redis多种内存淘汰策略及配置技巧分享》本文介绍了Redis内存满时的淘汰机制,包括内存淘汰机制的概念,Redis提供的8种淘汰策略(如noeviction、volatile-lru等)及其适用场... 目录前言一、什么是 Redis 的内存淘汰机制?二、Redis 内存淘汰策略1. pythonnoe

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个

windos server2022里的DFS配置的实现

《windosserver2022里的DFS配置的实现》DFS是WindowsServer操作系统提供的一种功能,用于在多台服务器上集中管理共享文件夹和文件的分布式存储解决方案,本文就来介绍一下wi... 目录什么是DFS?优势:应用场景:DFS配置步骤什么是DFS?DFS指的是分布式文件系统(Distr