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

相关文章

mysql5.7.15winx64配置全过程

《mysql5.7.15winx64配置全过程》文章详细介绍了MySQL5.7.15免安装版的配置步骤,包括解压安装包、设置环境变量、修改配置文件、初始化数据目录、安装服务、启动数据库、登录及密码修改... 目录前言一、首先下载安装包二、安android装步骤1.第一步解压文件2.配置环境变量3.复制my-

Jenkins的安装与简单配置过程

《Jenkins的安装与简单配置过程》本文简述Jenkins在CentOS7.3上安装流程,包括Java环境配置、RPM包安装、修改JENKINS_HOME路径及权限、启动服务、插件安装与系统管理设置... 目录www.chinasem.cnJenkins安装访问并配置JenkinsJenkins配置邮件通知

Conda国内镜像源及配置过程

《Conda国内镜像源及配置过程》文章介绍Conda镜像源使用方法,涵盖临时指定单个/多个源、永久配置及恢复默认设置,同时说明main(官方稳定)、free(逐渐弃用)、conda-forge(社区更... 目录一、Conda国内镜像源二、Conda临时使用镜像源指定单个源临时指定多个源创建环境时临时指定源

MySQL配置多主复制的实现步骤

《MySQL配置多主复制的实现步骤》多主复制是一种允许多个MySQL服务器同时接受写操作的复制方式,本文就来介绍一下MySQL配置多主复制的实现步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录1. 环境准备2. 配置每台服务器2.1 修改每台服务器的配置文件3. 安装和配置插件4. 启动组复制4.

通过配置nginx访问服务器静态资源的过程

《通过配置nginx访问服务器静态资源的过程》文章介绍了图片存储路径设置、Nginx服务器配置及通过http://192.168.206.170:8007/a.png访问图片的方法,涵盖图片管理与服务... 目录1.图片存储路径2.nginx配置3.访问图片方式总结1.图片存储路径2.nginx配置

nginx配置错误日志的实现步骤

《nginx配置错误日志的实现步骤》配置nginx代理过程中,如果出现错误,需要看日志,可以把nginx日志配置出来,以便快速定位日志问题,下面就来介绍一下nginx配置错误日志的实现步骤,感兴趣的可... 目录前言nginx配置错误日志总结前言在配置nginx代理过程中,如果出现错误,需要看日志,可以把

SpringBoot结合Knife4j进行API分组授权管理配置详解

《SpringBoot结合Knife4j进行API分组授权管理配置详解》在现代的微服务架构中,API文档和授权管理是不可或缺的一部分,本文将介绍如何在SpringBoot应用中集成Knife4j,并进... 目录环境准备配置 Swagger配置 Swagger OpenAPI自定义 Swagger UI 底

Oracle迁移PostgreSQL隐式类型转换配置指南

《Oracle迁移PostgreSQL隐式类型转换配置指南》Oracle迁移PostgreSQL时因类型差异易引发错误,需通过显式/隐式类型转换、转换关系管理及冲突处理解决,并配合验证测试确保数据一致... 目录一、问题背景二、解决方案1. 显式类型转换2. 隐式转换配置三、维护操作1. 转换关系管理2.

IDEA中配置Tomcat全过程

《IDEA中配置Tomcat全过程》文章介绍了在IDEA中配置Tomcat的六步流程,包括添加服务器、配置部署选项、设置应用服务器及启动,并提及Maven依赖可能因约定大于配置导致问题,需检查依赖版本... 目录第一步第二步第三步第四步第五步第六步总结第一步选择这个方框第二步选择+号,找到Tomca

Win10安装Maven与环境变量配置过程

《Win10安装Maven与环境变量配置过程》本文介绍Maven的安装与配置方法,涵盖下载、环境变量设置、本地仓库及镜像配置,指导如何在IDEA中正确配置Maven,适用于Java及其他语言项目的构建... 目录Maven 是什么?一、下载二、安装三、配置环境四、验证测试五、配置本地仓库六、配置国内镜像地址