Amazon ECS 托管实例的安全注意事项 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon ECS 托管实例的安全注意事项

Amazon ECS 托管实例提供完全托管的容器计算体验,使您能够在特定 Amazon EC2 实例类型上运行工作负载,同时将安全责任卸载到 Amazon。本主题介绍使用 Amazon ECS 托管实例时的安全模型、功能和注意事项。

安全模型

Amazon ECS 托管实例实施了一个在灵活性和保护之间取得平衡的全面安全模型:

  • Amazon 托管基础设施:Amazon 控制托管实例的生命周期并处理安全修补,从而消除人为错误和篡改的可能性。

  • 无管理访问:安全模型已锁定,禁止对托管实例进行管理访问。

  • 多任务放置:默认情况下,Amazon ECS 托管实例会将多个任务放置到单个实例上,以优化成本和利用率,与 Fargate 相比,这样做可放松工作负载隔离约束。

  • 数据隔离:尽管 Amazon 控制实例的生命周期和任务放置,但 Amazon 无法登录托管实例或访问客户数据。

安全功能

Amazon ECS 托管实例包含多项内置安全功能,旨在保护工作负载并维持强大的安全态势。这些功能从自动安全修补到根据需要支持特权 Linux 功能不一而足。

安全最佳实践

托管实例根据 Amazon 安全最佳实践进行配置,包括:

  • 无 SSH 访问:禁用远程 shell 访问以防止未经授权的访问。

  • 不可变的根文件系统:无法修改根文件系统,从而确保系统完整性。

  • 内核级强制访问控制:SELinux 在内核级别提供额外安全强制措施。

自动安全修补

Amazon ECS 托管实例通过自动修补帮助改善工作负载的安全状况:

  • 定期安全更新:Amazon 会根据您配置的维护窗口,定期使用最新的安全补丁更新实例。

  • 有限的实例生命周期:运行实例的最长生命周期限制为 14 天,以确保应用程序在配置适当且已安装最新安全补丁的实例上运行。

  • 维护窗口控制:您可以使用 Amazon EC2 事件窗口功能来指定 Amazon ECS 何时应将您的实例替换为已修补的实例。

特权 Linux 功能

Amazon ECS 托管实例支持需要提升 Linux 权限的软件,从而实现高级监控和安全解决方案:

  • 支持的功能:您可以选择加入所有特权 Linux 功能,包括 CAP_NET_ADMINCAP_SYS_ADMINCAP_BPF

  • 常用解决方案:这使您能够运行常用网络监控和可观测性解决方案(例如 Wireshark 和 Datadog)。

  • 需要明确配置:您必须明确配置 Amazon ECS 托管实例容量提供程序才能启用特权 Linux 功能,因为这可能会给您的应用程序带来额外的安全风险。

重要

启用特权 Linux 功能可能会使您的任务面临额外的安全风险。只有在应用程序需要时才启用这些功能,并确保您了解其安全影响。

合规性和监管支持

Amazon ECS 托管实例保持与 Amazon ECS 相同的合规性状态:

  • 合规性计划:Amazon ECS 托管实例与 Amazon ECS 属于相同的 Amazon 保障计划范围,包括 PCI-DSS、HIPAA 和 FedRAMP。

  • FIPS 端点:Amazon ECS 托管实例遵循在 Amazon 区域中使用 FIPS 端点的账户级设置,以帮助实现 FedRAMP 合规性。

  • 客户自主管理型密钥:它支持实现合规性所需的安全功能,例如用于加密的客户自主管理型密钥。

Amazon ECS 托管实例 FIPS-140 注意事项

在 Amazon ECS 托管实例上使用 FIPS-140 合规性时,请考虑以下事项:

  • 符合 FIPS-140 标准的托管实例 AMI 仅在 Amazon GovCloud (US) 区域中可用。

  • Amazon ECS 托管实例支持 FIPS-140-3

  • 默认情况下,Amazon GovCloud (US) 区域启用了 FIPS-140 合规性。如果需要运行不符合 FIPS 标准的工作负载,请在托管实例容量提供程序配置中关闭 FIPS 标准。

  • 为了符合 FIPS-140 标准,您的任务的 cpuArchitecture 必须是 X86_64

