Amazon ECS 的 Fargate 安全注意事项 - Amazon Elastic Container Service

Amazon ECS 的 Fargate 安全注意事项

每项任务都有专用的基础设施容量,因为 Fargate 在隔离的虚拟环境中运行每个工作负载。在 Fargate 上运行的工作负载不与其他任务共享网络接口、临时存储、CPU 或内存。您可以在一个任务中运行多个容器,包括应用程序容器和 sidecar 容器,或者仅仅是 sidecar。sidecar 是在 Amazon ECS 任务中与应用程序容器一起运行的容器。当应用程序容器运行核心应用程序代码时,在 sidecar 中运行的进程可以增强应用程序。Sidecar 可帮助您将应用程序功能隔离到专用容器中,从而更轻松地更新应用程序的各个部分。

属于同一任务的容器会共享 Fargate 启动类型的资源,因为这些容器将始终在同一台主机上运行,并共享计算资源。这些容器还共享 Fargate 提供的临时存储空间。任务中的 Linux 容器共享网络命名空间,包括 IP 地址和网络端口。在任务中,属于该任务的容器可以通过 localhost 进行相互通信。

Fargate 中的运行时系统环境会阻止您使用 EC2 实例支持的特定控制器功能。设计在 Fargate 上运行的工作负载时,请考虑以下事项:

  • 没有特权容器或访问权限 - Fargate 目前不提供诸如特权容器或访问权限之类的功能。这将影响应用场景,例如在 Docker 中运行 Docker。

  • 对 Linux 功能的访问受限 - 容器在 Fargate 上运行的环境已被锁定。其他 Linux 功能(例如 CAP_SYS_ADMIN 和 CAP_NET_ADMIN)受到限制,以防止权限升级。Fargate 支持向任务添加 CAP_SYS_PTRACE Linux 功能,以允许在任务中部署的可观测性和安全工具来监控容器化应用程序。

  • 无法访问底层主机 - 客户和 AWS 操作人员都无法连接到运行客户工作负载的主机。您可以使用 ECS Exec 在 Fargate 上运行的容器中运行命令或获取 shell。您可以使用 ECS exec 来帮助收集用于调试的诊断信息。Fargate 还阻止容器访问底层主机的资源,例如文件系统、设备、联网和容器运行时系统。

  • 联网 - 您可以使用安全组和网络 ACL 来控制入站和出站流量。Fargate 任务会从您的 VPC 中配置的子网接收一个 IP 地址。