将 IAM 角色应用于 ECS 实例

Posted

技术标签:

【中文标题】将 IAM 角色应用于 ECS 实例【英文标题】:Applying IAM roles to ECS instances 【发布时间】:2016-06-08 09:03:37 【问题描述】:

有没有办法在某些 IAM 角色下运行 ECS 容器?

基本上,如果您有一个依赖 IAM 角色来访问 AWS 资源(如 S3 存储桶或 Dynamo 表)的代码/服务器,当您将该代码/服务器作为 ECS 容器运行时,会发生什么情况?你能控制每个容器的角色吗?

【问题讨论】:

【参考方案1】:

更新 2:现在任务级别支持角色

更新:Lyft 有一个名为“metadataproxy”的开源项目,声称可以解决这个问题,但收到了一些安全问题。

当您启动容器主机(连接到集群的实例)时,这称为容器实例。

此实例将附加一个 IAM 角色(在指南中,我认为它是 ecsInstanceProfile 的名称)。

此实例运行 ecs 代理(以及随后的 docker)。它的工作方式是当任务运行时,实际的容器调用/从 AWS 服务等。这被我的主机(代理)吞没了,因为它实际上是控制进出 docker 容器的网络。这个流量实际上现在来自代理。

因此,不,您无法在每个容器的基础上控制 IAM 角色,您需要通过加入集群的实例(代理)来控制。

即。

您加入 i-aaaaaaa,它具有 ECS IAM 策略 + S3 只读集群。 您加入 i-bbbbbbb,它具有 ECS IAM 策略 + S3 读/写集群。

您启动了一个需要对 S3 进行读写的任务“c”。您需要确保它在 i-bbbbbb 上运行

【讨论】:

这描述了 Marc 的意思docs.aws.amazon.com/AmazonECS/latest/developerguide/…

以上是关于将 IAM 角色应用于 ECS 实例的主要内容,如果未能解决你的问题,请参考以下文章

ECS CLI - 您不能为需要服务相关角色的服务指定 IAM 角色

使用 IAM 角色从 ECS 的 S3 存储桶中提取对象被拒绝访问

Amazon ECS - 在 Docker 入口点上使用 IAM 角色时权限被拒绝

如何使用 IAM 角色通过 aws sdk (java) 从 ECS 容器调用 s3 存储桶

添加作为服务相关角色的 IAM 角色

python boto3将IAM角色附加/替换为ec2