---
title: Kubernetes Pod 安全策略与隔离实践(PSA、Seccomp、Capabilities 与验证)
date: 2025-11-26
keywords:
- Pod Security Admission
- Seccomp
- AppArmor
- Capabilities
- runAsNonRoot
description: 通过命名空间PSA策略与容器安全上下文(Seccomp、AppArmor、能力降级与非root)实现细粒度隔离,并给出可重复的拦截与合规验证方法。
categories:
- 文章资讯
- 技术教程
---
概述
Pod安全依赖命名空间级策略与容器级安全上下文协同。PSA在准入时拦截违规配置,容器内使用Seccomp、AppArmor与能力降级减少攻击面,配合非root与禁止提权,形成稳健隔离基线。
关键实践与参数
- PSA等级:
baseline或restricted,按命名空间标签生效 - 非root:
runAsNonRoot=truerunAsUser=1000 - 能力降级:
capabilities.drop=["ALL"] - 禁止提权:
allowPrivilegeEscalation=false - Seccomp:
seccompProfile.type=RuntimeDefault - AppArmor:为容器设置
container.apparmor.security.beta.kubernetes.io/<name>=runtime/default
示例/配置/实现
apiVersion: v1
kind: Namespace
metadata:
name: secure
labels:
pod-security.kubernetes.io/enforce: restricted
pod-security.kubernetes.io/enforce-version: latest
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: api
namespace: secure
spec:
replicas: 2
selector:
matchLabels: { app: api }
template:
metadata:
labels: { app: api }
annotations:
container.apparmor.security.beta.kubernetes.io/app: runtime/default
spec:
containers:
- name: app
image: alpine:3.19
command: ["sleep", "3600"]
securityContext:
runAsNonRoot: true
runAsUser: 1000
allowPrivilegeEscalation: false
seccompProfile: { type: RuntimeDefault }
capabilities: { drop: ["ALL"] }
验证
- 准入拦截:尝试部署
privileged=true容器应被PSA拒绝并给出原因 - 非root校验:容器内执行
id -u返回非0,无法执行需要特权的操作 - 能力降级:执行
capsh --print或运行需要NET_ADMIN能力的命令失败 - Seccomp/AppArmor:启用后敏感系统调用被限制,查看事件与日志
注意事项
- AppArmor需在节点内核与CNI支持下生效
- PSA标签需精确配置并与团队协作流程对齐
- 个别镜像可能需要额外权限,应改造镜像降低需求
- 定期合规扫描与演练,确保策略未被绕过

发表评论 取消回复