在 Amazon ECS 托管实例上禁用 FIPS

默认情况下,Amazon GovCloud (US) 区域的 Amazon ECS 托管实例容量提供程序会启动符合 FIPS 标准的 AMI。在创建新的 Amazon ECS 托管实例容量提供程序时,您可以选择禁用 FIPS-140 合规性。请按照下面的步骤创建不符合 FIPS 标准的新容量提供程序。

  1. 在容量提供程序上禁用 FIPS-140 合规性。

    aws ecs create-capacity-provider \ --cluster cluster-name \ --name capacity-provider-name \ --managed-instances-provider '{ "infrastructureRoleArn": "infrastructure-role-arn", "instanceLaunchTemplate": { "ec2InstanceProfileArn": "instance-profile-arn", "fipsEnabled": false, "networkConfiguration": { "subnets": ["subnet-id"], "securityGroups": ["security-group-id"] } } }'
  2. 您可以选择使用 ECS Exec 运行以下命令来验证容量提供程序的 FIPS-140 合规性状态。

    cluster-name 替换为集群名称,将 task-id 替换为任务的 ID 或 ARN,将 container-name 替换为任务中要对其运行命令的容器的名称。

    返回值“1”表示您正在使用 FIPS。

    aws ecs execute-command \ --cluster cluster-name \ --task task-id \ --container container-name \ --interactive \ --command "cat /proc/sys/crypto/fips_enabled"

安全注意事项

在使用 Amazon ECS 托管实例时,需要了解和规划几个重要的安全注意事项。这些注意事项有助于您就工作负载架构和安全要求做出明智的决策。

多任务安全模型

Amazon ECS 托管实例中的默认多任务放置模型与 Fargate 的单任务隔离不同:

  • 共享实例资源:多个任务可能在同一个实例上运行,这可能会使一个任务暴露于在同一实例或同一 ECS 集群中运行的其他任务的漏洞。

  • 单任务选项:对于需要具有 VM 级安全隔离边界的默认 Fargate 安全模型的客户,您可以将 Amazon ECS 托管实例配置为使用单任务模式。

  • 成本与安全权衡:多任务模式可以优化成本并缩短任务启动时间,而单任务模式可提供更强的隔离。

处理实例中断

在使用 Amazon ECS 托管实例时,请务必设计您的应用程序以容许中断。

  • 中断容忍:将 Amazon ECS 托管实例与容许底层服务或任务中断的应用程序结合使用。

  • 基于服务的工作负载:使用 Amazon ECS 服务实现任务自动替换,或者在独立任务上运行持续时间受控且不超过 14 天的工作负载。

  • 正常关闭:配置任务关闭宽限期以控制中断的影响。

数据访问和隐私

Amazon ECS 托管实例保持严格的数据访问控制:

  • 无法访问客户数据:尽管 Amazon 控制托管实例的生命周期和实例上的任务放置,但 Amazon 无法登录托管实例或访问客户数据。

  • 仅指标和日志:Amazon 仅捕获提供 Amazon ECS 托管实例功能所需的指标和相关日志。

  • 锁定的安全模型:该安全模型禁止管理访问,从而消除了人为错误和篡改的可能性。

安全最佳实践

使用 Amazon ECS 托管实例时,请遵循下面的最佳实践:

  • 评估安全模型:根据您的安全要求(特别是关于多任务放置模型的安全要求),慎重决定是否采用 Amazon ECS 托管实例。

  • 需要时使用单任务模式:如果工作负载需要更强的隔离,请将 Amazon ECS 托管实例配置为使用单任务模式。

  • 尽量减少特权功能:仅在绝对必要时启用特权 Linux 功能,并了解关联的安全风险。

  • 为中断做好计划:设计应用程序以顺利处理实例替换,特别是考虑最长 14 天的实例生命周期。

  • 配置维护时段:使用 EC2 事件窗口控制何时替换实例,以尽量减少对工作负载的影响。

  • 监控和审计:定期检查 Amazon ECS 托管实例配置,并监控任何与安全相关的事件或更改。