如何将 IAM 角色分配给用户或组

Posted

技术标签:

【中文标题】如何将 IAM 角色分配给用户或组【英文标题】:How to assign IAM role to users or groups 【发布时间】:2018-06-13 14:41:11 【问题描述】:

我知道如何在 AWS IAM 中创建 usergrouprole。 我还可以将策略附加到它们中的每一个。 例如,选择一个组后,您可以转到permissions 选项卡,并为其附加一些策略。

但是,我不知道如何将角色附加到用户或组。

我查看了文档和论坛,但没有找到任何东西,感谢您的帮助。

【问题讨论】:

将角色附加到用户需要什么?你能进一步解释你的用例吗? (随时编辑您的问题以提供更多信息。) 感谢 Alisa 接受答案 【参考方案1】:

您不能将 IAM 角色分配给 IAM 用户或组,请参阅此 AWS 官方文档中的注释:- https://aws.amazon.com/iam/faqs/

问:我可以将 IAM 角色添加到 IAM 组吗?

暂时没有。

还有

问:什么是 IAM 角色?

IAM 角色是一个 IAM 实体,它定义了一组权限 发出 AWS 服务请求。 IAM 角色不与 特定的用户或组。相反,受信任的实体承担角色,例如 作为 IAM 用户、应用程序或 AWS 服务(例如 EC2)。

似乎将IAM role 附加到IAM user 并不简单,请关注https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html 了解如何操作。

过去,我为我的 ec2-instance 创建了 IAM 角色,在启动该实例时,我可以选择该 IAM 角色,我的 ec2-instance 将拥有该 IAM 角色中设置的所有权限,同样您可以分配一个角色到其他 ec2-services,这是 IAM 角色最常用的场景。

【讨论】:

【参考方案2】:

要将 IAM 角色分配给 IAM 用户,请执行以下操作:

    打开 IAM 仪表板 选择您要分配给 IAM 用户的角色 编辑信任策略 在委托人部分添加 IAM 用户的 ARN

就是这样。现在使用切换角色功能对其进行测试。

按照相同的过程将 IAM 角色分配给 IAM 组。

【讨论】:

【参考方案3】:

我会小心修改信任关系 - 如果它们配置不当,可能会导致您的帐户或资源受到损害。

在向同一帐户上的用户/组授予显式访问权限时,您不应修改角色的信任关系。进一步澄清: 角色应该有这样的信任关系:


  "Version": "2012-10-17",
  "Statement": [
    
      "Sid": "",
      "Effect": "Allow",
      "Principal": 
        "AWS": "arn:aws:iam::<YOUR ACC ID>:root"
      ,
      "Action": "sts:AssumeRole",
    
  ]

这实质上意味着我将此角色的权限委派给"arn:aws:iam::&lt;YOUR ACC ID&gt;:root" 中列出的帐户——现在由该帐户的 IAM 操作员使用诸如以下的策略授予对该角色的访问权限:


  "Version": "2012-10-17",
  "Statement": [
    
      "Action": [
        "sts:AssumeRole"
      ],
      "Effect": "Allow",
      "Resource": "<role arn>"
    
  ]

此策略可以附加到用户或组,并且该用户或组中的用户将能够承担具有上述信任关系的角色。

可以将用户置于组中以获得与组关联的权限,或者可以担任角色进入会话,其中权限现在是角色的权限。用户拥有访问密钥和秘密访问密钥。 组仅用于向用户提供权限,即将用户置于组中。 角色是一组临时权限,即用户承担一个角色,并在会话期间被授予临时凭据。角色会话将具有访问密钥、秘密访问密钥和会话令牌。

【讨论】:

我认为一旦用户对角色 arn 具有 sts:AssumeRole 策略,假设该角色对用户应该是自动/透明的,我错了吗?还是他们必须在 aws cli 命令上手动指定 --profile=role? 他们将需要手动指定 --profile=role,或者,您可以运行 aws sts assume-role --role-arn &lt;role arn&gt; --role-session-name &lt;session name&gt; 来生成一组临时访问密钥。如果您将这些访问密钥导出为环境变量,则不必传入 --profile 参数,因为您现在运行的所有命令都将在该会话中运行。更多信息@docs.aws.amazon.com/cli/latest/userguide/…【参考方案4】:

IAM 角色是一个 IAM 实体,它定义了一组权限 发出 AWS 服务请求。 IAM 角色不与 特定的用户或组。相反,受信任的实体承担角色,例如 作为 IAM 用户、应用程序或 AWS 服务(例如 EC2)。

这里有清楚的记录。

https://aws.amazon.com/iam/faqs/

【讨论】:

以上是关于如何将 IAM 角色分配给用户或组的主要内容,如果未能解决你的问题,请参考以下文章

Terraform GCP 将 IAM 角色分配给服务帐户

是否可以为 Azure AD 中的用户或组分配多个角色?

通过API向用户分配IAM角色

如何将 S3 存储桶锁定到特定用户和 IAM 角色

如何使用我的机器人将角色自动分配给新成员?

如果玩游戏,C#将角色分配给用户