Amazon EKS 安全组注意事项 - Amazon EKS

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon EKS 安全组注意事项

以下部分介绍了集群、控制层面和集群的节点安全组建议或所需的最小安全组设置。这些注意事项取决于您使用的 Kubernetes 版本和 Amazon EKS 平台版本。

集群安全组

Amazon EKS 集群,从 Kubernetes 版本 1.14 和平台版本 eks.3中,将在创建集群安全组时创建集群安全组。当较早版本的群集升级到此 Kubernetes 版本和平台版本时,也会发生这种情况。集群安全组旨在允许来自控制层面和托管节点组在彼此之间自由流动。通过将集群安全组分配给 Amazon EKS 创建的弹性网络接口,从而允许控制层面与托管节点组实例进行通信,您无需配置复杂的安全组规则即可允许此通信。分配到此安全组的任何实例或网络接口都可以与此安全组的其他资源自由通信。

您可以在中为集群检查集群安全组。AWS Management Console在群集的联网部分,或者使用以下AWSCLI 命令:

aws eks describe-cluster --name <cluster_name> --query cluster.resourcesVpcConfig.clusterSecurityGroupId

建议您将集群安全组添加到所有现有节点组和未来节点组。有关更多信息,请参阅 。您的 VPC 的安全组中的Amazon VPC 用户指南。Amazon EKS托管节点组将自动配置为使用集群安全组。

协议 端口 目的地

推荐入站流量

全部

全部

自身

推荐出站流量

全部

全部

0.0.0.0/0

限制群集流量

如果需要限制控制平面和节点之间的开放端口,则可以修改默认群集安全组,以便仅允许以下所需的最小端口。所需的最低端口与以前 Amazon EKS 版本中的端口相同。

协议 端口 目的地
最小入站流量 TCP

443

集群安全组
最小入站流量 * TCP

10250

集群安全组
最小出站流量 TCP

443

集群安全组

最小出站流量* TCP

10250

集群安全组

* 如果需要,您希望节点用于节点间通信的任何协议和端口都应包括在内。节点还需要到 Amazon EKS API 的出站 Internet 访问,以便在启动时进行集群自检和节点注册,或者您在私有集群。要提取容器映像,他们需要访问 Amazon S3、Amazon ECR API 和他们需要从中提取映像的任何其他容器注册表,例如 DockerHub。有关更多信息,请参阅 。AWSIP 地址范围中的AWS一般参考。

控制平面和节点安全组

对于 Amazon EKS 集群,而且在 Kubernetes 版本 1.14 以前创建的 Amazon EKS 集群,平台版本 eks.3,控制平面到节点的通信是通过手动创建控制层面安全组并在创建集群时指定该安全组来配置的。在集群创建时,此安全组随后附加到 Amazon EKS 创建的网络接口,从而允许控制层面与节点之间进行通信。这些网络接口Amazon EKS <cluster name>(在描述中)。

注意

如果您直接使用 API,或者使用AWS CloudFormation创建集群,而未指定安全组,则 VPC 的默认安全组会应用到控制层面跨账户网络接口。

您可以在AWS Management Console在群集的联网部分(列为其他安全组),或使用以下AWSCLI 命令:

aws eks describe-cluster --name <cluster_name> --query cluster.resourcesVpcConfig.securityGroupIds

如果您使用AWS CloudFormation中的Amazon EKS 入门演练,AWS CloudFormation修改控制平面安全组以允许与节点进行通信。Amazon EKS 强烈建议您为每个控制层面使用专用安全组(每个集群一个)。如果您与其他 Amazon EKS 集群或资源共用控制平面安全组,您可以阻止或中断与这些资源的连接。

已设置节点的安全组以及控制层面与节点之间的通信,以防止与节点中的特权端口进行通信。如果您的应用程序需要从控制层面或节点添加的入站或出站访问,则必须将这些规则添加到与您的集群关联的安全组。有关更多信息,请参阅 。您的 VPC 的安全组中的Amazon VPC 用户指南

注意

要允许特权端口上的代理功能或要自行运行 CNCF 符合性测试,必须编辑控制层面和节点的安全组。节点端面的安全组需要允许从控制层面访问端口 0-65535,而且控制层面侧需要允许出站访问端口 0-65535 上的节点。

控制层面安全组
协议 端口范围 目的地
最小入站流量

TCP

443

所有节点安全组

何时集群终端节点私有访问已启用: 生成 API 服务器客户端流量的任何安全组(例如kubectl命令 VPC

推荐入站流量

TCP

443

所有节点安全组

何时集群终端节点私有访问已启用: 生成 API 服务器客户端流量的任何安全组(例如kubectl命令 VPC

最小出站流量

TCP

10250

所有节点安全组

推荐出站流量

TCP

1025-65535

所有节点安全组

节点安全组
协议 端口范围 目的地
最小入站流量 (来自其他节点)

您预计节点要用于节点间通信的任何协议

您预计节点要用于节点间通信的任何端口

所有节点安全组

最小入站流量 (来自控制层面)

TCP

10250

控制层面安全组

推荐入站流量

全部

TCP

全部

443,1025-65535

所有节点安全组

控制层面安全组

最小出站流量*

TCP

443

控制层面安全组

推荐出站流量

全部

全部

0.0.0.0/0

* 节点还需要访问 Amazon EKS API,以便在启动时通过 Internet 或 VPC 终端节点进行集群自检和节点注册。要提取容器映像,它们需要访问 Amazon S3 和 Amazon ECR API(以及任何其他容器注册表,如 DockerHub)。有关更多信息,请参阅 。AWSIP 地址范围中的AWS一般参考私有集群

与节点关联的一个安全组(也只有一个)应应用以下标记:有关标记的更多信息,请参阅通过控制台使用标签

密钥

kubernetes.io/cluster/<cluster-name>

owned