Kubernetes 1.37 - 新功能:新增安全防护
Falco Feeds 扩展了 Falco 的能力,为专注于开源的企业提供专家编写的规则,并随新威胁的发现持续更新。

Kubernetes 1.37 刚刚发布,带来了 67 项功能增强。
在安全方面,我们梳理出 19 项与安全相关的变更,涵盖卷挂载的新安全特性、快照改进、webhook 默认启用认证等内容。
让我们一探究竟!
Kubernetes 1.37 中可能造成破坏的安全变更
#1710 加速递归 SELinux 标签修改
SIG 小组: sig-storage
阶段: 升级至 Stable
该功能可加快使用 SELinux 时 PersistentVolumes 的挂载速度。通过在挂载时使用 context 选项,Kubernetes 会将安全上下文应用到整个卷,而不是逐个递归修改文件的上下文。
借助这一优化,集群管理员用 SELinux 加固集群会变得更轻松。
⚠️ 在 Kubernetes 1.37 中,该增强的最后一块拼图 SELinuxMount 升级为 stable,意味着此优化将应用于所有符合条件的卷。在少数情况下,这可能导致问题:具有不同 SELinux 标签或不同权限级别的 Pod 共享同一个卷时。
ℹ️ 更多信息请阅读关于 SELinuxMount 破坏性变更的说明。
ℹ️ 更多内容请参阅 Kubernetes 1.30 - What’s new?
#5343 将 nftables 设为 kube-proxy 的默认后端
SIG 小组: sig-network
#5343 阶段: 全新进入 Alpha
⚠️ 如果你正在此时进行迁移,请确保你的安全工具已覆盖新的配置文件。
相关:此外,在本版本中,ipvs 模式也迈出了其弃用进程的第一步(#5495)。
#140226 Kubelet:静态 Pod 不再能够引用 Secrets 或 ConfigMaps
此前静态 Pod 可以引用 Secrets 或 ConfigMaps 的漏洞现已修复,相关的 PreventStaticPodAPIReferences 功能门控已被移除。
新 API 中暴露的信息
与往常一样,本版本 Kubernetes 带来了若干增强功能,将新数据暴露到 API 中。以下列举部分:
- #1432 PV Health Monitor Alpha
- #5677 DRA: Resource Availability Visibility Alpha
- #5683 Specialized Lifecycle Management Alpha
- #4188 KEP: New kubelet gRPC API with endpoint returning local pods information Beta
- #5304 DRA: Device Attributes in Downward API Beta
- #4680 Add Resource Health Status to the Pod Status for Device Plugin and DRA Stable
- #4817 DRA: Resource Claim Status with possible standardized network interface data Stable
- #5207 metrics.k8s.io API definition Stable
- #5328 Node Declared Features (formerly Node Capabilities) Stable
这些数据通常供集群管理员使用,用于监控集群健康、做出决策或排查问题。
⚠️ 然而,这些额外数据也可能被攻击者用来更好地了解你的基础设施。
✅ 检查谁有权限访问 API,确保他们只能访问所需的数据。
Kubernetes 1.37 新增的安全增强
#4939 支持 gRPC 探测中的 TLS 凭据
SIG 小组: sig-node
阶段: Alpha 新功能
功能门控: GRPCContainerProbeTLS 默认值: false
你的 Kubernetes 1.37 集群将能够原生探测需要 TLS 的 gRPC 健康服务器。此前,你需要通过使用执行命令的 exec 探测来绕过这一限制。
ℹ️ 使用新的 mode 字段:
livenessProbe:
grpc:
port: 8443
mode: TLS#5502 为 emptydir 卷添加 stickyBit 支持
SIG 小组: sig-storage
阶段: Alpha 新功能
功能门控: FOO 默认值: false
此项新增强允许你创建 EmptyDirVolumeSource,并设置介于 0000 到 01777 之间的权限模式,而非默认的 0777。
ℹ️ 使用新的 mode 字段:
volumes:
- name: app-data
emptyDir:
mode: 01777#5823 Pod 级检查点/恢复
SIG 小组: sig-node
阶段: Alpha 新功能
功能门控: PodLevelCheckpointRestore 默认值: false
当前的 Kubelet Checkpoint API 可以为正在运行的容器创建状态副本。然而,Kubernetes 工作负载是由多个容器组合而成的。
现在,集群管理员可以在 Pod 级别创建和恢复 检查点。
这有助于加快启动速度。预期用法是:在 Pod 加载完成后先创建检查点,等下次需要该 Pod 时直接恢复,而不是冷启动。
另一个用例,也是我们收录这个特性的原因,是让集群在故障后更快恢复。恢复时间在安全领域常被忽视,但它其实是韧性的重要组成部分。
ℹ️ 你可以设置在满足特定条件时创建 PodCheckpoint:
apiVersion: checkpoint.k8s.io/v1alpha1
kind: PodCheckpoint
metadata:
name: myapp-snapshot-01
namespace: team-a
status:
nodeName: node-1
checkpointLocation:
type: NodeLocal
nodeLocal:
path: checkpoint-myapp_team-a-2026-05-28T10:14:22Z
checkpointedPodTemplate:
metadata:
labels:
app: myapp
spec:
containers:
- name: app
image: registry.example.com/myapp:v1.4.0
# ...scheduling constraints, resources, and security contexts as captured.
conditions:
- type: Ready
status: "True"
reason: CheckpointCompleted
message: "checkpoint archive written successfully"
observedGeneration: 1然后在 Pod 中使用它。注意其中的 restoreFrom 字段:
apiVersion: v1
kind: Pod
metadata:
name: myapp-restored
namespace: team-a
spec:
restoreFrom: myapp-snapshot-01
# No nodeName: admission injects a required node affinity for the checkpoint's
# node and the scheduler binds the Pod there.
containers:
- name: app
image: registry.example.com/myapp:v1.4.0
# ...rest of spec must match the spec inside myapp-snapshot-01#5855 为 volumeMounts 增加 bind mount 选项(noexec、nodev、nosuid)支持
SIG 组: sig-node
阶段: 首次进入 Alpha
特性开关: VolumeBindMountOptions 默认值: false
这个增强在 volumeMounts 上新增了 bindMountOptions 字段,用于定义 noexec、nodev、nosuid 等安全相关的挂载标志。
ℹ️ 举例来说,你可以给挂载在 /tmp 的卷加上 noexec 标志,阻止攻击者对刚下载的恶意文件执行 chmod +x 使其变成可执行文件——这是一种常见的攻击手法。
volumes:
- name: tmp
emptyDir: {}
containers:
- name: app
volumeMounts:
- name: tmp
mountPath: /tmp
bindMountOptions: [noexec, nosuid]#5936 为原子写入卷添加用户字段
SIG 小组: sig-storage
阶段: 全新引入,Alpha
功能门控: AtomicWriteVolumeUserFields 默认值: false
现在你可以限制原子写入卷(如 ConfigMap、Secret、DownwardAPI 和 Projected volumes)中文件的所有权。
此前在实现 restricted Pod 安全策略的集群中无法做到这一点,而其他场景则需要高维护成本的变通方案。
ℹ️ 注意 user 和 defaultUser 字段:
volumes:
- name: volA
configMap:
defaultUser: 1000
name: cm1
items:
- key: foo // Owner=defaultUser
path: foo
- key: bar // Owner=user
path: bar
user: 1001#5943 卷快照的拓扑支持
SIG 小组: sig-storage
阶段: 全新引入,Alpha
功能门控: VolumeSnapshotTopology 默认值: false
延续灾难恢复的主题,管理员现在可以在卷快照中包含拓扑数据。
这些数据可用于引导快照的存储位置,以符合灾难恢复要求;也可引导恢复过程的位置,从而加快恢复速度。
ℹ️ 拓扑信息定义在 VolumeSnapshotClass 的 allowedTopologies 字段上:
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
name: csi-aws-vsc
driver: ebs.csi.aws.com
deletionPolicy: Delete
allowedTopologies:
- matchLabelE