容器组(pod)安全策略 (PSP) 移除常见问题 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

帮助改进此页面

想为本用户指南做出贡献? 滚动到页面底部,然后选择在 GitHub 上编辑此页面。您的贡献有助于我们的用户指南为每个人提供更充分的参考。

容器组(pod)安全策略 (PSP) 移除常见问题

PodSecurityPolicy 已在 Kubernetes1.21 中弃用,并且已在 Kubernetes1.25 中移除。如果您在集群中使用 PodSecurityPolicy,则必须先迁移到内置的 Kubernetes 容器组(pod)安全标准 (PSS) 或策略即代码解决方案,然后再将集群升级到版本 1.25,以避免工作负载中断。选择任何常见问题以了解更多信息。

PodSecurityPolicy 是一个内置的准入控制器,集群管理员可以用它控制 Pod 规范的安全敏感方面。如果某个 Pod 满足其 PSP 的要求,则该 Pod 会像往常一样被准许进入集群。如果某个 Pod 不符合 PSP 要求,则该 Pod 会被拒绝并且无法运行。

这是 Kubernetes 项目的上游更改,而不是 Amazon EKS 中的更改。PSP 已在 Kubernetes 1.21 中弃用并在 Kubernetes 1.25 中移除。Kubernetes 社区发现了严重的 PSP 可用性问题。其中包括意外授予比预期更广泛的权限,以及难以检查在给定情况下哪个 PSPs 适用。如果不进行重大更改,则无法解决这些问题。这是 Kubernetes 社区决定移除 PSP 的主要原因。

要确定自己是否在集群中使用 PSPs,您可以运行以下命令:

kubectl get psp

要查看您的集群中的 PSPs 影响的 Pods,请运行以下命令。此命令输出 Pod 名称、命名空间和 PSPs:

kubectl get pod -A -o jsonpath='{range.items[?(@.metadata.annotations.kubernetes\.io/psp)]}{.metadata.name}{"\t"}{.metadata.namespace}{"\t"}{.metadata.annotations.kubernetes\.io/psp}{"\n"}'

在将集群升级到 1.25 之前,您必须将您的 PSPs 迁移到以下任一备选方案:

  • Kubernetes PSS.

  • 来自 Kubernetes 环境的策略即代码解决方案。

为了应对 PSP 弃用以及从一开始就控制 Pod 安全的持续需求,Kubernetes 社区创建了一个包含(PSS)容器组(pod)安全准入(PSA)的内置解决方案。PSA Webhook 实施 PSS 中定义的控件。

您可以查看 EKS 最佳实践指南中的将 PSPs 迁移到内置的 PSS 的最佳实践。我们还建议您阅读关于在 Amazon EKS 中实施容器组(pod)安全标准的博客。其他参考资料包括从 PodSecurityPolicy 迁移到内置的 PodSecurity 准入控制器以及将 PodSecurityPolicies 映射到容器组(pod)安全标准

策略即代码解决方案提供防护机制来指导集群用户,并通过规定的自动控件来防止不需要的行为。策略即代码解决方案通常使用 Kubernetes 动态准入控制器通过 Webhook 调用截获 Kubernetes API 服务器请求流。策略即代码解决方案根据以代码形式编写和存储的策略对请求有效负载进行更改和验证。

有几种开源策略即代码解决方案可供 Kubernetes 使用。要查看将 PSPs 迁移到策略即代码解决方案的最佳实践,请参阅 GitHub 上容器组(pod)安全页面的策略即代码部分。

带 Kubernetes 版本 1.13 或更高版本的 Amazon EKS 集群具有名为 eks.privileged 的默认 PSP。此策略在 1.24 及更早版本的集群中创建。它不在 1.25 及更高版本的集群中使用。Amazon EKS 会自动将此 PSP 迁移到基于 PSS 的强制实施中。您无需执行任何操作。

不会。除了 eks.privileged(由 Amazon EKS 创建的 PSP)之外,升级到 1.25 时,不会对集群中的其他 PSPs 进行任何更改。

不会。如果您尚未迁移出 PSP,Amazon EKS 将不会阻止集群更新到版本 1.25

当包含 PSP 的集群升级到 Kubernetes 版本 1.25 时,API 服务器不会识别 1.25 中的 PSP 资源。这可能会导致 Pods 获得错误的安全范围。有关含义的详尽列表,请参阅从 PodSecurityPolicy 迁移到内置的 PodSecurity Admission 准入控制器

我们预计不会对 Windows 工作负载产生任何特定影响。PodSecurityContext 在适用于 Windows Pods 的 PodSpec v1 API 中有一个名为 windowsOptions 的字段。这会使用 Kubernetes 1.25 中的 PSS。有关强制执行 Windows 工作负载的 PSS 的更多信息和最佳实践,请参阅 EKS 最佳实践指南和 Kubernetes 文档