Amazon EC2 的 IAM 最佳实践 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon EC2 的 IAM 最佳实践

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

遵循最低权限访问策略

创建限定范围的策略,以允许用户执行其规定的工作。例如,如果开发者需要定期停止某项任务,请创建一个仅允许该特定操作的策略。以下示例仅允许用户在具有特定 Amazon 资源名称(ARN)的集群上停止属于特定 task_family 的任务。在条件中引用 ARN 也是使用资源级权限的一个示例。您可以使用资源级权限来指定要向其应用操作的资源。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:StopTask" ], "Condition": { "ArnEquals": { "ecs:cluster": "arn:aws:ecs:region:account_id:cluster/cluster_name" } }, "Resource": [ "arn:aws:ecs:region:account_id:task-definition/task_family:*" ] } ] }

将集群资源作为管理边界

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

创建自动化管道将最终用户与 API 隔离开来

您可以通过创建管道来限制用户可以使用的操作,这些管道会自动打包应用程序并将其部署到 Amazon ECS 集群上。这会有效地将创建、更新和删除任务的工作委托给管道。有关更多信息,请参阅《Amazon CodePipeline 用户指南》中的教程:使用 CodePipeline 进行 Amazon ECS 标准部署

使用策略条件来增加一层安全性

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

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

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

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:StartTask", "ecs:StopTask", "ecs:RunTask" ], "Resource": "arn:aws:ecs:*", "Condition": { "StringEquals": {"ecs:ResourceTag/Department": "Accounting"} } } ] }

定期审核对 API 的访问权限

用户可能会更改角色。在他们更改角色后,之前授予他们的权限可能不再适用。请务必审核谁有权访问 Amazon ECS API,以及该访问权限是否仍有保障。考虑将 IAM 与用户生命周期管理解决方案集成,该解决方案可在用户离开组织时自动撤消访问权限。有关更多信息,请参阅《Amazon Identity and Access Management 用户指南》中的 Amazon 安全审核指南