

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

# 适用于 Amazon ECS 的 Security Hub CSPM 控件
<a name="ecs-controls"></a>

这些 Security Hub CSPM 控件评估亚马逊弹性容器服务 (Amazon ECS) 的服务和资源。这些控件可能并非全部可用 AWS 区域。有关更多信息，请参阅 [按地区划分的控件可用性](securityhub-regions.md#securityhub-regions-control-support)。

## [ECS.1] Amazon ECS 任务定义应具有安全的联网模式和用户定义
<a name="ecs-1"></a>

**重要**  
Security Hub CSPM 于 2026 年 3 月取消了该控制权。有关更多信息，请参阅 [Security Hub CSPM 控件的更改日志](controls-change-log.md)。您可以参考以下控件来评估特权配置、网络模式配置和用户配置：  
 [[ECS.4] ECS 容器应以非特权身份运行](#ecs-4) 
 [[ECS.17] ECS 任务定义不应使用主机网络模式](#ecs-17) 
 [[ECS.20] ECS 任务定义应在 Linux 容器定义中配置非 root 用户](#ecs-20) 
 [[ECS.21] ECS 任务定义应在 Windows 容器定义中配置非管理员用户](#ecs-21) 

**相关要求：** NIST.800-53.r5 AC-2(1)、 NIST.800-53.r5 AC-3、 NIST.800-53.r5 AC-3 (15)、 NIST.800-53.r5 AC-3 (7) NIST.800-53.r5 AC-5、 NIST.800-53.r5 AC-6

**类别：**保护 > 安全访问管理

**严重性：**高

**资源类型：**`AWS::ECS::TaskDefinition`

**AWS Config 规则：**[https://docs.aws.amazon.com/config/latest/developerguide/ecs-task-definition-user-for-host-mode-check.html](https://docs.aws.amazon.com/config/latest/developerguide/ecs-task-definition-user-for-host-mode-check.html)

**计划类型：**已触发变更

**参数：**
+ `SkipInactiveTaskDefinitions`：`true`（不可自定义）

此控件检查主机联网模式下的活动 Amazon ECS 任务定义是否具有 `privileged` 或 `user` 容器定义。对于具有主机网络模式和容器定义为 `privileged=false`、空或 `user=root` 的任务定义，控制失败。

此控件仅评估 Amazon ECS 任务定义的最新活动版本。

此控件的目的是确保在运行使用主机网络模式的任务时有意定义访问。如果任务定义具有更高的权限，那是因为您选择了该配置。当任务定义启用了主机网络并且您未选择更高的权限时，此控件会检查意外的权限升级。

### 修复
<a name="ecs-1-remediation"></a>

有关如何更新任务定义的信息，请参阅 *Amazon Elastic Container Service 开发人员指南* 中的[更新任务定义](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/update-task-definition.html)。

当您更新任务定义时，它不会更新从先前任务定义启动的正在运行的任务。要更新正在运行的任务，您必须使用新任务定义重新部署该任务。

## [ECS.2] ECS 服务不应自动分配公有 IP 地址
<a name="ecs-2"></a>

**相关要求：** NIST.800-53.r5 AC-21、 NIST.800-53.r5 AC-3、 NIST.800-53.r5 AC-3 (7)、 NIST.800-53.r5 AC-4 (21) NIST.800-53.r5 AC-4、、、(11) NIST.800-53.r5 AC-6 NIST.800-53.r5 SC-7、 NIST.800-53.r5 SC-7 (16)、 NIST.800-53.r5 SC-7 (20)、 NIST.800-53.r5 SC-7 (21)、 NIST.800-53.r5 SC-7 (3)、(4)、 NIST.800-53.r5 SC-7 NIST.800-53.r5 SC-7 (9)、 NIST.800-53.r5 SC-7 PCI DSS v4.0.1/1.4.4

**类别：**保护 > 安全网络配置 > 不公开访问的资源

**严重性：**高

**资源类型：**`AWS::ECS::Service`

**AWS Config 规则:**`ecs-service-assign-public-ip-disabled`（自定义 Security Hub CSPM 规则）

**计划类型：**已触发变更

**参数：**无

此控件检查 Amazon ECS 服务是否配置为自动分配公有 IP 地址。如果 `AssignPublicIP` 是 `ENABLED`，则控制失败。如果 `AssignPublicIP` 是 `DISABLED`，则此控件通过。

公有 IP 地址是指可通过 Internet 访问的 IP 地址。如果您使用公有 IP 地址启动 Amazon ECS 实例，则可以通过 Internet 访问 Amazon ECS 实例。Amazon ECS 服务不应公开访问，因为这可能会允许对容器应用程序服务器进行意外访问。

### 修复
<a name="ecs-2-remediation"></a>

首先，您必须为您的集群创建一个任务定义，该集群使用 `awsvpc` 网络模式并为 `requiresCompatibilities` 指定 **FARGATE**。然后，对于**计算配置**，请选择**启动类型**和 **FARGATE**。最后，对于**网络**字段，请关闭**公有 IP** 以禁用服务的公有 IP 自动分配。

## [ECS.3] ECS 任务定义不应共享主机的进程命名空间
<a name="ecs-3"></a>

**相关要求：** NIST.800-53.r5 CA-9(1)、nist.800-53.r5 CM-2

**类别：**识别 > 资源配置

**严重性：**高

**资源类型：**`AWS::ECS::TaskDefinition`

**AWS Config 规则：**[https://docs.aws.amazon.com/config/latest/developerguide/ecs-task-definition-pid-mode-check.html](https://docs.aws.amazon.com/config/latest/developerguide/ecs-task-definition-pid-mode-check.html)

**计划类型：**已触发变更

**参数：**无

此控件检查 Amazon ECS 任务定义是否配置为与其容器共享主机的进程命名空间。如果任务定义与其上运行的容器共享主机的进程命名空间，则控制失败。此控件仅评估 Amazon ECS 任务定义的最新活动版本。

进程 ID（PID）命名空间提供了进程之间的分离。它可以防止系统进程可见，并 PIDs 允许重复使用，包括 PID 1。如果主机的 PID 命名空间与容器共享，则容器可以看到主机系统上的所有进程。这降低了主机和容器之间进程级分离的好处。这些情况可能导致未经授权访问主机本身的进程，包括操纵和终止这些进程的能力。客户不应与其上运行的容器共享主机的进程命名空间。

### 修复
<a name="ecs-3-remediation"></a>

要对任务定义进行配置，请参阅 `pidMode` Amazon Elastic Container Service 开发人员指南中的[任务定义参数](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#task_definition_pidmode)。

## [ECS.4] ECS 容器应以非特权身份运行
<a name="ecs-4"></a>

**相关要求：** NIST.800-53.r5 AC-2(1)、 NIST.800-53.r5 AC-3、 NIST.800-53.r5 AC-3 (15)、 NIST.800-53.r5 AC-3 (7) NIST.800-53.r5 AC-5、 NIST.800-53.r5 AC-6

**类别：**保护 > 安全访问管理 >根用户访问限制

**严重性：**高

**资源类型：**`AWS::ECS::TaskDefinition`

**AWS Config 规则：**[https://docs.aws.amazon.com/config/latest/developerguide/ecs-containers-nonprivileged.html](https://docs.aws.amazon.com/config/latest/developerguide/ecs-containers-nonprivileged.html)

**计划类型：**已触发变更

**参数：**无

此控件检查 Amazon ECS 任务定义的容器定义中的 `privileged` 参数是否设置为 `true`。如果此参数等于，则控制失败`true`。此控件仅评估 Amazon ECS 任务定义的最新活动版本。

我们建议您从 ECS 任务定义中删除提升权限。当权限参数为 `true` 时，容器被赋予对宿主容器实例的提升权限（类似于根用户）。

### 修复
<a name="ecs-4-remediation"></a>

要配置任务定义的 `privileged` 参数，请参阅 Amazon Elastic Container Service 开发人员指南中的[高级容器定义参数](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#container_definition_security)。

## [ECS.5] ECS 任务定义应将容器配置为仅限于对根文件系统的只读访问权限
<a name="ecs-5"></a>

**相关要求：** NIST.800-53.r5 AC-2(1) NIST.800-53.r5 AC-3、 NIST.800-53.r5 AC-3 (15)、 NIST.800-53.r5 AC-3 (7)、 NIST.800-53.r5 AC-5、 NIST.800-53.r5 AC-6

**类别：**保护 > 安全访问管理

**严重性：**高

**资源类型：**`AWS::ECS::TaskDefinition`

**AWS Config 规则：**[https://docs.aws.amazon.com/config/latest/developerguide/ecs-containers-readonly-access.html](https://docs.aws.amazon.com/config/latest/developerguide/ecs-containers-readonly-access.html)

**计划类型：**已触发变更

**参数：**无

此控件检查 ECS 任务定义是否将容器配置为仅限对已安装的根文件系统的只读访问权限。如果 ECS 任务定义的容器定义中的`readonlyRootFilesystem`参数设置为`false`，或者任务定义中的容器定义中不存在该参数，则控制失败。此控件仅评估 Amazon ECS 任务定义的最新活跃版本。

如果在 Amazon ECS 任务定义中将 `readonlyRootFilesystem` 参数设置为 `true`，则 ECS 容器将获得对其根文件系统的只读访问权限。这样可减少安全攻击向量，因为如果没有对文件系统文件夹和目录具有读写权限的显式卷挂载，就无法篡改或写入容器实例的根文件系统。启用此选项还遵循最低权限原则。

**注意**  
Windows 容器不支持该`readonlyRootFilesystem`参数。`runtimePlatform`配置为指定`WINDOWS_SERVER`操作系统系列的任务定义被标记为`NOT_APPLICABLE`且不会生成此控件的调查结果。

### 修复
<a name="ecs-5-remediation"></a>

要授予 Amazon ECS 容器对其根文件系统的只读访问权限，请将 `readonlyRootFilesystem` 参数添加到容器的任务定义，并将该参数的值设置为 `true`。有关任务定义参数以及如何将其添加到任务定义中的信息，请参阅《Amazon Elastic Container Service 开发人员指南》**中的 [Amazon ECS 任务定义](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html)和[更新任务定义](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/update-task-definition-console-v2.html)。

## [ECS.8] 密钥不应作为容器环境变量传递
<a name="ecs-8"></a>

**相关要求：** NIST.800-53.r5 CA-9(1)、nist.800-53.r5 CM-2、PCI DSS v4.0.1/8.6.2

**类别：**保护 > 安全开发 > 凭证未硬编码

**严重性：**高

**资源类型：**`AWS::ECS::TaskDefinition`

**AWS Config 规则：**[https://docs.aws.amazon.com/config/latest/developerguide/ecs-no-environment-secrets.html](https://docs.aws.amazon.com/config/latest/developerguide/ecs-no-environment-secrets.html)

**计划类型：**已触发变更

**参数：**`secretKeys`：`AWS_ACCESS_KEY_ID`、`AWS_SECRET_ACCESS_KEY`、`ECS_ENGINE_AUTH_DATA`（不可自定义） 

此控件检查容器定义 `environment` 参数中任何变量的键值是否包括 `AWS_ACCESS_KEY_ID`、`AWS_SECRET_ACCESS_KEY` 或 `ECS_ENGINE_AUTH_DATA`。如果任何容器定义中的单个环境变量等于 `AWS_ACCESS_KEY_ID`、`AWS_SECRET_ACCESS_KEY` 或 `ECS_ENGINE_AUTH_DATA`，则此控制失败。此控件不包括从其他位置（例如 Amazon S3）传入的环境变量。此控件仅评估 Amazon ECS 任务定义的最新活动版本。

AWS Systems Manager Parameter Store 可以帮助您改善组织的安全状况。我们建议使用 Parameter Store 存储密钥和凭证，而不是直接将其传递到容器实例或将其硬编码到代码中。

### 修复
<a name="ecs-8-remediation"></a>

要使用 SSM 创建参数，请参阅 *AWS Systems Manager 用户指南*中的[创建 Systems Manager 参数](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-su-create.html)。有关创建指定密钥的任务定义的更多信息，请参阅 *Amazon Elastic Container Service 开发人员指南*中的[使用 Secrets Manager 指定敏感数据](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data-secrets.html#secrets-create-taskdefinition)。

## [ECS.9] ECS 任务定义应具有日志配置
<a name="ecs-9"></a>

**相关要求：** NIST.800-53.r5 AC-4(26)、、 NIST.800-53.r5 SC-7 (9) NIST.800-53.r5 AU-10, NIST.800-53.r5 AU-12, NIST.800-53.r5 AU-2, NIST.800-53.r5 AU-3, NIST.800-53.r5 AU-6(3), NIST.800-53.r5 AU-6(4), NIST.800-53.r5 CA-7、nist.800-53.r5 SI-7 (8)

**类别：**识别 > 日志记录

**严重性：**高

**资源类型：**`AWS::ECS::TaskDefinition`

**AWS Config 规则：ecs-task-definition-log**[-配置](https://docs.aws.amazon.com/config/latest/developerguide/ecs-task-definition-log-configuration.html)

**计划类型：**已触发变更

**参数：**无

此控件检查最新的活动的 Amazon ECS 任务定义是否指定了日志配置。如果任务定义未定义 `logConfiguration` 属性，或者至少有一个容器定义中的 `logDriver` 值为空，则控制失败。

日志记录可帮助您保持 Amazon ECS 的可靠性、可用性和性能。从任务定义中收集数据可提供可见性，这可以帮助您调试流程并找到错误的根本原因。如果您使用的日志记录解决方案不必在 ECS 任务定义中定义（例如第三方日志解决方案），则可以在确保正确捕获和传送日志后禁用此控件。

### 修复
<a name="ecs-9-remediation"></a>

要为 Amazon ECS 任务定义定义日志配置，请参阅 *Amazon Elastic Container Service 开发人员指南*中的[在任务定义中指定日志配置](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_awslogs.html#specify-log-config)。

## [ECS.10] ECS Fargate 服务应在最新的 Fargate 平台版本上运行
<a name="ecs-10"></a>

**相关要求：**NIST.800-53.r5 SI-2、NIST.800-53.r5 SI-2（2）、NIST.800-53.r5 SI-2（4）、NIST.800-53.r5 SI-2（5）、PCI DSS v4.0.1/6.3.3

**类别：**识别 > 漏洞、补丁和版本管理

**严重性：**中

**资源类型：**`AWS::ECS::Service`

**AWS Config 规则：**[https://docs.aws.amazon.com/config/latest/developerguide/ecs-fargate-latest-platform-version.html](https://docs.aws.amazon.com/config/latest/developerguide/ecs-fargate-latest-platform-version.html)

**计划类型：**已触发变更

**参数：**
+ `latestLinuxVersion: 1.4.0`（不可自定义）
+ `latestWindowsVersion: 1.0.0`（不可自定义）

此控件检查 Amazon ECS Fargate 服务是否正在运行最新的 Fargate 平台版本。如果平台版本不是最新版本，则此控制失败。

AWS Fargate 平台版本是指 Fargate 任务基础架构的特定运行时环境，它是内核和容器运行时版本的组合。随着运行时系统环境的发展，将不断发布新的平台版本。例如，可能会发布新版本以进行内核或操作系统更新、新功能、错误修复或安全更新。 Fargate 任务的安全更新和补丁将自动部署。如果发现影响平台版本的安全问题，请 AWS 修补平台版本。

### 修复
<a name="ecs-10-remediation"></a>

要更新现有服务，包括其平台版本，请参阅 *Amazon Elastic Container Service 开发人员指南*中的[更新服务](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/update-service.html)。

## [ECS.12] ECS 集群应该使用容器详情
<a name="ecs-12"></a>

**相关要求：** NIST.800-53.r5 AU-6(3), NIST.800-53.r5 AU-6(4), NIST.800-53.r5 CA-7，nist.800-53.r5 SI-2

**类别：**识别 > 日志记录

**严重性：**中

**资源类型：**`AWS::ECS::Cluster`

**AWS Config 规则：**[https://docs.aws.amazon.com/config/latest/developerguide/ecs-container-insights-enabled.html](https://docs.aws.amazon.com/config/latest/developerguide/ecs-container-insights-enabled.html)

**计划类型：**已触发变更

**参数：**无

此控件检查 ECS 集群是否使用容器见解。如果未为集群设置 Container Insights，则此控制失败。

监控是维护 Amazon ECS 集群的可靠性、可用性和性能的重要组成部分。使用 CloudWatch Container Insights 收集、汇总和汇总来自容器化应用程序和微服务的指标和日志。 CloudWatch 自动收集许多资源的指标，例如 CPU、内存、磁盘和网络。Container Insights 还提供诊断信息（如容器重新启动失败），以帮助您查明问题并快速解决问题。您还可以对容器洞察收集的指标设置 CloudWatch 警报。

### 修复
<a name="ecs-12-remediation"></a>

要使用容器见解，请参阅 *Amazon CloudWatch 用户指南*中的[更新服务](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/deploy-container-insights-ECS.html)。

## [ECS.13] 应标记 ECS 服务
<a name="ecs-13"></a>

**类别：**识别 > 清单 > 标记

**严重性：**低

**资源类型：**`AWS::ECS::Service`

**AWS Config 规则:**`tagged-ecs-service`（自定义 Security Hub CSPM 规则）

**计划类型：**已触发变更

**参数：**


| 参数 | 说明 | Type | 允许的自定义值 | Security Hub CSPM 默认值 | 
| --- | --- | --- | --- | --- | 
|  requiredTagKeys  | 被评估资源必须包含的非系统标签键列表。标签密钥区分大小写。 | StringList （最多 6 件商品）  | 1-6 个符合 [AWS 要求](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html#tag-conventions)的标签键。 | 无默认值  | 

此控件可检查 Amazon ECS 服务是否具有带特定键的标签，这些键在 `requiredTagKeys` 参数中进行定义。如果该服务没有任何标签键或者未在 `requiredTagKeys` 参数中指定所有键，则此控件将失败。如果未提供 `requiredTagKeys` 参数，则此控件仅检查是否存在标签键，如果该服务未使用任何键进行标记，则此控件将失败。自动应用并以 `aws:` 为开头的系统标签会被忽略。

标签是您分配给 AWS 资源的标签，它由密钥和可选值组成。您可以创建标签，以按用途、所有者、环境或其他标准对资源进行分类。标签可帮助您识别、组织、搜索和筛选资源。使用标签进行标记还可以帮助您跟踪负责操作和通知的资源所有者。使用标签进行标记时，可以将基于属性的访问权限控制（ABAC）作为授权策略实施，该策略根据标签来定义权限。您可以向 IAM 实体（用户或角色）和 AWS 资源附加标签。您可以为 IAM 主体创建单个 ABAC 策略或者一组单独的策略。您可以将这些 ABAC 策略设计为允许在主体的标签与资源标签匹配时进行操作。有关更多信息，请参阅 [ABAC 有什么用 AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)？ 在 *IAM 用户指南*中。

**注意**  
请勿在标签中添加个人身份信息（PII）或者其他机密或敏感信息。许多人都可以访问标签 AWS 服务，包括 AWS Billing。有关更多标记最佳做法，请参阅中的为[AWS 资源添加标签](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html#tag-best-practices)。*AWS 一般参考*

### 修复
<a name="ecs-13-remediation"></a>

要向 ECS 服务添加标签，请参阅《Amazon Elastic Container Service 开发人员指南》**中的[标记 Amazon ECS 资源](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html)。

## [ECS.14] 应标记 ECS 集群
<a name="ecs-14"></a>

**类别：**识别 > 清单 > 标记

**严重性：**低

**资源类型：**`AWS::ECS::Cluster`

**AWS Config 规则:**`tagged-ecs-cluster`（自定义 Security Hub CSPM 规则）

**计划类型：**已触发变更

**参数：**


| 参数 | 说明 | Type | 允许的自定义值 | Security Hub CSPM 默认值 | 
| --- | --- | --- | --- | --- | 
|  requiredTagKeys  | 被评估资源必须包含的非系统标签键列表。标签密钥区分大小写。 | StringList （最多 6 件商品）  | 1-6 个符合 [AWS 要求](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html#tag-conventions)的标签键。 | 无默认值  | 

此控件可检查 Amazon ECS 集群是否具有带特定键的标签，这些键在 `requiredTagKeys` 参数中进行定义。如果集群没有任何标签键或者未在 `requiredTagKeys` 参数中指定所有键，则此控件将失败。如果未提供 `requiredTagKeys` 参数，则此控件仅检查是否存在标签键，如果集群未使用任何键进行标记，则此控件将失败。自动应用并以 `aws:` 为开头的系统标签会被忽略。

标签是您分配给 AWS 资源的标签，它由密钥和可选值组成。您可以创建标签，以按用途、所有者、环境或其他标准对资源进行分类。标签可帮助您识别、组织、搜索和筛选资源。使用标签进行标记还可以帮助您跟踪负责操作和通知的资源所有者。使用标签进行标记时，可以将基于属性的访问权限控制（ABAC）作为授权策略实施，该策略根据标签来定义权限。您可以向 IAM 实体（用户或角色）和 AWS 资源附加标签。您可以为 IAM 主体创建单个 ABAC 策略或者一组单独的策略。您可以将这些 ABAC 策略设计为允许在主体的标签与资源标签匹配时进行操作。有关更多信息，请参阅 [ABAC 有什么用 AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)？ 在 *IAM 用户指南*中。

**注意**  
请勿在标签中添加个人身份信息（PII）或者其他机密或敏感信息。许多人都可以访问标签 AWS 服务，包括 AWS Billing。有关更多标记最佳做法，请参阅中的为[AWS 资源添加标签](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html#tag-best-practices)。*AWS 一般参考*

### 修复
<a name="ecs-14-remediation"></a>

要向 ECS 集群添加标签，请参阅《Amazon Elastic Container Service 开发人员指南》**中的[标记 Amazon ECS 资源](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html)。

## [ECS.15] 应标记 ECS 任务定义
<a name="ecs-15"></a>

**类别：**识别 > 清单 > 标记

**严重性：**低

**资源类型：**`AWS::ECS::TaskDefinition`

**AWS Config 规则:**`tagged-ecs-taskdefinition`（自定义 Security Hub CSPM 规则）

**计划类型：**已触发变更

**参数：**


| 参数 | 说明 | Type | 允许的自定义值 | Security Hub CSPM 默认值 | 
| --- | --- | --- | --- | --- | 
|  requiredTagKeys  | 被评估资源必须包含的非系统标签键列表。标签密钥区分大小写。 | StringList （最多 6 件商品）  | 1-6 个符合 [AWS 要求](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html#tag-conventions)的标签键。 | 无默认值  | 

此控件可检查 Amazon ECS 任务定义是否具有带特定键的标签，这些键在 `requiredTagKeys` 参数中进行定义。如果任务定义没有任何标签键或者未在 `requiredTagKeys` 参数中指定所有键，则此控件将失败。如果未提供 `requiredTagKeys` 参数，则此控件仅检查是否存在标签键，如果任务定义未使用任何键进行标记，则此控件将失败。自动应用并以 `aws:` 为开头的系统标签会被忽略。

标签是您分配给 AWS 资源的标签，它由密钥和可选值组成。您可以创建标签，以按用途、所有者、环境或其他标准对资源进行分类。标签可帮助您识别、组织、搜索和筛选资源。使用标签进行标记还可以帮助您跟踪负责操作和通知的资源所有者。使用标签进行标记时，可以将基于属性的访问权限控制（ABAC）作为授权策略实施，该策略根据标签来定义权限。您可以向 IAM 实体（用户或角色）和 AWS 资源附加标签。您可以为 IAM 主体创建单个 ABAC 策略或者一组单独的策略。您可以将这些 ABAC 策略设计为允许在主体的标签与资源标签匹配时进行操作。有关更多信息，请参阅 [ABAC 有什么用 AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)？ 在 *IAM 用户指南*中。

**注意**  
请勿在标签中添加个人身份信息（PII）或者其他机密或敏感信息。许多人都可以访问标签 AWS 服务，包括 AWS Billing。有关更多标记最佳做法，请参阅中的为[AWS 资源添加标签](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html#tag-best-practices)。*AWS 一般参考*

### 修复
<a name="ecs-15-remediation"></a>

要向 ECS 任务定义添加标签，请参阅《Amazon Elastic Container Service 开发人员指南》**中的[标记 Amazon ECS 资源](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html)。

## [ECS.16] ECS 任务集不应自动分配公有 IP 地址
<a name="ecs-16"></a>

**相关要求：**PCI DSS v4.0.1/1.4.4

**类别：**保护 > 安全网络配置 > 不公开访问的资源

**严重性：**高

**资源类型：**`AWS::ECS::TaskSet`

**AWS Config 规则:**`ecs-taskset-assign-public-ip-disabled`（自定义 Security Hub CSPM 规则）

**计划类型：**已触发变更

**参数：**无

此控件可检查 Amazon ECS 任务集是否配置为自动分配公有 IP 地址。如果设置为，`AssignPublicIP`则控制失败`ENABLED`。

可通过互联网访问公有 IP 地址。如果您使用公有 IP 地址来配置任务集，则可以通过互联网来访问与任务集关联的资源。ECS 任务集不应可公开访问，因为这可能会允许对容器应用程序服务器进行意外访问。

### 修复
<a name="ecs-16-remediation"></a>

要更新 ECS 任务集使其不使用公有 IP 地址，请参阅《Amazon Elastic Container Service 开发人员指南》**中的[使用控制台更新 Amazon ECS 任务定义](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/update-task-definition-console-v2.html)。

## [ECS.17] ECS 任务定义不应使用主机网络模式
<a name="ecs-17"></a>

**相关要求：** NIST.800-53.r5 AC-2(1) NIST.800-53.r5 AC-3、 NIST.800-53.r5 AC-3 (7)、 NIST.800-53.r5 AC-3 (15)、 NIST.800-53.r5 AC-5、 NIST.800-53.r5 AC-6

**类别：**保护 > 安全网络配置

**严重性：**中

**资源类型：**`AWS::ECS::TaskDefinition`

**AWS Config 规则：**[https://docs.aws.amazon.com/config/latest/developerguide/ecs-task-definition-network-mode-not-host.html](https://docs.aws.amazon.com/config/latest/developerguide/ecs-task-definition-network-mode-not-host.html)

**计划类型：**已触发变更

**参数：**无

此控件检查 Amazon ECS 任务定义的最新有效修订版是否使用 `host` 网络模式。如果 ECS 任务定义的最新有效版本使用 `host` 网络模式，则该控件会失败。

使用 `host` 网络模式时，Amazon ECS 容器的网络直接与运行该容器的底层主机绑定。因此，这种模式允许容器连接到主机上的私有环回网络服务并模拟主机。其他显著缺点是，在使用 `host` 网络模式时无法重新映射容器端口，而且每台主机只能运行一个任务的单个实例化。

### 修复
<a name="ecs-17-remediation"></a>

有关托管在 Amazon EC2 实例上的 Amazon ECS 任务的联网模式和选项的信息，请参阅《Amazon Elastic Container Service 开发人员指南》**中的 [EC2 启动类型的 Amazon ECS 任务联网选项](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html)。有关创建任务定义的新修订版和指定其他网络模式的信息，请参阅该指南中的[更新 Amazon ECS 任务定义](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/update-task-definition-console-v2.html)。

如果 Amazon ECS 任务定义是由创建的 AWS Batch，[请参阅 AWS Batch 作业的](https://docs.aws.amazon.com/batch/latest/userguide/networking-modes-jobs.html)联网模式，了解联网模式和任务类型的典型用 AWS Batch 法，并选择安全选项。

## [ECS.18] ECS 任务定义应对 EFS 卷使用传输中加密
<a name="ecs-18"></a>

**类别：**保护 > 加密 data-in-transit

**严重性：**中

**资源类型：**`AWS::ECS::TaskDefinition`

**AWS Config 规则：**[https://docs.aws.amazon.com/config/latest/developerguide/ecs-task-definition-efs-encryption-enabled.html](https://docs.aws.amazon.com/config/latest/developerguide/ecs-task-definition-efs-encryption-enabled.html)

**计划类型：**已触发变更

**参数：**无

此控件检查 Amazon ECS 任务定义的最新有效版本是否对 EFS 卷使用传输中加密。如果 ECS 任务定义的最新有效版本禁用了 EFS 卷的传输中加密，则控制失败。

Amazon EFS 卷提供简单、可扩展和持久的共享文件存储，用于您的 Amazon ECS 任务。Amazon EFS 支持使用传输层安全性协议（TLS）对传输中数据进行加密。在将传输中数据加密声明为 EFS 文件系统的挂载选项时，Amazon EFS 会在挂载文件系统时与您的 EFS 文件系统建立安全的 TLS 连接。

### 修复
<a name="ecs-18-remediation"></a>

有关为使用 EFS 卷的 Amazon ECS 任务定义启用传输中加密的信息，请参阅《*亚马逊弹性容器服务开发人员指南*》中的[步骤 5：创建任务定义](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/tutorial-efs-volumes.html#efs-task-def)。

## [ECS.19] ECS 容量提供商应启用托管终止保护
<a name="ecs-19"></a>

**类别：** 保护 > 数据保护

**严重性：**中

**资源类型：**`AWS::ECS::CapacityProvider`

**AWS Config 规则：**[https://docs.aws.amazon.com/config/latest/developerguide/ecs-capacity-provider-termination-check.html](https://docs.aws.amazon.com/config/latest/developerguide/ecs-capacity-provider-termination-check.html)

**计划类型：**已触发变更

**参数：**无

此控件检查 Amazon ECS 容量提供商是否启用了托管终止保护。如果未在 ECS 容量提供商上启用托管终止保护，则控制失败。

Amazon ECS 容量提供程序为集群中的任务管理基础设施的扩缩。当将 EC2 实例用于您的容量时，请使用自动扩缩组来管理 EC2 实例。通过托管式终止保护，集群自动扩缩可以控制终止哪些实例。当您使用托管式终止保护时，Amazon ECS 仅终止没有任何正在运行的 Amazon ECS 任务的 EC2 实例。

**注意**  
使用托管终止保护时，还必须使用托管扩展，否则托管终止保护将不起作用。

### 修复
<a name="ecs-19-remediation"></a>

要为 Amazon ECS 容量提供商启用[托管终止保护，请参阅亚马逊*弹性容器服务开发者指南中的更新 Amazon ECS 容*量提供商](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/update-managed-termination-protection.html)的托管终止保护。

## [ECS.20] ECS 任务定义应在 Linux 容器定义中配置非 root 用户
<a name="ecs-20"></a>

**类别：**保护 > 安全访问管理 >根用户访问限制

**严重性：**中

**资源类型：**`AWS::ECS::TaskDefinition`

**AWS Config 规则：**[https://docs.aws.amazon.com/config/latest/developerguide/ecs-task-definition-linux-user-non-root.html](https://docs.aws.amazon.com/config/latest/developerguide/ecs-task-definition-linux-user-non-root.html)

**计划类型：**已触发变更

**参数：**无

此控件检查 Amazon ECS 任务定义的最新有效版本是否将 Linux 容器配置为以非 root 用户身份运行。如果配置了默认 root 用户或者任何容器都没有用户配置，则控制将失败。

当 Linux 容器以 root 权限运行时，它们会带来一些重大的安全风险。root 用户在容器内拥有不受限制的访问权限。这种提升的访问权限增加了容器逃脱攻击的风险，在这种攻击中，攻击者有可能突破容器隔离并访问底层主机系统。如果以 root 身份运行的容器遭到入侵，攻击者可能会利用此漏洞访问或修改主机系统资源，从而影响其他容器或主机本身。此外，root 访问权限可能导致权限升级攻击，从而使攻击者能够获得超出容器预期范围的额外权限。ECS 任务定义中的用户参数可以用多种格式指定用户，包括用户名、用户 ID、带组的用户名或带有组 ID 的 UID。在配置任务定义时，请务必注意这些不同的格式，以确保不会无意中授予 root 访问权限。遵循最低权限原则，容器应使用非 root 用户以所需的最低权限运行。这种方法可显著减少潜在的攻击面并减轻潜在安全漏洞的影响。

**注意**  
只有在任务定义中配置为`LINUX`或`operatingSystemFamily`未配置时`operatingSystemFamily`，此控件才会评估任务定义中的容器定义。如果任务定义中的任何容器定义`user`未配置或`user`配置为默认 root 用户，则该控件将为已评估的任务定义生成`FAILED`结果。`LINUX`容器的默认 root 用户是`"root"`和`"0"`。

### 修复
<a name="ecs-20-remediation"></a>

有关创建 Amazon ECS 任务定义的新修订版和更新容器定义中的`user`参数的信息，请参阅《[亚马逊*弹性容器服务开发者指南》中的更新 Amazon* ECS 任务定义](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/update-task-definition-console-v2.html)。

## [ECS.21] ECS 任务定义应在 Windows 容器定义中配置非管理员用户
<a name="ecs-21"></a>

**类别：**保护 > 安全访问管理 >根用户访问限制

**严重性：**中

**资源类型：**`AWS::ECS::TaskDefinition`

**AWS Config 规则：**[https://docs.aws.amazon.com/config/latest/developerguide/ecs-task-definition-windows-user-non-admin.html](https://docs.aws.amazon.com/config/latest/developerguide/ecs-task-definition-windows-user-non-admin.html)

**计划类型：**已触发变更

**参数：**无

此控件检查 Amazon ECS 任务定义的最新有效版本是否将 Windows 容器配置为以非默认管理员的用户身份运行。如果将默认管理员配置为用户或任何容器都没有用户配置，则控制失败。

当 Windows 容器以管理员权限运行时，它们会带来多种严重的安全风险。管理员在容器内拥有不受限制的访问权限。这种提升的访问权限增加了容器逃脱攻击的风险，在这种攻击中，攻击者有可能突破容器隔离并访问底层主机系统。

**注意**  
只有在任务定义中配置为`WINDOWS_SERVER`或`operatingSystemFamily`未配置时`operatingSystemFamily`，此控件才会评估任务定义中的容器定义。如果任务定义中的任何容器定义`user`未配置或`user`配置为容器的默认管理员，则该控件将为已评估的`WINDOWS_SERVER`任务定义生成`FAILED`结果`"containeradministrator"`。

### 修复
<a name="ecs-21-remediation"></a>

有关创建 Amazon ECS 任务定义的新修订版和更新容器定义中的`user`参数的信息，请参阅《[亚马逊*弹性容器服务开发者指南》中的更新 Amazon* ECS 任务定义](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/update-task-definition-console-v2.html)。