

# Amazon ECS 的 IAM 最佳实践
<a name="security-iam-bestpractices"></a>

您可以使用 AWS Identity and Access Management（IAM）通过基于规则的策略来管理和控制对您的 AWS 服务和资源的访问权限，以实现身份验证和授权目的。更具体地说，通过此服务，您可以使用应用于用户、组或角色的策略来控制对 AWS 资源的访问权限。在这三者中，用户是可以访问您的资源的账户。IAM 角色是一组可由经过身份验证的身份承担的权限，该身份与 IAM 之外的特定身份无关。有关更多信息，请参阅[访问管理的 Amazon ECS 概览：权限和策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_access-management.html)。

## 遵循最低权限访问策略
<a name="security-iam-recommendations-leastpriv"></a>

创建限定范围的策略，以允许用户执行其规定的工作。例如，如果开发者需要定期停止某项任务，请创建一个仅允许该特定操作的策略。以下示例仅允许用户在具有特定 Amazon 资源名称（ARN）的集群上停止属于特定 `task_family` 的任务。在条件中引用 ARN 也是使用资源级权限的一个示例。您可以使用资源级权限来指定要向其应用操作的资源。有关更多信息，请参阅 [Amazon ECS 的策略资源](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/security_iam_service-with-iam.html#security_iam_service-with-iam-id-based-policies-resources)。

## 将集群资源作为管理边界
<a name="security-iam-recommendations-clusterboundary"></a>

范围过于狭窄的策略可能会导致角色激增并增加管理开销。与其创建仅限于特定任务或服务的角色，不如创建限制于集群的角色并将该集群用作您的主要管理边界。

## 创建自动化管道将最终用户与 API 隔离开来
<a name="security-iam-recommendations-usingpipelines"></a>

您可以通过创建管道来限制用户可以使用的操作，这些管道会自动打包应用程序并将其部署到 Amazon ECS 集群上。这会有效地将创建、更新和删除任务的工作委托给管道。有关更多信息，请参阅《AWS CodePipeline 用户指南》**中的[教程：使用 CodePipeline 进行 Amazon ECS 标准部署](https://docs.aws.amazon.com/codepipeline/latest/userguide/ecs-cd-pipeline.html)。

## 使用策略条件来增加一层安全性
<a name="security-iam-recommendations-policyconditions"></a>

当您需要增加安全层时，请在策略中添加一个条件。如果您正在执行特权操作或需要限制可对特定资源执行的一组操作，则这可能很有用。以下示例策略在删除集群时需要多因素授权。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecs:DeleteCluster"
      ],
      "Condition": {
        "Bool": {
          "aws:MultiFactorAuthPresent": "true"
        }
      },
    "Resource": ["*"]
    }
  ]
}
```

------

应用于服务的标签会传播到属于该服务的所有任务。因此，您可以创建仅限于具有特定标签的 Amazon ECS 资源的角色。在以下策略中，IAM 主体启动和停止标签键为 `Department`、标签值为 `Accounting` 的所有任务。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:StartTask",
                "ecs:StopTask",
                "ecs:RunTask"
            ],
            "Resource": "arn:aws:ecs:us-east-1:123456789012:cluster/my-cluster",
            "Condition": {
                "StringEquals": {"ecs:ResourceTag/Department": "Accounting"}
            }
        }
    ]
}
```

------

## 定期审核对 API 的访问权限
<a name="security-iam-recommendations-audit"></a>

用户可能会更改角色。在他们更改角色后，之前授予他们的权限可能不再适用。请务必审核谁有权访问 Amazon ECS API，以及该访问权限是否仍有保障。考虑将 IAM 与用户生命周期管理解决方案集成，该解决方案可在用户离开组织时自动撤消访问权限。有关更多信息，请参阅《AWS Identity and Access Management 用户指南》**中的 [AWS 安全审核指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-audit-guide.html)。