---

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等级:baselinerestricted,按命名空间标签生效
  • 非root:runAsNonRoot=true runAsUser=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标签需精确配置并与团队协作流程对齐
  • 个别镜像可能需要额外权限,应改造镜像降低需求
  • 定期合规扫描与演练,确保策略未被绕过

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部