

 **帮助改进此页面** 

要帮助改进本用户指南，请选择位于每个页面右侧窗格中的**在 GitHub 上编辑此页面**链接。

# 查看集群的 Amazon EKS 安全组要求
<a name="sec-group-reqs"></a>

本主题介绍 Amazon EKS 集群的安全组要求。

## 默认集群安全组
<a name="security-group-default-rules"></a>

在创建集群时，Amazon EKS 将创建一个名为 `eks-cluster-sg-my-cluster-uniqueID ` 的安全组。该安全组具有以下默认规则：


| 规则类型 | 协议 | 端口 | 来源 | 目标 | 
| --- | --- | --- | --- | --- | 
|  入站  |  全部  |  全部  |  自身  |  | 
|  出站  |  全部  |  全部  |  |  0.0.0.0/0 (`IPv4`) 或 ::/0 (`IPv6`)  | 
|  出站  |  全部  |  全部  |  |  自身（用于 EFA 流量）  | 

默认安全组包含一条出站规则，该规则允许目标为同一安全组的 Elastic Fabric Adapter（EFA）流量。这将在集群内启用 EFA 流量，有利于 AI/ML 和高性能计算（HPC）工作负载。有关更多信息，请参阅《Amazon Elastic Compute Cloud 用户指南**》中的 [适用于 Amazon EC2 上 AI/ML 和 HPC 工作负载的 Elastic Fabric Adapter](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html)。

**重要**  
如果您的集群不需要指向 `0.0.0.0/0`（IPv4）、`::/0`（IPv6）的出站规则，则可以将其删除。如果将其删除，您仍须遵守[限制集群流量](#security-group-restricting-cluster-traffic)中列出的最少规则。如果您删除允许与集群安全组自身通信的入站或出站规则，Amazon EKS 会在集群更新时重新创建该规则。

Amazon EKS 会向安全组添加以下标签。如果您删除标签，则每当集群更新时，Amazon EKS 都会将其重新向安全组添加标签。


| 键 | 值 | 
| --- | --- | 
|   `kubernetes.io/cluster/my-cluster `   |   `owned`   | 
|   `aws:eks:cluster-name`   |   *my-cluster*   | 
|   `Name`   |   `eks-cluster-sg-my-cluster-uniqueid `   | 

Amazon EKS 会自动将此安全组关联到它还创建的以下资源：
+ 在您创建集群时创建的 2–4 个弹性网络接口（在本文档其余部分中称为*网络接口*）。
+ 您创建的任何托管节点组中节点的网络接口。

默认规则允许所有流量在集群和节点之间自由流动，并允许所有出站流量到任何目的地。在创建集群时，您可以（选择性地）指定您自己的安全组。如果您这样做，那么 Amazon EKS 还会将您指定的安全组与它为集群创建的网络接口关联起来。但是，它不会将它们与您创建的任何节点组关联起来。

您可以在AWS 管理控制台中集群的**联网**部分下，确定您的集群安全组的 ID。或者，您可以使用以下 AWS CLI 命令进行这项操作。

```
aws eks describe-cluster --name my-cluster --query cluster.resourcesVpcConfig.clusterSecurityGroupId
```

## 限制集群流量
<a name="security-group-restricting-cluster-traffic"></a>

如果您需要限制 EKS 控制面板与节点之间的开放端口，则可以删除指向 `0.0.0.0/0`（IPv4）/`::/0`（IPv6）的[默认出站规则](#security-group-default-rules)，并添加集群所需的以下最小规则集。

如果您删除允许源地址为自身（来自集群安全组的流量）的[默认入站规则](#security-group-default-rules)，Amazon EKS 会在集群更新时重新创建该规则。

如果您删除允许目标地址为自身（发往集群安全组的流量）的[默认出站规则](#security-group-default-rules)，Amazon EKS 会在集群更新时重新创建该规则。


| 规则类型 | 协议 | 端口： | 目标 | 
| --- | --- | --- | --- | 
|  出站  |  TCP  |  443  |  集群安全组  | 
|  出站  |  TCP  |  10250  |  集群安全组  | 
|  出站（DNS）  |  TCP 和 UDP  |  53  |  集群安全组  | 

您还必须为以下流量添加规则：
+ 您预计节点要用于节点间通信的任何协议和端口。
+ 出站互联网访问，以便节点可以访问 Amazon EKS API 以在启动时进行集群自检和节点注册。如果您的节点没有互联网访问权限，请查看[部署具有有限互联网访问权限的私有集群](private-clusters.md)了解其它注意事项。
+ 从它们需要从中拉取镜像的 Amazon ECR 或其他容器注册表 API（例如 DockerHub）中拉取容器镜像的节点访问权限。有关更多信息，请参阅AWS一般参考中的[AWS IP 地址范围](https://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html)。
+ 节点访问 Amazon S3。
+ `IPv4` 和 `IPv6` 地址需要单独的规则。
+ 如果您使用的是混合节点，则必须向集群添加额外的安全组，以允许与本地节点和容器组进行通信。有关更多信息，请参阅 [准备混合节点的联网](hybrid-nodes-networking.md)。

如果要考虑限制规则，建议全面测试所有容器组（pod），然后再将更改的规则应用于生产集群。

如果您最初使用了 Kubernetes `1.14` 和 `eks.3` 或更早版本的平台部署了集群，则考虑以下事项：
+ 您可能还拥有控制面板和节点安全组。创建这些组时，它们包括上表中列出的限制规则。这些安全组不再需要，可以删除。但是，您需要确保集群安全组包含这些组所包含的规则。
+ 如果您直接使用 API 部署集群，或者使用 AWS CLI 或 AWS CloudFormation 之类的工具创建集群且在创建集群时您未指定安全组，则 VPC 的默认安全组应用到 Amazon EKS 创建的集群网络接口。

## 共享安全组
<a name="_shared_security_groups"></a>

Amazon EKS 支持共享安全组。
+  **安全组 VPC 关联**将安全组与同一账户和区域中的多个 VPC 关联起来。
  + 在《Amazon VPC 用户指南》**中了解如何[将安全组与多个 VPC关联起来](https://docs.aws.amazon.com/vpc/latest/userguide/security-group-assoc.html)。
+  **共享安全组**允许您与其他 AWS 账户共享安全组。账户必须位于同一 AWS 组织。
  + 在《Amazon VPC 用户指南》**中了解如何[与组织共享安全组](https://docs.aws.amazon.com/vpc/latest/userguide/security-group-sharing.html)。
+ 安全组始终仅限于单个 AWS 区域。

### Amazon EKS 注意事项
<a name="_considerations_for_amazon_eks"></a>
+ EKS 对共享或多 VPC 安全组的要求与标准安全组相同。