适用于 Amazon ECS 的 Security Hub 控件
Security Hub 控件可评估 Amazon Elastic Container Service(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
计划类型:已触发变更
参数:
-
SkipInactiveTaskDefinitions
:true
(不可自定义)
此控件检查主机联网模式下的活动 Amazon ECS 任务定义是否具有 privileged
或 user
容器定义。对于具有主机网络模式和容器定义为 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 规则)
计划类型:已触发变更
参数:无
此控件检查 Amazon ECS 服务是否配置为自动分配公有 IP 地址。如果 AssignPublicIP
是 ENABLED
,则控制失败。如果 AssignPublicIP
是 DISABLED
,则此控件通过。
公有 IP 地址是指可通过 Internet 访问的 IP 地址。如果您使用公有 IP 地址启动 Amazon ECS 实例,则可以通过 Internet 访问 Amazon ECS 实例。Amazon ECS 服务不应公开访问,因为这可能会允许对容器应用程序服务器进行意外访问。
修复
首先,您必须为您的集群创建一个任务定义,该集群使用 awsvpc
网络模式并为 requiresCompatibilities
指定 FARGATE。然后,对于计算配置,请选择启动类型和 FARGATE。最后,对于网络字段,请关闭公有 IP 以禁用服务的公有 IP 自动分配。
[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-mode-check
计划类型:已触发变更
参数:无
此控件检查 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 任务定义的最新活动版本。
启用此选项可以减少安全攻击向量,因为除非容器实例对其文件系统文件夹和目录具有明确的读写权限,否则容器实例的文件系统无法被篡改或写入。这种控制还遵循最低权限原则。
修复
将容器定义限制为对根文件系统的只读访问
打开 Amazon ECS 经典控制台:https://console.aws.amazon.com/ecs/
。 -
在左侧导航窗格中,选择 Task definitions(任务定义)。
-
选择包含需要更新的容器定义的任务定义。请完成以下各个步骤:
-
从下拉列表中选择使用 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_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 任务定义的最新活动版本。
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-configuration
计划类型:已触发变更
参数:无
此控件检查最新的活动的 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 任务的安全更新和修补程序将自动部署。如果安全问题影响平台版本,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 还提供诊断信息(如容器重新启动失败),以帮助您查明问题并快速解决问题。您还可以设置 Container Insights 收集的指标的 CloudWatch 警报。
修复
要使用容器见解,请参阅 Amazon CloudWatch 用户指南中的更新服务。
[ECS.13] 应标记 ECS 服务
类别:识别 > 清单 > 标记
严重性:低
资源类型:Amazon::ECS::Service
Amazon Config规则:tagged-ecs-service
(自定义 Security Hub 规则)
计划类型:已触发变更
参数:
参数 | 描述 | 类型 | 允许的自定义值 | Security Hub 默认值 |
---|---|---|---|---|
requiredTagKeys
|
被评估资源必须包含的非系统标签键列表。标签键区分大小写。 | StringList | 符合 Amazon 要求的标签列表 | 无默认值 |
此控件可检查 Amazon ECS 服务是否具有带特定键的标签,这些键在 requiredTagKeys
参数中进行定义。如果该服务没有任何标签键或者未在 requiredTagKeys
参数中指定所有键,则此控件将失败。如果未提供 requiredTagKeys
参数,则此控件仅检查是否存在标签键,如果该服务未使用任何键进行标记,则此控件将失败。自动应用并以 aws:
为开头的系统标签会被忽略。
标签是您分配给 Amazon 资源的标记,由一个键和一个可选值组成。您可以创建标签,按用途、所有者、环境或其他标准对资源进行分类。标签可帮助您识别、组织、搜索和筛选资源。使用标签进行标记还可以帮助您跟踪负责操作和通知的资源所有者。使用标签进行标记时,可以将基于属性的访问权限控制(ABAC)作为授权策略实施,该策略根据标签来定义权限。您可以将标签附加到 IAM 实体(用户或角色)以及 Amazon 资源。您可以为 IAM 主体创建单个 ABAC 策略或者一组单独的策略。您可以将这些 ABAC 策略设计为允许在主体的标签与资源标签匹配时进行操作。有关更多信息,请参阅 IAM 用户指南中的什么是适用于 Amazon 的 ABAC?。
注意
请勿在标签中添加个人身份信息(PII)或者其他机密或敏感信息。可从许多 Amazon Web Services 服务 访问标签,包括 Amazon Billing。有关标记更多最佳实践,请参阅《Amazon Web Services 一般参考》中的标记 Amazon 资源。
修复
要向 ECS 服务添加标签,请参阅《Amazon Elastic Container Service 开发人员指南》中的标记 Amazon ECS 资源。
[ECS.14] 应标记 ECS 集群
类别:识别 > 清单 > 标记
严重性:低
资源类型:Amazon::ECS::Cluster
Amazon Config规则:tagged-ecs-cluster
(自定义 Security Hub 规则)
计划类型:已触发变更
参数:
参数 | 描述 | 类型 | 允许的自定义值 | Security Hub 默认值 |
---|---|---|---|---|
requiredTagKeys
|
被评估资源必须包含的非系统标签键列表。标签键区分大小写。 | StringList | 符合 Amazon 要求的标签列表 | 无默认值 |
此控件可检查 Amazon ECS 集群是否具有带特定键的标签,这些键在 requiredTagKeys
参数中进行定义。如果集群没有任何标签键或者未在 requiredTagKeys
参数中指定所有键,则此控件将失败。如果未提供 requiredTagKeys
参数,则此控件仅检查是否存在标签键,如果集群未使用任何键进行标记,则此控件将失败。自动应用并以 aws:
为开头的系统标签会被忽略。
标签是您分配给 Amazon 资源的标记,由一个键和一个可选值组成。您可以创建标签,按用途、所有者、环境或其他标准对资源进行分类。标签可帮助您识别、组织、搜索和筛选资源。使用标签进行标记还可以帮助您跟踪负责操作和通知的资源所有者。使用标签进行标记时,可以将基于属性的访问权限控制(ABAC)作为授权策略实施,该策略根据标签来定义权限。您可以将标签附加到 IAM 实体(用户或角色)以及 Amazon 资源。您可以为 IAM 主体创建单个 ABAC 策略或者一组单独的策略。您可以将这些 ABAC 策略设计为允许在主体的标签与资源标签匹配时进行操作。有关更多信息,请参阅 IAM 用户指南中的什么是适用于 Amazon 的 ABAC?。
注意
请勿在标签中添加个人身份信息(PII)或者其他机密或敏感信息。可从许多 Amazon Web Services 服务 访问标签,包括 Amazon Billing。有关标记更多最佳实践,请参阅《Amazon Web Services 一般参考》中的标记 Amazon 资源。
修复
要向 ECS 集群添加标签,请参阅《Amazon Elastic Container Service 开发人员指南》中的标记 Amazon ECS 资源。
[ECS.15] 应标记 ECS 任务定义
类别:识别 > 清单 > 标记
严重性:低
资源类型:Amazon::ECS::TaskDefinition
Amazon Config规则:tagged-ecs-taskdefinition
(自定义 Security Hub 规则)
计划类型:已触发变更
参数:
参数 | 描述 | 类型 | 允许的自定义值 | Security Hub 默认值 |
---|---|---|---|---|
requiredTagKeys
|
被评估资源必须包含的非系统标签键列表。标签键区分大小写。 | StringList | 符合 Amazon 要求的标签列表 | 无默认值 |
此控件可检查 Amazon ECS 任务定义是否具有带特定键的标签,这些键在 requiredTagKeys
参数中进行定义。如果任务定义没有任何标签键或者未在 requiredTagKeys
参数中指定所有键,则此控件将失败。如果未提供 requiredTagKeys
参数,则此控件仅检查是否存在标签键,如果任务定义未使用任何键进行标记,则此控件将失败。自动应用并以 aws:
为开头的系统标签会被忽略。
标签是您分配给 Amazon 资源的标记,由一个键和一个可选值组成。您可以创建标签,按用途、所有者、环境或其他标准对资源进行分类。标签可帮助您识别、组织、搜索和筛选资源。使用标签进行标记还可以帮助您跟踪负责操作和通知的资源所有者。使用标签进行标记时,可以将基于属性的访问权限控制(ABAC)作为授权策略实施,该策略根据标签来定义权限。您可以将标签附加到 IAM 实体(用户或角色)以及 Amazon 资源。您可以为 IAM 主体创建单个 ABAC 策略或者一组单独的策略。您可以将这些 ABAC 策略设计为允许在主体的标签与资源标签匹配时进行操作。有关更多信息,请参阅 IAM 用户指南中的什么是适用于 Amazon 的 ABAC?。
注意
请勿在标签中添加个人身份信息(PII)或者其他机密或敏感信息。可从许多 Amazon Web Services 服务 访问标签,包括 Amazon Billing。有关标记更多最佳实践,请参阅《Amazon Web Services 一般参考》中的标记 Amazon 资源。
修复
要向 ECS 任务定义添加标签,请参阅《Amazon Elastic Container Service 开发人员指南》中的标记 Amazon ECS 资源。
[ECS.16] ECS 任务集不应自动分配公有 IP 地址
类别:保护 > 安全网络配置 > 不公开访问的资源
严重性:高
资源类型:Amazon::ECS::TaskSet
Amazon Config规则:ecs-taskset-assign-public-ip-disabled
(自定义 Security Hub 规则)
计划类型:已触发变更
参数:无
此控件可检查 Amazon ECS 任务集是否配置为自动分配公有 IP 地址。如果设置为,AssignPublicIP
则控制失败ENABLED
。
可通过互联网访问公有 IP 地址。如果您使用公有 IP 地址来配置任务集,则可以通过互联网来访问与任务集关联的资源。ECS 任务集不应可公开访问,因为这可能会允许对容器应用程序服务器进行意外访问。
修复
要更新 ECS 任务集使其不使用公有 IP 地址,请参阅《Amazon Elastic Container Service 开发人员指南》中的使用控制台更新 Amazon ECS 任务定义。