安全最佳实践 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

安全最佳实践

Amazon EMR on EKS 提供了在您开发和实施自己的安全策略时需要考虑的大量安全功能。以下最佳实践是一般准则,并不代表完整的安全解决方案。由于这些最佳实践可能不适合您的环境或不满足您的环境要求,因此将其视为有用的考虑因素而不是惯例。

采用最低特权原则

Amazon EMR on EKS 为使用 IAM 角色(如执行角色)的应用程序提供了精细的访问策略。这些执行角色通过 IAM 角色的信任策略映射到 Kubernetes 服务账户。Amazon EMR on EKS 在已注册的 Amazon EKS 命名空间中创建 Pod,用于执行用户提供的应用程序代码。运行应用程序代码的任务 Pod 在连接到其他Amazon服务时代入执行角色。我们建议向执行角色仅授予任务所需的最低权限集,例如覆盖应用程序和对日志目标的访问权限。我们还建议定期以及在应用程序代码发生变化时审核任务的权限。

终端节点的访问控制列表

只能为已配置的 EKS 集群创建托管式终端节点,以至少在 VPC 的私有子网上使用。此配置限制对托管式终端节点创建的负载均衡器的访问,以便只能从您的 VPC 访问它们。为了进一步增强安全性,我们建议您使用这些负载均衡器配置安全组,以便它们可以将传入流量限制到一组选定的 IP 地址。

获取自定义镜像的最新安全更新

要通过 Amazon EMR on EKS 使用自定义镜像,您可以在镜像上安装任何二进制文件和库。您负责添加到镜像中的二进制文件的安全修补。Amazon EMR on EKS 镜像会使用最新的安全补丁程序进行定期修补。要获取最新镜像,您必须在 Amazon EMR 的新基础镜像版本发布时重新构建自定义镜像。有关更多信息,请参阅Amazon EMR on EKS 发行版如何选择基础镜像 URI

限制 Pod 凭证访问

Kubernetes 支持将凭证分配给 Pod 的多种方法。预置多个凭证提供程序可能会增加您安全模型的复杂性。Amazon EMR on EKS 已采用服务账户的 IAM 角色(IRSA)作为注册 EKS 命名空间中的标准凭证提供程序。不支持其他方法,包括 kube2iamkiam 并使用 EC2 实例的实例配置文件在集群上运行。

隔离不受信任的应用程序代码

Amazon EMR on EKS 不检查系统用户提交应用程序代码的完整性。如果您运行的多租户虚拟集群是使用多个执行角色进行配置的,而运行任意代码的不受信任的租户可使用这些角色来提交任务,则会存在恶意应用程序升级其权限的风险。在这种情况下,请考虑将具有相似权限的执行角色隔离到不同的虚拟集群中。

基于角色的访问控制(RBAC)权限

管理员应针对 Amazon EMR on EKS 托管式命名空间,来严格控制基于角色的访问控制(RBAC)权限。至少不应向 Amazon EMR on EKS 托管式命名空间中的任务提交者授予以下权限。

  • Kubernetes RBAC 具有修改 configmap 的权限,因为 Amazon EMR on EKS 使用 Kubernetes configmaps 来生成具有托管式服务账户名称的托管式 Pod 模板。此属性应不可变。

  • Kubernetes RBAC 具有可执行 Amazon EMR on EKS Pod 的权限,以避免对具有托管 SA 名称的托管 Pod 模板授予访问权限。此属性应不可变。此权限还可对挂载到 Pod 中的 JWT 令牌授予访问权限,然后可使用该令牌检索执行角色凭证。

  • Kubernetes RBAC 具有创建 Pod 的权限,以防止用户使用 Kubernetes ServiceAccount 创建 Pod,此 ServiceAccount 可能映射到具有更多Amazon权限的 IAM 角色而不是用户。

  • Kubernetes RBAC 具有部署变异 Webhook 的权限,以防止用户使用变异 Webhook 来改变由 Amazon EMR on EKS 创建的 Pod 的 Kubernetes ServiceAccount 名称。

  • Kubernetes RBAC 具有读取 Kubernetes 机密信息的权限,以防止用户读取存储在这些机密中的机密性数据。

限制对节点组 IAM 角色或实例配置文件凭证的访问

  • 建议您为节点组的 IAM 角色分配最小Amazon权限。通过使用 EKS 工作线程节点的实例配置文件凭证所运行的代码,这有助于避免权限升级。

  • 要完全阻止对 Amazon EMR on EKS 托管式命名空间中运行的所有 Pod 的实例配置文件凭证的访问,我们建议您在 EKS 节点上运行 iptables 命令。有关更多信息,请参阅限制对 Amazon EC2 实例配置文件凭证的访问。但是,正确确定服务账户 IAM 角色的范围非常重要,以便您的 Pod 具有所有必要的权限。例如,为节点 IAM 角色分配了从 Amazon ECR 提取容器镜像的权限。如果未向某个 Pod 分配这些权限,则该 Pod 无法从 Amazon ECR 提取容器镜像。VPC CNI 插件也需要更新。有关更多信息,请参阅演练:更新 VPC CNI 插件以便为服务账户使用 IAM 角色