

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

# EKS 自动模式-安全
<a name="autosecure"></a>

**提示**  
 通过 Amazon EKS 研讨会@@ [探索](https://aws-experience.com/emea/smb/events/series/get-hands-on-with-amazon-eks?trk=4a9b4147-2490-4c63-bc9f-f8a84b122c8c&sc_channel=el)最佳实践。

Amazon EKS 自动模式通过将 AWS 的安全管理扩展到控制平面之外，将工作节点和核心集群组件包括在内，从而引入了增强的安全功能。这种全面的安全模型可帮助组织保持强大的安全态势，同时减少运营开销。

 **责任共担模型-EKS 自动模式** 

![\[责任共担模型-Amazon EKS 自动模式\]](http://docs.aws.amazon.com/zh_cn/eks/latest/best-practices/images/security/SRM-AUTO.png)


EKS 自动模式中的主要安全增强功能包括：
+ 最小的容器优化操作系统，减少了攻击面
+ 通过 EC2 托管实例强制实施安全最佳实践
+ 通过强制节点轮换实现自动安全补丁管理
+ 内置节点隔离和安全边界
+ 简化了 IAM 集成，所需权限最少

默认情况下，EKS Auto Mode 会强制执行这些安全控制，帮助组织满足其安全和合规性要求，同时简化集群操作。这种方法符合 defense-in-depth原则，在基础架构、节点和工作负载级别提供多层安全控制。

**重要**  
虽然 EKS Auto Mode 提供了增强的安全功能，但组织仍应在应用程序层实施适当的安全控制，并遵循集群上运行的工作负载的安全最佳实践。

## 安全架构
<a name="_security_architecture"></a>

EKS Auto Mode 在 EKS 基础设施的多个层面上实施安全控制，从控制平面到单个节点。了解这种架构对于有效管理和保护 EKS 集群至关重要。

### 控制平面安全
<a name="_control_plane_security"></a>

EKS 自动模式下的 EKS 控制平面保持与传统 EKS 集群相同的高安全标准，同时增加了新的安全功能：
+  **信封加密**：所有 Kubernetes API 数据都使用信封加密进行自动加密。
+  **KMS 集成**：将 AWS KMS 与 Kubernetes KMS 提供商 v2 配合使用，可选择 AWS 拥有的密钥或客户管理的密钥 (CMK)。
+  **增强的组件管理**：auto-scaling、ENI 管理和 EBS 控制器等关键组件被移出集群并由 AWS 管理。
+  **改进的安全控制和审计功能**：除了标准 EKS 集群之外，EKS Auto Mode 所需的权限完全通过集群 IAM 角色而不是单个节点角色进行管理。

### IAM 集成和访问管理
<a name="_iam_integration_and_access_management"></a>

EKS 自动模式通过 EKS 访问条目和 EKS Pod 身份增强了与 AWS 身份和访问管理 (IAM) 的集成。

#### 集群访问管理
<a name="_cluster_access_management"></a>

EKS 自动模式通过集群访问管理 (CAM) API 引入了对集群访问管理的改进：
+ 通过以下方式实现标准化身份验证模式 `EKS_API` 
+ 通过基于 API 的访问管理增强安全性
+ 使用访问条目和访问策略简化访问控制

可以创建访问条目来管理集群访问权限：

```
aws eks create-access-entry \
    --cluster-name ${EKS_CLUSTER_NAME} \
    --principal-arn arn:aws:iam::${ACCOUNT_ID}:role/${IAM_ROLE_NAME} \
    --type STANDARD
```

**重要**  
虽然仍然可以创建具有`CONFIG_MAP_AND_API`身份验证模式的 EKS Auto Mode 集群，但这不是标准方法，因此强烈建议对新集群使用默认`API`身份验证模式。 `API`与基于旧版的方法相比，基于身份验证的安全 ConfigMap性更强，访问管理也更简单。

#### EKS 容器组身份
<a name="_eks_pod_identity"></a>

EKS 自动模式附带已部署的 Pod 身份代理，从而可以简化向 Pod 授予 AWS IAM 权限的方法：
+ 无需配置 OIDC 提供商即可简化 IAM 权限管理
+ 与 IRSA 相比，减少了运营开销
+ 通过会话标记和 ABAC 支持增强安全性

```
aws eks create-pod-identity-association \
  --cluster-name ${EKS_CLUSTER_NAME} \
  --role-arn arn:aws:iam::${AWS_ACCOUNT_ID}:role/${IAM_ROLE_NAME} \
  --namespace ${NAMESPACE} \
  --service-account ${SERVICE_ACCOUNT_NAME}
```

**重要**  
Pod Identity 是在 EKS 自动模式下获取 IAM 权限的推荐方法，因为与 IRSA 相比，它提供了增强的安全功能和简化的管理。

#### 节点 IAM 角色
<a name="_node_iam_role"></a>

EKS 自动模式使用新的模式`AmazonEKSWorkerNodeMinimalPolicy`，该模式仅提供 EKS 自动模式节点运行所需的权限。这些权限：
+ 与传统节点策略相比，提供的权限集更少
+ 坚持最低特权原则
+ 由 AWS 自动管理和更新

这种最低限度的策略方法通过限制节点及其工作负载的可用权限来帮助改善安全状况。

### 节点安全
<a name="_node_security"></a>

EKS 自动模式在节点级别引入了几项重要的安全改进：

#### EC2 托管实例安全
<a name="_ec2_managed_instances_security"></a>

EKS 自动模式节点使用具有增强安全属性的 Amazon EC2 托管实例：
+ IAM 强制实施的限制措施可防止可能损害 AWS 节点运行能力的操作
+ 不可变的基础架构模式，其中配置更改需要更换节点
+ 必须在 21 天内更换节点，以确保定期进行安全更新
+ 使用 IMDSv2 受控的跳跃限制限制访问实例元数据

#### 操作系统安全性
<a name="_operating_system_security"></a>

该操作系统是 [Bottlerock](https://aws.amazon.com/bottlerocket/) et 的自定义变体，针对 EKS 自动模式进行了优化，其中包括：
+ 只读根文件系统
+ SELinux 默认启用并使用强制访问控制
+ 使用唯一的 SELinux MCS 标签自动隔离 Pod
+ 已禁用 SSH 访问并删除不必要的服务
+ 通过节点轮换自动修补安全补丁

#### 节点组件安全
<a name="_node_component_security"></a>

节点组件配置了安全最佳实践：
+ Kubelet 配置了安全的默认值
+ 容器运行时强化配置
+ 自动证书管理和轮换
+  node-to-control-plane通信受限

### 网络安全性
<a name="_network_security"></a>

EKS Auto Mode 实现了多项网络安全功能，以确保集群内以及与外部资源的安全通信：

#### VPC CNI 网络策略
<a name="_vpc_cni_network_policy"></a>

EKS 自动模式利用亚马逊 VPC CNI 插件的原生 Kubernetes 网络策略支持：
+ 与上游 Kubernetes 网络策略 API 集成
+ 允许对通信进行精细控制 pod-to-pod
+ 支持入口和出口规则

要在 EKS 自动模式下启用网络策略支持，您需要使用`configMap`清单配置 VPC CNI 插件。示例如下：

```
apiVersion: v1
kind: ConfigMap
metadata:
  name: amazon-vpc-cni
  namespace: kube-system
data:
  enable-network-policy: "true"
```

还需要定义在 Node Class 中配置的网络策略支持，如下所示：

```
apiVersion: eks.amazonaws.com/v1
kind: NodeClass
metadata:
  name: example-node-class
spec:
  networkPolicy: DefaultAllow
  networkPolicyEventLogs: Enabled
```

启用后，您可以创建网络策略来控制流量：

```
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  - Egress
```

#### 增强的 ENI 管理
<a name="_enhanced_eni_management"></a>

EKS 自动模式为弹性网络接口 (ENI) 管理提供了更高的安全性：
+ AWS 托管的 ENI 连接和配置
+ 将控制流量与数据流量分开
+ 自动管理 IP 地址，降低了节点所需的权限

### 存储安全
<a name="_storage_security"></a>

EKS 自动模式为临时存储和永久存储提供了增强的安全功能：

#### 临时存储
<a name="_ephemeral_storage"></a>
+ 写入临时卷的所有数据都会自动加密
+ 使用行业标准的 AES-256 加密算法
+ 该服务可无缝处理加密和解密

#### EBS 卷
<a name="_ebs_volumes"></a>
+ 根卷和数据 EBS 卷始终处于加密状态
+ 卷配置为在实例终止时删除
+ 可以选择指定用于加密的自定义 KMS 密钥

#### EFS 集成
<a name="_efs_integration"></a>
+ 支持通过 EFS 传输中的加密
+ EFS 文件系统的静态自动加密
+ 与 EFS 接入点集成以增强访问控制

**重要**  
在 EKS 自动模式下使用 EFS 时，请确保在 EFS 文件系统级别配置相应的加密设置，因为 EKS 自动模式不会直接管理 EFS 加密。

### 监控和日志记录
<a name="_monitoring_and_logging"></a>

EKS Auto Mode 提供了增强的监控和日志记录功能，可帮助您保持对集群安全状况和运行状况的可见性。

#### 控制层面日志记录
<a name="_control_plane_logging"></a>

EKS Auto Mode 保持与标准 EKS 相同的控制平面日志功能，但是它默认启用所有日志以增强监控。
+ 日志将发送到 Amazon CloudWatch 日志
+ 默认情况下，EKS 自动模式启用所有控制平面日志：API 服务器、审计、身份验证器、控制器管理器和调度器
+ EKS 自动模式可以详细了解集群操作和安全事件

**重要**  
控制平面日志记录会产生额外的日志存储成本。 CloudWatch请仔细考虑您的日志策略，以便在安全需求和成本管理之间取得平衡。

#### 节点级日志
<a name="_node_level_logging"></a>

EKS 自动模式增强了节点级日志记录：
+ 系统日志是自动收集的，可以通过 CloudWatch 日志进行访问
+ 即使在节点终止后仍会保留节点日志，这有助于事后分析
+ 增强了对节点级安全事件和操作问题的可见性

### 亚马逊 GuardDuty 集成
<a name="_amazon_guardduty_integration"></a>

EKS 自动模式集群与 Amazon 无缝集成 GuardDuty ，以增强威胁检测。功能包括：
+ 自动扫描控制平面审计日志
+ 可以为工作负载监控启用的运行时监控
+ 与现有 GuardDuty 发现和警报机制集成

要在 Amazon GuardDuty 上为 Kubernetes 审计日志启用 EKS 自动模式保护，你可以运行以下命令：

```
aws guardduty update-detector \
    --detector-id 12abc34d567e8fa901bc2d34e56789f0 \
    --data-sources '{"Kubernetes":{"AuditLogs":{"Enable":true}}}'
```

#### 运行时安全的 Amazon GuardDuty 集成
<a name="_amazon_guardduty_integration_for_runtime_security"></a>

Amazon 为 EKS 自动模式集群 GuardDuty 提供基本的运行时安全监控，提供全面的威胁检测和安全监控功能。这种集成尤其重要，因为它有助于实时识别潜在的安全威胁和恶意活动。

##### EKS 自动模式的主要 GuardDuty 功能
<a name="_key_guardduty_features_for_eks_auto_mode"></a>
+  **运行时监控**：
  + 持续监控运行时行为
  + 检测恶意或可疑活动
  + 识别潜在的集装箱逃生企图
  + 监控异常流程执行或网络连接
+  **Kubernetes 特定的威胁检测：**
  + 识别可疑的 pod 部署尝试
  + 检测受损的容器
  + 监控特权容器启动
  + 识别可疑的服务账户使用情况
+  **综合发现类型**：
  + 策略:Kubernetes/\$1-检测违反安全最佳实践的行为
  + 影响:Kubernetes/\$1-识别可能受影响的资源
  + 发现:Kubernetes/\$1-检测侦察活动
  + 执行:Kubernetes/\$1-识别可疑的执行模式
  + 持久性：Kubernetes/\$1-检测潜在的持续威胁

要在 Amazon GuardDuty 上为 Kubernetes 审计日志和运行时监控启用 EKS 自动模式保护，您可以运行以下命令：

```
aws guardduty update-detector \
    --detector-id 12abc34d567e8fa901bc2d34e56789f0 \
    --data-sources '{
        "Kubernetes": {
            "AuditLogs": {"Enable": true},
            "RuntimeMonitoring": {"Enable": true}
        }
    }'
```

**重要**  
GuardDuty EKS Auto Mode 集群自动支持运行时监控，无需在节点级别进行额外配置即可提供增强的安全可见性。

##### GuardDuty 调查结果整合
<a name="_guardduty_findings_integration"></a>

GuardDuty 调查结果可以与其他 AWS 服务集成以实现自动响应：
+  **EventBridge 规则：**

```
{
  "source": ["aws.guardduty"],
  "detail-type": ["GuardDuty Finding"],
  "detail": {
    "type": ["Runtime:Container/*", "Runtime:Kubernetes/*"],
    "severity": [4, 5, 6, 7, 8]
  }
}
```
+  S@@ **ecurity Hub 集成**：

```
# Enable Security Hub integration
aws securityhub enable-security-hub \
    --enable-default-standards \
    --tags '{"Environment":"Production"}' \
    --region us-west-2
```

##### GuardDuty 使用 EKS 自动模式的最佳实践
<a name="_best_practices_for_guardduty_with_eks_auto_mode"></a>

1.  **启用所有查找类型**：
   + 同时启用 Kubernetes 审计日志监控和运行时监控
   + 为所有严重性级别配置调查结果

1.  **实现自动响应**：
   + 为高严重性发现创建 EventBridge 规则
   + 与 AWS Security Hub 集成，实现集中式安全管理
   + 在适当的情况下设置自动修复操作

1.  **定期回顾和调整**：
   + 定期审查 GuardDuty 调查结果
   + 根据您的环境调整检测阈值
   + 根据新的查找结果类型更新响应程序

1.  **跨账户管理**：
   + 考虑使用 GuardDuty 管理员帐户进行集中管理
   + 启用跨多个账户的调查结果汇总

**警告**  
虽然 GuardDuty 提供了全面的安全监控，但它应该是包括其他安全控制措施的 defense-in-depth策略的一部分，例如网络策略、Pod 安全标准和适当的 RBAC 配置。

## 常见问题 (FAQ)
<a name="_frequently_asked_questions_faq"></a>

问：EKS 自动模式在安全性方面与标准 EKS 有何不同？ 答：EKS 自动模式通过 EC2 托管实例、自动修补、强制节点轮换和内置安全控制来增强安全性。通过让 AWS 管理更多安全方面，它减少了运营开销，同时保持了强大的安全态势。

问：我还能在 EKS 自动模式下使用现有的安全工具和策略吗？ 答：是的，EKS 自动模式与大多数现有的安全工具和策略兼容。但是，由于 EKS Auto Mode 节点的托管性质，某些节点级安全工具可能需要调整。

问：如何在 EKS 自动模式下部署安全代理和监控工具？ 答：在 EKS 自动模式下，安全代理和监控工具应作为 Kubernetes 工作负载部署（通常 DaemonSets默认在每个节点上部署一个 Pod 实例），而不是直接安装在节点操作系统上。这种方法与 EKS 自动模式的不可变基础架构模型一致。示例：

```
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: security-agent
  namespace: security
spec:
  selector:
    matchLabels:
      app: security-agent
  template:
    metadata:
      labels:
        app: security-agent
    spec:
      containers:
      - name: security-agent
        image: security-vendor/agent:latest
        securityContext:
          privileged: false
          # Use specific capabilities instead of privileged mode
          capabilities:
            add: ["NET_ADMIN", "SYS_ADMIN"]
```

问：第三方安全解决方案是否与 EKS 自动模式兼容？ 答：许多流行的第三方安全解决方案已更新为支持 EKS Auto Mode，但始终建议您向您的安全供应商验证具体版本和部署要求，因为支持 EKS Auto Mode 可能需要更新版本或特定的部署配置。

问：在 EKS 自动模式下，安全代理有哪些限制？ 答：主要限制包括：
+ 无法直接访问修改节点的操作系统
+ 节点轮换之间没有持久性
+ 必须与基于容器的部署兼容
+ 需要尊重节点的不变性
+ 可能需要不同的权限配置
+ 对节点的任何持续更改都应通过`NodePools`和`NodeClasses`资源完成。

**注意**  
虽然 EKS Auto Mode 可能需要调整您的安全工具部署策略，但这些更改通常会使配置更易于维护和安全，符合云原生最佳实践。EKS Auto Mode 预计将完全接管其管理的大部分功能。因此，如果可以的话，您对这些功能所做的任何手动更改都可能被 EKS Auto Mode 覆盖或丢弃。

问：我可以在 EKS 自动模式下 AMIs 使用自定义模式吗？ 答：目前，EKS 自动模式不支持自定义 AMIs。这是设计使然，因为 AWS 将节点的安全、修补和维护作为责任共担模式的一部分进行管理。EKS 自动模式节点使用 Bottlerocket 的特殊变体，该变体由 AWS 优化和维护。

问：在 EKS 自动模式下，节点多久自动旋转一次？ 答：在 EKS 自动模式下，节点的最大生命周期为 21 天。在此限制之前，它们将被自动更换，从而确保定期进行安全更新和补丁应用程序。

问：我能否通过 SSH 连接到 EKS 自动模式节点进行故障排除？ 答：不可以，在 EKS 自动模式下不提供直接 SSH 访问。相反，您可以使用 NodeDiagnostic 自定义资源定义 (CRD) 来收集系统日志和调试信息。

问：在 EKS 自动模式下是否默认启用网络策略支持？ 答：目前，需要通过 VPC CNI 插件配置明确启用网络策略支持。启用后，您可以使用标准的 Kubernetes 网络策略。

问：我应该在 EKS 自动模式下使用 IRSA 还是 Pod Identity？ 答：虽然两者都支持，但在 EKS 自动模式中推荐使用 Pod Identity 方法，因为它已经包含 Pod Identity Security 代理插件，并提供了增强的安全功能和简化的管理。

问：我还能在 EKS 自动模式下使用 aws-auth ConfigMap 吗？ 答：`aws-auth` ConfigMap 这是一项已弃用的功能。建议使用基于 API 的默认身份验证方法，以增强安全性并简化访问管理。

问：如何在 EKS 自动模式下监控安全事件？ 答：EKS 自动模式与多种监控解决方案集成 GuardDuty，包括 CloudWatch、和 CloudTrail。 GuardDuty 专门针对 EKS 工作负载提供增强的运行时安全监控。

问：如何从 EKS 自动模式节点收集日志？ 答：使用 NodeDiagnostic CRD，它会自动将日志上传到 S3 存储桶。您也可以将 Contain CloudWatch er Insights 和 AWS Distro 用于。 OpenTelemetry

**注意**  
随着新功能添加到 EKS Auto Mode 以及我们收到客户的常见问题，本常见问题解答部分会定期更新。