概述目标:以PSA与安全上下文约束Pod权限与宿主机交互,构建默认受限的安全基线。适用:生产集群多命名空间治理、敏感服务隔离、合规要求。核心与实战命名空间启用PSA受限:apiVersion: v1
kind: Namespace
metadata:
name: prod
labels:
pod-security.kubernetes.io/enforce: restricted
pod-security.kubernetes.io/enforce-version: v1.29
安全上下文示例:apiVersion: apps/v1
kind: Deployment
metadata:
name: api
namespace: prod
spec:
replicas: 2
selector:
matchLabels: { app: api }
template:
metadata:
labels: { app: api }
spec:
securityContext:
seccompProfile:
type: RuntimeDefault
containers:
- name: api
image: repo/api:1.0
securityContext:
runAsNonRoot: true
allowPrivilegeEscalation: false
capabilities:
drop: ["ALL"]
readOnlyRootFilesystem: true
ports:
- containerPort: 8080
示例应用并验证:kubectl apply -f ns-prod.yaml
kubectl apply -f deploy-api.yaml
kubectl -n prod describe pod -l app=api | findstr -i SecurityContext
不合规示例被拒:apiVersion: v1
kind: Pod
metadata:
name: bad
namespace: prod
spec:
containers:
- name: c
image: alpine
securityContext:
privileged: true
验证与监控审计与事件:检查`kubectl events -n prod`中被拒事件;启用审计日志记录PSA决策。配置一致性:使用`kubectl diff`比较变更;在GitOps中设定受限策略为默认。运行时强化:结合Cilium/Kyverno补充细粒度策略与准入控制。常见误区仅设置命名空间标签未在工作负载中设定安全上下文;需双管齐下。设置`readOnlyRootFilesystem`后未配置写入目录挂载导致运行失败;需将可写路径挂载到临时卷。误用`privileged`或过多capabilities;应默认`drop ALL`并按需最小添加。结语PSA与安全上下文形成强有力的最小权限基线,通过验证与审计可在生产持续提升安全治理水平。

发表评论 取消回复