Amazon ECS 控件 - Amazon Security Hub
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon ECS 控件

这些控制与 Amazon ECS 资源有关。

这些控件可能并非全部可用 Amazon Web Services 区域。有关更多信息,请参阅 按地区划分的控件可用性

[ECS.1] Amazon ECS 任务定义应具有安全的联网模式和用户定义。

相关要求: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

Amazon Config 规则:ecs-task-definition-user-for-host-mode-check

计划类型:已触发变更

参数:

  • SkipInactiveTaskDefinitionstrue(不可自定义)

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

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

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

修复

有关如何更新任务定义的信息,请参阅 Amazon Elastic Container Service 开发人员指南 中的更新任务定义

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

[ECS.2] ECS 服务不应自动分配公有 IP 地址

相关要求: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、NIST.800-53.r5 AC-4(21)、NIST.800-53.r5 AC-6、NIST.800-53.r5 SC-7、NIST.800-53.r5 SC-7(11)、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)、NIST.800-53.r5 SC-7(4)、NIST.800-53.r5 SC-7(9)。

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

严重性:

资源类型:AWS::ECS::Service

Amazon Config规则:ecs-service-assign-public-ip-disabled(自定义 Security Hub 规则)

计划类型:已触发变更

参数:

  • exemptEcsServiceArns(不可自定义)。Security Hub 不会填充此参数。不受此规则约束的 Amazon ECS 服务的 ARN 的逗号分隔列表。

    如果 Amazon ECS 服务已设置 AssignPublicIPENABLED 并在此参数列表中指定,则此规则即为 COMPLIANT

    如果 Amazon ECS 服务已设置 AssignPublicIPENABLED 并未在此参数列表中指定,则此规则即为 NON_COMPLIANT

此控件检查 Amazon ECS 服务是否配置为自动分配公有 IP 地址。如果 AssignPublicIPENABLED,则控制失败。如果 AssignPublicIPDISABLED,则此控件通过。

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

修复

要禁用自动公有 IP 分配,请参阅 Amazon Elastic Container Service 开发人员指南 中的为服务配置 VPC 和安全组设置

[ECS.3] ECS 任务定义不应共享主机的进程命名空间

相关要求:NIST.800-53.r5 CA-9(1),NIST.800-53.r5 CM-2

类别:识别 > 资源配置

严重性:

资源类型:AWS::ECS::TaskDefinition

Amazon Config规则:ecs-task-definition-pid-模式检查

计划类型:已触发变更

参数:

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

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

修复

要对任务定义进行配置,请参阅 pidMode Amazon Elastic Container Service 开发人员指南中的任务定义参数

[ECS.4] ECS 容器应以非特权身份运行

相关要求: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

Amazon Config规则:ecs-containers-nonprivileged

计划类型:已触发变更

参数:

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

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

修复

要配置任务定义的 privileged 参数,请参阅 Amazon Elastic Container Service 开发人员指南中的高级容器定义参数

[ECS.5] ECS 容器应限制为仅对根文件系统具有只读访问权限。

相关要求: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

Amazon Config规则:ecs-containers-readonly-access

计划类型:已触发变更

参数:

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

启用此选项可以减少安全攻击向量,因为除非容器实例对其文件系统文件夹和目录具有明确的读写权限,否则容器实例的文件系统无法被篡改或写入。这种控制还遵循最低权限原则。

修复

将容器定义限制为对根文件系统的只读访问
  1. 打开 Amazon ECS 经典控制台:https://console.aws.amazon.com/ecs/

  2. 在左侧导航窗格中,选择 Task definitions(任务定义)。

  3. 选择包含需要更新的容器定义的任务定义。请完成以下各个步骤:

    • 从下拉列表中选择使用 JSON 创建新修订版

    • 添加 readonlyRootFilesystem 参数,并在任务定义的容器定义中将其设置为 true

    • 选择 创建

[ECS.8] 密钥不应作为容器环境变量传递

相关要求:NIST.800-53.r5 CA-9(1),NIST.800-53.r5 CM-2

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

严重性:

资源类型:AWS::ECS::TaskDefinition

Amazon Config规则:ecs-no-environment-secrets

计划类型:已触发变更

参数:

  • SecretKeys = AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYECS_ENGINE_AUTH_DATA(不可自定义)

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

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

修复

要使用 SSM 创建参数,请参阅 Amazon Systems Manager 用户指南中的创建 Systems Manager 参数。有关创建指定密钥的任务定义的更多信息,请参阅 Amazon Elastic Container Service 开发人员指南中的使用 Secrets Manager 指定敏感数据

[ECS.9] ECS 任务定义应具有日志配置

相关要求:NIST.800-53.r5 AC-4(26)、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 SC-7(9)、NIST.800-53.r5 SI-7(8)。

类别:识别 > 日志记录

严重性:

资源类型:AWS::ECS::TaskDefinition

Amazon Config规则:ecs-task-definition-log-配置

计划类型:已触发变更

参数:

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

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

修复

要为 Amazon ECS 任务定义定义日志配置,请参阅 Amazon Elastic Container Service 开发人员指南中的在任务定义中指定日志配置

[ECS.10] ECS Fargate 服务应在最新的 Fargate 平台版本上运行

相关要求: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)。

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

严重性:

资源类型:AWS::ECS::Service

Amazon Config规则:ecs-fargate-latest-platform-version

计划类型:已触发变更

参数:

  • latestLinuxVersion: 1.4.0(不可自定义)

  • latestWindowsVersion: 1.0.0(不可自定义)

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

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

修复

要更新现有服务,包括其平台版本,请参阅 Amazon Elastic Container Service 开发人员指南中的更新服务

[ECS.12] ECS 集群应该使用容器详情

相关要求: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

Amazon Config规则:ecs-container-insights-enabled

计划类型:已触发变更

参数:

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

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

修复

要使用容器见解,请参阅 Amazon CloudWatch 用户指南中的更新服务