

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

# Amazon Fargate （仅限 Amazon ECS）支持的先决条件
<a name="prereq-runtime-monitoring-ecs-support"></a>

本节包含监控 Fargate-Amazon ECS 资源的运行时行为的先决条件。满足这些先决条件后，请参阅[启用 GuardDuty 运行时监控](runtime-monitoring-configuration.md)。

**Topics**
+ [验证架构要求](#validating-architecture-req-ecs)
+ [访问容器映像的先决条件](#before-enable-runtime-monitoring-ecs)
+ [在多账户环境中验证组织服务控制策略](#validate-organization-scp-ecs)
+ [验证角色权限和策略权限边界](#guardduty-runtime-monitoring-ecs-permission-boundary)
+ [CPU 和内存限制](#ecs-runtime-agent-cpu-memory-limits)

## 验证架构要求
<a name="validating-architecture-req-ecs"></a>

您使用的平台可能会影响 GuardDuty 安全代理支持 GuardDuty 从 Amazon ECS 集群接收运行时事件的方式。您必须验证自己使用的是其中一个经过验证的平台。

**初步注意事项：**  
您的亚马逊 ECS 集群的 Amazon Fargate 平台必须是 Linux。相应的平台版本必须至少为 `1.4.0` 或 `LATEST`。有关平台版本的更多信息，请参阅《Amazon Elastic Container Service 开发人员指南》中的 [Linux 平台版本](https://docs.amazonaws.cn/AmazonECS/latest/developerguide/platform-linux-fargate.html)**。  
尚不支持 Windows 平台版本。

### 经过验证的平台
<a name="ecs-verified-platforms-gdu-agent"></a>

操作系统分布和 CPU 架构会影响 GuardDuty安全代理提供的支持。下表显示了用于部署 GuardDuty安全代理和配置运行时监控的经过验证的配置。


| 操作系统分发 **[1](#runtime-monitoring-ecs-os-support)**  | 内核支持 | CPU 架构 x64 () AMD64 | CPU 架构 Graviton () ARM64 | 
| --- | --- | --- | --- | 
| Linux | eBPF、Tracepoints、Kprobe | 支持 | 支持 | <a name="runtime-monitoring-ecs-os-support"></a>

1 Support 支持各种操作系统- GuardDuty 已验证运行时监控支持上表中列出的操作发行版。虽然 GuardDuty 安全代理可以在上表中未列出的操作系统上运行，但该 GuardDuty 团队无法保证预期的安全值。

## 访问容器映像的先决条件
<a name="before-enable-runtime-monitoring-ecs"></a>

以下先决条件可帮助您从 Amazon ECR 存储库访问 GuardDuty 边车容器镜像。

### 权限要求
<a name="ecs-runtime-permissions-requirements"></a>

任务执行角色需要特定的 Amazon Elastic Container Registry (Amazon ECR) 权限才能下载安全代理容器 GuardDuty 镜像：

```
...
      "ecr:GetAuthorizationToken",
      "ecr:BatchCheckLayerAvailability",
      "ecr:GetDownloadUrlForLayer",
      "ecr:BatchGetImage",
...
```

要进一步限制 Amazon ECR 权限，您可以添加托管其 GuardDuty 安全代理的 Amazon ECR 存储库 URI（仅限 Amazon Fargate Amazon ECS）。有关更多信息，请参阅 [Amazon ECR 存储库托管代理 GuardDuty](runtime-monitoring-ecr-repository-gdu-agent.md)。

您可以使用 [Amazon ECSTask ExecutionRolePolicy](https://docs.amazonaws.cn/AmazonECS/latest/developerguide/task_execution_IAM_role.html) 托管策略，也可以将上述权限添加到您的`TaskExecutionRole`策略中。

### 任务定义配置
<a name="ecs-runtime-task-definition"></a>

创建或更新 Amazon ECS 服务时，您需要在任务定义中提供子网信息：

[UpdateService](https://docs.amazonaws.cn/AmazonECS/latest/APIReference/API_UpdateService.html) APIs 在《*亚马逊弹性容器服务 API 参考*》中运行[CreateService](https://docs.amazonaws.cn/AmazonECS/latest/APIReference/API_CreateService.html)和需要您传递子网信息。有关更多信息，请参阅《Amazon Elastic Container Service 开发人员指南》中的 [Amazon ECS 任务定义](https://docs.amazonaws.cn/AmazonECS/latest/developerguide/task_definitions.html)**。

### 网络连接要求
<a name="ecs-runtime-network-requirements"></a>

您必须确保网络连接才能从 Amazon ECR 下载 GuardDuty 容器映像。此要求特定于， GuardDuty 因为它使用 Amazon ECR 来托管其安全代理。需要实施以下操作之一，具体取决于网络配置：

**选项 1：使用公共网络访问（如果可用）**  
如果您的 Fargate 任务在具有出站互联网访问权限的子网中运行，则无需进行额外的网络配置。

**选项 2：使用 Amazon VPC 端点（用于私有子网）**  
如果您的 Fargate 任务在无法访问互联网的私有子网中运行，则必须为 ECR 配置 VPC 终端节点，以确保托管 GuardDuty 安全代理的 ECR 存储库 URI 可通过网络访问。如果没有这些终端节点，私有子网中的任务就无法下载 GuardDuty 容器镜像。  
如需查看 VPC 端点设置说明，请参阅**《Amazon Elastic Container Registry User Guide》中的 [Create the VPC endpoints for Amazon ECR](https://docs.amazonaws.cn/AmazonECR/latest/userguide/vpc-endpoints.html#ecr-setting-up-vpc-create)。

有关启用 Fargate 下载容器的信息，请参阅[亚马逊弹性 GuardDuty 容器注册表用户指南中的将 Amazon ECR 镜像与](https://docs.amazonaws.cn/AmazonECR/latest/userguide/ECR_on_ECS.html) *Ama* zon ECS 配合使用。

### 安全组配置
<a name="ecs-runtime-security-group-requirements"></a>

 GuardDuty 容器镜像存储在 Amazon ECR 中，需要访问 Amazon S3。此要求特定于从 Amazon ECR 下载容器映像。对于网络访问受限的任务，您必须将安全组配置为允许访问 S3。

在您的安全组中添加一条出站规则，允许流量通过端口 443 访问 [S3 托管前缀列表 (`pl-xxxxxxxx`)](https://docs.amazonaws.cn/vpc/latest/privatelink/gateway-endpoints.html#gateway-endpoint-security)。要添加出站规则，请参阅《Amazon VPC 用户指南》**中的[配置安全组规则](https://docs.amazonaws.cn/vpc/latest/userguide/working-with-security-group-rules.html)。

要在控制台中查看您的 Amazon托管前缀列表或使用 Amazon Command Line Interface (Amazon CLI) 对其进行描述，请参阅 Amazon *VPC 用户*[指南中的Amazon托管前缀列表](https://docs.amazonaws.cn/vpc/latest/userguide/working-with-aws-managed-prefix-lists.html)。

## 在多账户环境中验证组织服务控制策略
<a name="validate-organization-scp-ecs"></a>

本节介绍如何验证您的服务控制策略（SCP）设置，以确保运行时监控在整个组织中按预期运行。

如果您设置了一个或多个服务控制策略来管理组织中的权限，必须验证该策略不会拒绝 `guardduty:SendSecurityTelemetry` 操作。有关 SCPs 工作原理的信息，请参阅《*Amazon Organizations 用户指南》*中的 [SCP 评估](https://docs.amazonaws.cn/organizations/latest/userguide/orgs_manage_policies_scps_evaluation.html)。

如果您是成员账户，则连接到关联的委派管理员。有关组织管理 SCPs 的信息，请参阅*《Amazon Organizations 用户指南》*中的[服务控制策略 (SCPs)](https://docs.amazonaws.cn/organizations/latest/userguide/orgs_manage_policies_scps.html)。

对您在多账户环境中设置的所有内容执行以下步骤： SCPs 

**验证在 SCP 中未拒绝 `guardduty:SendSecurityTelemetry`**

1. 登录 Organizations 控制台，网址为[https://console.aws.amazon.com/organizations/](https://console.amazonaws.cn/organizations/)。您必须以 IAM 角色的身份登录，或在组织的管理账户中以根用户的身份登录（[不推荐](https://docs.amazonaws.cn/IAM/latest/UserGuide/best-practices.html#lock-away-credentials)）。

1. 在左侧导航窗格中，选择**策略**。然后，在**支持的策略类型**下，选择**服务控制策略**。

1. 在**服务控制策略**页面上，选择要验证的策略的名称。

1. 在策略详情页面上，查看该策略的**内容**。确保该策略不会拒绝 `guardduty:SendSecurityTelemetry` 操作。

   以下 SCP 策略是*不拒绝* `guardduty:SendSecurityTelemetry` 操作的示例：

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
       "Effect": "Allow",
               "Action": [           
                   "guardduty:SendSecurityTelemetry"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

   如果您的策略拒绝此操作，则必须更新该策略。有关更多信息，请参阅《Amazon Organizations User Guide》**中的 [Update a service control policy (SCP)](https://docs.amazonaws.cn/organizations/latest/userguide/orgs_policies_update.html#update_policy)。

## 验证角色权限和策略权限边界
<a name="guardduty-runtime-monitoring-ecs-permission-boundary"></a>

使用以下步骤验证与角色关联的权限边界及其策略是否**不**限制 `guardduty:SendSecurityTelemetry` 操作。

**查看角色权限边界及其策略**

1. 登录 Amazon Web Services 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/iam/)。

1. 在左侧导航窗格中的**访问权限管理**下，选择**角色**。

1. 在**角色**页面上，选择您已创建的角色 *`TaskExecutionRole`*。

1. 在所选角色页面的**权限**选项卡下，展开与此角色关联的策略名称。然后，确认此策略不限制 `guardduty:SendSecurityTelemetry` 操作。

1. 如果设置了**权限边界**，则展开此部分。然后，展开每项策略，查看其是否不限制 `guardduty:SendSecurityTelemetry` 操作。策略应如 [Example SCP policy](#ecs-runtime-scp-not-deny-policy-example) 所示。

   如有需要，执行以下操作之一：
   + 要修改策略，请选择**编辑**。在此策略的**修改权限**页面上，在**策略编辑器**中更新策略。确保 JSON 架构保持有效。然后选择**下一步**。然后，您可以查看并保存更改。
   + 要更改此权限边界并选择其他边界，请选择**更改边界**。
   + 要移除此权限边界，请选择**移除边界**。

   有关管理策略的更多信息，请参阅《IAM 用户指南》**中的 [Amazon Identity and Access Management中的策略与权限](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies.html)。

## CPU 和内存限制
<a name="ecs-runtime-agent-cpu-memory-limits"></a>

在 Fargate 任务定义中，您必须在任务级别指定 CPU 和内存值。下表显示了任务级 CPU 和内存值的有效组合，以及容器的相应 GuardDuty 安全代理最大内存限制。 GuardDuty 

[\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/guardduty/latest/ug/prereq-runtime-monitoring-ecs-support.html)

启用运行时监控并评估集群的覆盖率状态是否**正常**后，您可以设置和查看 Container Insights 指标。有关更多信息，请参阅 [在 Amazon ECS 集群上设置监控](runtime-monitoring-setting-cpu-mem-monitoring.md#ecs-runtime-cpu-memory-monitoring-agent)。

下一步是配置运行时监控和安全代理。