

# Amazon ECS 的 Fargate 安全注意事项
<a name="fargate-security-considerations"></a>

每项任务都有专用的基础设施容量，因为 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\$1SYS\$1ADMIN 和 CAP\$1NET\$1ADMIN）受到限制，以防止权限升级。Fargate 支持向任务添加 [CAP\$1SYS\$1PTRACE](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#other_task_definition_params) Linux 功能，以允许在任务中部署的可观测性和安全工具来监控容器化应用程序。
+ 无法访问底层主机：客户和 AWS 操作人员都无法连接到运行客户工作负载的主机。您可以使用 ECS Exec 在 Fargate 上运行的容器中运行命令或获取 shell。您可以使用 ECS exec 来帮助收集用于调试的诊断信息。Fargate 还阻止容器访问底层主机的资源，例如文件系统、设备、联网和容器运行时系统。
+ 联网：您可以使用安全组和网络 ACL 来控制入站和出站流量。Fargate 任务会从您的 VPC 中配置的子网接收一个 IP 地址。