Amazon ECS 托管实例的安全注意事项 - Amazon Elastic Container Service

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

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

安全模型

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

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

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

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

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

安全功能

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

安全最佳实践

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

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

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

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

自动安全修补

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

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

  • 有限的实例生命周期:运行实例的最长生命周期限制为 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 属于相同的 AWS 保障计划范围,包括 PCI-DSS、HIPAA 和 FedRAMP。

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

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

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

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

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

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

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

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

在 Amazon ECS 托管实例上禁用 FIPS

默认情况下,AWS 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 托管实例保持严格的数据访问控制:

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

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

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

安全最佳实践

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

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

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

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

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

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

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