首页 文章

什么是“承担”AWS中的角色?

提问于
浏览
2

问题

究竟“假设”角色在AWS中意味着什么?提供了明确的定义?

背景

经常使用 Assuming a role 并尝试理解定义及其实际含义 .

我想当一个主体(IAM用户,在EC2实例中运行的应用程序等调用访问AWS资源的操作)需要调用访问AWS资源的操作时:

  • AWS(API?或AWS中的某些授权运行时?)标识可以授予主体的角色 .

例如如果指定EC2用户执行assume-role API调用并运行访问IAM配置文件所附加到的EC2实例中的AWS资源的应用程序,则:

  • EC2 IAM配置文件中的所有IAM角色
    假设角色调用中请求的

  • IAM角色和策略

  • 授予EC2用户的IAM角色

  • AWS从角色中找到角色,该角色具有允许原则对资源执行操作的策略(操作,资源) .

  • AWS将原则的角色切换为已识别的角色 .

当第3步发生时,就说“委托人已经担任了这个角色” . 它是否正确?

研究

Using IAM Roles

在IAM用户,应用程序或服务可以使用您创建的角色之前,您必须授予切换到该角色的权限 . 您可以使用附加到IAM用户组之一或用户自身的任何策略来授予必要的权限 .

2 回答

  • 1

    假设一个角色意味着要求安全令牌服务(STS)为您提供一组临时凭证 - 角色凭证 - 特定于您要承担的角色 . (具体来说,是一个具有该角色的新“会话” . )

    您可以选择包含具有此请求的策略,该策略将用于将临时凭证的权限限制为角色策略允许的子集 .

    然后,您使用这些凭据进行进一步的请求 . 这些凭据看起来类似于具有access-key-id和secret的IAM用户凭证,但访问密钥以 ASIA 而不是 AKIA 开头,并且还有第三个元素,称为安全令牌,必须包含在使用临时凭证签名的请求中 .

    当您使用这些临时凭证发出请求时,您拥有与该角色关联的权限,而不是您自己的(如果有的话),因为您已经使用了新的身份 . CloudTrail可用于将角色凭证追溯回承担角色的用户,但服务不知道谁在使用凭据 .

    tl;dr: Assuming a role means obtaining a set of temporary credentials which are associated with the role and not with the entity that assumed the role.

    AWS(API?或AWS中的某些授权运行时?)标识可以授予主体的角色 .

    不 . 您指定要承担的角色 .

    当"you"是在EC2实例上运行的代码,并且该实例具有实例角色时,EC2基础结构实际上代表该实例调用assume-role,并且您可以从instance metadata service获取临时凭证 . 这些凭据只能从实例中访问,但它们不存储在实例中 .

    运行Lambda函数时,Lambda基础结构会联系STS并将临时凭据放在environment variables中 . 同样,函数可以访问这些凭证,而不是存储在函数内部 .

    在任何一种情况下,您都可以使用这些凭据调用assume角色并承担不同的角色,但在大多数环境中这不是必需的 .

    例如如果指定EC2用户执行assume-role API调用并运行访问IAM配置文件所附加到的EC2实例中的AWS资源的应用程序,则:

    AWS不了解EC2用户 . 实例上运行的所有内容都可以访问实例角色 .

    EC2 IAM配置文件中的所有IAM角色

    An instance profile can only include one role .

    假设角色调用中请求的IAM角色和策略

    您要求只承担一个角色 . 您不需要请求策略 - 如果您希望临时凭证的权限少于角色凭据允许的权限,则只需指定策略 . 如果您需要在不受信任的位置运行代码(例如浏览器或应用程序中的代码)以便能够使用凭据对请求进行签名,则可能会执行此操作 .

    AWS从角色中找到角色,该角色具有允许原则对资源执行操作的策略(操作,资源) .

    不是 . 如上所述,当您调用assume-role时,您会要求具体的角色 .

    AWS将原则的角色切换为已识别的角色 .

    不可以 . 您可以使用提供的临时凭证进行切换 .

  • 6

    当第3步发生时,据说:“委托人承担了这个角色” . 它是否正确?

    您在承担角色时提到的步骤是 correct .

    这里重要的一点是IAM角色的信任关系配置,您可以在其中授予每个承担角色的IAM用户,应用程序或服务 . 这是您授予承担特定角色的权限的地方 .

    这在许多方面都很重要,它可以控制谁可以担任角色,并且重要的是不仅要提供对角色的最小访问权限,还要授予可以担任该角色的最少量的实体 .

相关问题