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_ADMIN、CAP_SYS_ADMIN和CAP_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 标准的新容量提供程序。
-
在容量提供程序上禁用 FIPS-140 合规性。
aws ecs create-capacity-provider \ --clustercluster-name\ --namecapacity-provider-name\ --managed-instances-provider '{ "infrastructureRoleArn": "infrastructure-role-arn", "instanceLaunchTemplate": { "ec2InstanceProfileArn": "instance-profile-arn", "fipsEnabled": false, "networkConfiguration": { "subnets": ["subnet-id"], "securityGroups": ["security-group-id"] } } }' -
您可以选择使用 ECS Exec 运行以下命令来验证容量提供程序的 FIPS-140 合规性状态。
将
cluster-name替换为集群名称,将task-id替换为任务的 ID 或 ARN,将container-name替换为任务中要对其运行命令的容器的名称。返回值“1”表示您正在使用 FIPS。
aws ecs execute-command \ --clustercluster-name\ --tasktask-id\ --containercontainer-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 托管实例配置,并监控任何与安全相关的事件或更改。