跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
Kubernetes安全上下文
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
{{DISPLAYTITLE:Kubernetes安全上下文}} '''Kubernetes安全上下文(Security Context)'''是Pod或容器级别的安全配置,用于定义权限和访问控制设置。它允许管理员限制容器内进程的行为(如用户ID、权限提升等),从而增强集群的安全性。本文将详细介绍其核心概念、配置方法及实际应用场景。 == 核心概念 == 安全上下文通过以下机制控制容器运行时的安全属性: * '''用户与组ID''':指定容器内进程运行的UID/GID。 * '''权限提升''':禁止容器进程获取特权(如`allowPrivilegeEscalation: false`)。 * '''Capabilities''':细化控制Linux内核权限(如`NET_ADMIN`)。 * '''SELinux/AppArmor''':强制访问控制标签。 * '''文件系统权限''':限制写入或只读挂载。 === 数学表示 === 安全上下文的权限约束可形式化为: <math> \text{SecurityPolicy} = \{ \text{uid}, \text{gid}, \text{capabilities}, \text{selinux}, \ldots \} </math> == 配置示例 == 以下是一个Pod级别的安全上下文配置: <syntaxhighlight lang="yaml"> apiVersion: v1 kind: Pod metadata: name: security-context-demo spec: securityContext: runAsUser: 1000 runAsGroup: 3000 fsGroup: 2000 containers: - name: sec-ctx-demo image: busybox command: ["sh", "-c", "sleep 1h"] securityContext: allowPrivilegeEscalation: false capabilities: add: ["NET_ADMIN"] drop: ["ALL"] </syntaxhighlight> '''关键字段说明''': * `runAsUser`/`runAsGroup`:容器进程以UID 1000和GID 3000运行。 * `fsGroup`:挂载的卷归GID 2000所有。 * `capabilities`:仅添加`NET_ADMIN`权限,丢弃其他所有权限。 == 实际案例 == === 场景1:防止特权升级 === 某金融应用需确保容器无法通过`sudo`获取root权限: <syntaxhighlight lang="yaml"> securityContext: allowPrivilegeEscalation: false runAsNonRoot: true </syntaxhighlight> === 场景2:多租户隔离 === 通过不同UID/GID隔离租户容器: <mermaid> graph LR TenantA[Tenant A Pod] -->|runAsUser: 1001| ContainerA TenantB[Tenant B Pod] -->|runAsUser: 1002| ContainerB </mermaid> == 高级配置 == === SELinux集成 === 为容器添加SELinux标签: <syntaxhighlight lang="yaml"> securityContext: seLinuxOptions: level: "s0:c123,c456" </syntaxhighlight> === 只读文件系统 === 禁止容器写入文件系统: <syntaxhighlight lang="yaml"> securityContext: readOnlyRootFilesystem: true </syntaxhighlight> == 常见问题 == * '''Q:如何排查权限拒绝错误?''' A:检查容器日志中的`Permission denied`,确认UID/GID或Capabilities配置是否正确。 * '''Q:`fsGroup`为何不生效?''' A:确保存储插件支持`fsGroup`(如NFS需配置`no_root_squash`)。 == 总结 == Kubernetes安全上下文是实现'''最小权限原则'''的关键工具。通过合理配置,可显著降低容器逃逸或横向移动的风险。建议结合`PodSecurityPolicy`(PSP)或`PodSecurityAdmission`进一步强化集群安全。 [[Category:集成部署]] [[Category:Kubernetes]] [[Category:Kubernetes安全]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)