

# Amazon ECS 托管实例的安全注意事项
<a name="managed-instances-security"></a>

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

## 安全模型
<a name="managed-instances-security-model"></a>

 Amazon ECS 托管实例实施了一个在灵活性和保护之间取得平衡的全面安全模型：
+ **AWS 托管基础设施**：AWS 控制托管实例的生命周期并处理安全修补，从而消除人为错误和篡改的可能性。
+ **无管理访问**：安全模型已锁定，禁止对托管实例进行管理访问。
+ **多任务放置**：默认情况下，Amazon ECS 托管实例会将多个任务放置到单个实例上，以优化成本和利用率，与 Fargate 相比，这样做可放松工作负载隔离约束。
+ **数据隔离**：尽管 AWS 控制实例的生命周期和任务放置，但 AWS 无法登录托管实例或访问客户数据。

## 了解托管实例
<a name="managed-instances-understanding"></a>

Amazon ECS 托管实例在您的账户中预置 EC2 托管实例。作为指定运营商，Amazon ECS 代表您管理这些实例的整个生命周期，包括预置、扩展、修补和终止。您没有权限直接终止这些实例或修改实例设置。有关更多信息，请参阅 [Amazon EC2 托管式实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/amazon-ec2-managed-instances.html)。

### 识别托管实例
<a name="managed-instances-identifying"></a>

您可以使用以下指示器识别账户中的 Amazon ECS 托管实例：
+  Amazon EC2 `DescribeInstances` 响应中的`Operator` 字段，值为 `ecs.amazonaws.com`。
+ 实例上的 `aws:ec2:managed-launch` 标签，值为 `ecs-managed-instances`。

### 托管资源可见性
<a name="managed-instances-resource-visibility"></a>

从 2026 年 4 月 22 日开始，默认情况下，Amazon EC2 会将新的托管实例从 Amazon EC2 控制台视图和 API 列表操作中隐藏。可见性设置不会影响计费或资源操作，无论可见性配置如何，托管实例仍可正常运行并可计费。您可以随时调整此行为。有关更多信息，请参阅[托管资源可见性设置](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/amazon-ec2-managed-instances.html#managed-resource-visibility-settings)。

## 安全功能
<a name="managed-instances-security-features"></a>

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

### 安全最佳实践
<a name="managed-instances-security-best-practices"></a>

 托管实例根据 AWS 安全最佳实践进行配置，包括：
+ **无 SSH 访问**：禁用远程 shell 访问以防止未经授权的访问。
+ **不可变的根文件系统**：无法修改根文件系统，从而确保系统完整性。
+ **内核级强制访问控制**：SELinux 在内核级别提供额外安全强制措施。

### 自动安全修补
<a name="managed-instances-security-patching"></a>

 Amazon ECS 托管实例通过自动修补帮助改善工作负载的安全状况：
+ **定期安全更新**：AWS 会根据您配置的维护窗口，定期使用最新的安全补丁更新实例。
+ **有限的实例生命周期**：运行实例的最长生命周期限制为 14 天，以确保应用程序在配置适当且已安装最新安全补丁的实例上运行。
+ **维护窗口控制**：您可以使用 Amazon EC2 事件窗口功能来指定 Amazon ECS 何时应将您的实例替换为已修补的实例。

### 特权 Linux 功能
<a name="managed-instances-privileged-capabilities"></a>

 Amazon ECS 托管实例支持需要提升 Linux 权限的软件，从而实现高级监控和安全解决方案：
+ **支持的功能**：您可以选择加入所有特权 Linux 功能，包括 `CAP_NET_ADMIN`、`CAP_SYS_ADMIN` 和 `CAP_BPF`。
+ **常用解决方案**：这使您能够运行常用网络监控和可观测性解决方案（例如 Wireshark 和 Datadog）。
+ **需要明确配置**：您必须明确配置 Amazon ECS 托管实例容量提供程序才能启用特权 Linux 功能，因为这可能会给您的应用程序带来额外的安全风险。

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

## 合规性和监管支持
<a name="managed-instances-compliance"></a>

 Amazon ECS 托管实例保持与 Amazon ECS 相同的合规性状态：
+ **合规性计划**：Amazon ECS 托管实例与 Amazon ECS 属于相同的 AWS 保障计划范围，包括 PCI-DSS、HIPAA 和 FedRAMP。
+ **FIPS 端点** - Amazon ECS 托管实例支持容量提供程序级别的 FIPS 端点配置。与使用账户级别设置的 Fargate 不同，Amazon ECS 托管实例使用按容量提供程序设置，因为 FIPS 采用按实例配置。您可以在创建或更新容量提供程序时配置 FIPS。
+ **客户自主管理型密钥**：它支持实现合规性所需的安全功能，例如用于加密的客户自主管理型密钥。

## Amazon ECS 托管实例 FIPS-140 注意事项
<a name="managed-instances-fips-considerations"></a>

在 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
<a name="managed-instances-use-fips"></a>

默认情况下，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}}"]
               }
           }
       }'
   ```

1. 您可以选择使用 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"
   ```

