Amazon EKS 安全组要求和注意事项
本主题介绍 Amazon EKS 集群的安全组要求。
在创建集群时,Amazon EKS 将创建一个名为 eks-cluster-sg-
的安全组。该安全组具有以下默认规则:my-cluster
-uniqueID
Rule type | 协议 | 端口 | 源 | 目标位置 |
---|---|---|---|---|
入站 |
全部 |
全部 |
自身 | |
出站 |
全部 |
全部 |
0.0.0.0/0( |
重要
如果您的集群不需要出站规则,则可以将其删除。如果将其删除,您仍须遵守限制集群流量中列出的最少规则。如果您删除入站规则,则每当集群更新时,Amazon EKS 都会重新创建该规则。
Amazon EKS 会向安全组添加以下标签。如果您删除标签,则每当集群更新时,Amazon EKS 都会将其重新向安全组添加标签。
键 | 值 |
---|---|
kubernetes.io/cluster/ |
owned |
aws:eks:cluster-name |
|
Name |
eks-cluster-sg- |
Amazon EKS 会自动将此安全组关联到它还创建的以下资源:
-
在您创建集群时创建的 2–4 个弹性网络接口(在本文档其余部分中称为网络接口)。
-
您创建的任何托管节点组中节点的网络接口。
默认规则允许所有流量在集群和节点之间自由流动,并允许所有出站流量到任何目的地。在创建集群时,您可以(选择性地)指定您自己的安全组。如果您这样做,那么 Amazon EKS 还会将您指定的安全组与它为集群创建的网络接口关联起来。但是,它不会将它们与您创建的任何节点组关联起来。
您可以在AWS Management Console中集群的 Networking(联网)部分下,确定您的集群安全组的 ID。或者,您可以使用以下 AWS CLI 命令进行这项操作。
aws eks describe-cluster --name
my-cluster
--query cluster.resourcesVpcConfig.clusterSecurityGroupId
限制集群流量
如果您需要限制集群与节点之间的开放端口,则可以删除默认出站规则并添加集群所需的以下最少规则。如果您删除默认入站规则,则每当集群更新时,Amazon EKS 都会重新创建该规则。
Rule type | 协议 | 端口 | 目标位置 |
---|---|---|---|
出站 | TCP |
443 |
集群安全组 |
出站 | TCP |
10250 |
集群安全组 |
出站(DNS) | TCP 和 UDP | 53 | 集群安全组 |
您还必须为以下流量添加规则:
-
您预计节点要用于节点间通信的任何协议和端口。
-
出站互联网访问,以便节点可以访问 Amazon EKS API 以在启动时进行集群自检和节点注册。如果您的节点没有互联网访问权限,请查看 私有集群要求 了解其他注意事项。
-
从 Amazon ECR 或要从中拉取映像的其他容器注册表 API(例如 DockerHub)中拉取容器映像的节点访问权限。有关更多信息,请参阅 AWS 一般参考 中的 AWS IP 地址范围。
-
节点访问 Amazon S3。
-
IPv4
和IPv6
地址需要单独的规则。
如果您考虑限制规则,我们建议您彻底测试您的所有 Pods,然后再将更改的规则应用于生产集群。
如果您最初使用 Kubernetes 1.14
和 eks.3
或更早版本的平台部署集群,则考虑以下事项:
-
您可能还拥有控制面板和节点安全组。创建这些组时,它们包括上表中列出的限制规则。这些安全组不再需要,可以删除。但是,您需要确保集群安全组包含这些组所包含的规则。
-
如果您直接使用 API 部署集群,或者使用 AWS CLI 或 AWS CloudFormation 之类的工具创建集群且在创建集群时您未指定安全组,则 VPC 的默认安全组应用到 Amazon EKS 创建的集群网络接口。