适用于亚马逊的 Security Hub 控件 ECS - AWS Security Hub

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

适用于亚马逊的 Security Hub 控件 ECS

这些 Security Hub 控件评估亚马逊弹性容器服务 (AmazonECS) 的服务和资源。

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

[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

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

计划类型:已触发变更

参数:

  • SkipInactiveTaskDefinitionstrue(不可自定义)

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

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

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

修复

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

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

[ECS.2ECS] 不应自动为其分配公有 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

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

计划类型:已触发变更

参数:

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

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

修复

首先,您必须为集群创建任务定义,该定义使用awsvpc网络模式并指定FARGATErequiresCompatibilities。然后,在 “计算配置” 中,选择 “启动类型” 和FARGATE。最后,在 “网络” 字段中,关闭公有 IP 以禁用服务的自动公有 IP 分配。

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

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

类别:识别 > 资源配置

严重性:

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

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

计划类型:已触发变更

参数:

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

进程 ID (PID) 命名空间提供了进程间的隔离。它可以防止系统进程可见,并PIDs允许重复使用,包括 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

AWS 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

AWS 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

AWS 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 任务定义的最新有效版本。

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

修复

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

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

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

计划类型:已触发变更

参数:

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

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

修复

要为您的 Amazon ECS 任务定义定义日志配置,请参阅 Amazon E la stic Container 服务开发人员指南中的在任务定义中指定日志配置

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

相关要求:NIST.800-53.r5 SI-2、.800-53.r5 SI-2 (2)、.800-53.r5 SI-2 (4)、NIST .800-53.r5 SI-2 (4)、.800-53.r5 SI-2 (5) NIST NIST

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

严重性:

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

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

计划类型:已触发变更

参数:

  • latestLinuxVersion: 1.4.0(不可自定义)

  • latestWindowsVersion: 1.0.0(不可自定义)

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

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

修复

要更新现有服务,包括其平台版本,请参阅 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

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

计划类型:已触发变更

参数:

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

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

修复

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

[ECS.13] 应标记ECS服务

类别:识别 > 清单 > 标记

严重性:

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

AWS Config规则:tagged-ecs-service(自定义 Security Hub 规则)

计划类型:已触发变更

参数:

参数 描述 类型 允许的自定义值 Security Hub 默认值
requiredTagKeys 评估的资源必须包含的非系统标签密钥列表。标签键区分大小写。 StringList 符合AWS 要求的标签列表 无默认值

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

标签是您分配给 AWS 资源的标签,它由密钥和可选值组成。您可以创建标签,按用途、所有者、环境或其他标准对资源进行分类。标签可以帮助您识别、组织、搜索和筛选资源。标记还可以帮助您跟踪负责任的资源所有者的操作和通知。使用标记时,可以实现基于属性的访问控制 (ABAC) 作为一种授权策略,它根据标签定义权限。您可以为IAM实体(用户或角色)和 AWS 资源附加标签。您可以为IAM委托人创建单个ABAC策略或一组单独的策略。您可以将这些ABAC策略设计为允许在委托人的标签与资源标签匹配时进行操作。有关更多信息,请参阅有什么ABAC用 AWS? 在《IAM用户指南》中。

注意

不要在标签中添加个人身份信息 (PII) 或其他机密或敏感信息。许多人都可以访问标签 AWS 服务,包括 AWS Billing。有关更多标记最佳做法,请参阅中的为AWS 资源添加标签AWS 一般参考

修复

要为ECS服务添加标签,请参阅《亚马逊弹性容器服务开发者指南》中的为亚马逊ECS资源添加标签。

[ECS.14] 应ECS标记集群

类别:识别 > 清单 > 标记

严重性:

资源类型:AWS::ECS::Cluster

AWS Config规则:tagged-ecs-cluster(自定义 Security Hub 规则)

计划类型:已触发变更

参数:

参数 描述 类型 允许的自定义值 Security Hub 默认值
requiredTagKeys 评估的资源必须包含的非系统标签密钥列表。标签键区分大小写。 StringList 符合AWS 要求的标签列表 无默认值

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

标签是您分配给 AWS 资源的标签,它由密钥和可选值组成。您可以创建标签,按用途、所有者、环境或其他标准对资源进行分类。标签可以帮助您识别、组织、搜索和筛选资源。标记还可以帮助您跟踪负责任的资源所有者的操作和通知。使用标记时,可以实现基于属性的访问控制 (ABAC) 作为一种授权策略,它根据标签定义权限。您可以为IAM实体(用户或角色)和 AWS 资源附加标签。您可以为IAM委托人创建单个ABAC策略或一组单独的策略。您可以将这些ABAC策略设计为允许在委托人的标签与资源标签匹配时进行操作。有关更多信息,请参阅有什么ABAC用 AWS? 在《IAM用户指南》中。

注意

不要在标签中添加个人身份信息 (PII) 或其他机密或敏感信息。许多人都可以访问标签 AWS 服务,包括 AWS Billing。有关更多标记最佳做法,请参阅中的为AWS 资源添加标签AWS 一般参考

修复

要向ECS集群添加标签,请参阅《亚马逊弹性容器服务开发者指南》中的为亚马逊ECS资源添加标签。

[ECS.15] 应标记ECS任务定义

类别:识别 > 清单 > 标记

严重性:

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

AWS Config规则:tagged-ecs-taskdefinition(自定义 Security Hub 规则)

计划类型:已触发变更

参数:

参数 描述 类型 允许的自定义值 Security Hub 默认值
requiredTagKeys 评估的资源必须包含的非系统标签密钥列表。标签键区分大小写。 StringList 符合AWS 要求的标签列表 无默认值

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

标签是您分配给 AWS 资源的标签,它由密钥和可选值组成。您可以创建标签,按用途、所有者、环境或其他标准对资源进行分类。标签可以帮助您识别、组织、搜索和筛选资源。标记还可以帮助您跟踪负责任的资源所有者的操作和通知。使用标记时,可以实现基于属性的访问控制 (ABAC) 作为一种授权策略,它根据标签定义权限。您可以为IAM实体(用户或角色)和 AWS 资源附加标签。您可以为IAM委托人创建单个ABAC策略或一组单独的策略。您可以将这些ABAC策略设计为允许在委托人的标签与资源标签匹配时进行操作。有关更多信息,请参阅有什么ABAC用 AWS? 在《IAM用户指南》中。

注意

不要在标签中添加个人身份信息 (PII) 或其他机密或敏感信息。许多人都可以访问标签 AWS 服务,包括 AWS Billing。有关更多标记最佳做法,请参阅中的为AWS 资源添加标签AWS 一般参考

修复

要向ECS任务定义添加标签,请参阅《亚马逊弹性容器服务开发者指南》中的为亚马逊ECS资源添加标签。

[ECS.16] ECS 任务集不应自动分配公有 IP 地址

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

严重性:

资源类型:AWS::ECS::TaskSet

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

计划类型:已触发变更

参数:

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

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

修复

要更新ECS任务集使其不使用公有 IP 地址,请参阅《亚马逊弹性容器服务开发者指南》中的使用控制台更新亚马逊ECS任务定义