## 安全注意事项
<a name="managed-instances-security-considerations"></a>

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

### 多任务安全模型
<a name="managed-instances-multi-task-security"></a>

 Amazon ECS 托管实例中的默认多任务放置模型与 Fargate 的单任务隔离不同：
+ **共享实例资源**：多个任务可能在同一个实例上运行，这可能会使一个任务暴露于在同一实例或同一 ECS 集群中运行的其他任务的漏洞。
+ **单任务选项**：对于需要具有 VM 级安全隔离边界的默认 Fargate 安全模型的客户，您可以将 Amazon ECS 托管实例配置为使用单任务模式。
+ **成本与安全权衡**：多任务模式可以优化成本并缩短任务启动时间，而单任务模式可提供更强的隔离。

### 处理实例中断
<a name="managed-instances-interruption-handling"></a>

 在使用 Amazon ECS 托管实例时，请务必设计您的应用程序以容许中断。
+ **中断容忍**：将 Amazon ECS 托管实例与容许底层服务或任务中断的应用程序结合使用。
+ **基于服务的工作负载**：使用 Amazon ECS 服务实现任务自动替换，或者在独立任务上运行持续时间受控且不超过 14 天的工作负载。
+ **正常关闭**：配置任务关闭宽限期以控制中断的影响。

### 数据访问和隐私
<a name="managed-instances-data-access"></a>

 Amazon ECS 托管实例保持严格的数据访问控制：
+ **无法访问客户数据**：尽管 AWS 控制托管实例的生命周期和实例上的任务放置，但 AWS 无法登录托管实例或访问客户数据。
+ **仅指标和日志**：AWS 仅捕获提供 Amazon ECS 托管实例功能所需的指标和相关日志。
+ **锁定的安全模型**：该安全模型禁止管理访问，从而消除了人为错误和篡改的可能性。

## 安全最佳实践
<a name="managed-instances-security-best-practices-recommendations"></a>

 使用 Amazon ECS 托管实例时，请遵循下面的最佳实践：
+ **评估安全模型**：根据您的安全要求（特别是关于多任务放置模型的安全要求），慎重决定是否采用 Amazon ECS 托管实例。
+ **需要时使用单任务模式**：如果工作负载需要更强的隔离，请将 Amazon ECS 托管实例配置为使用单任务模式。
+ **尽量减少特权功能**：仅在绝对必要时启用特权 Linux 功能，并了解关联的安全风险。
+ **为中断做好计划**：设计应用程序以顺利处理实例替换，特别是考虑最长 14 天的实例生命周期。
+ **配置维护时段**：使用 EC2 事件窗口控制何时替换实例，以尽量减少对工作负载的影响。
+ **监控和审计**：定期检查 Amazon ECS 托管实例配置，并监控任何与安全相关的事件或更改。