修改 EC2 服务角色,使其可以由同一账户中的 IAM 用户代入

Modify EC2 service role so that it can be assumed by an IAM user in the same account

我有一个 EC2 角色 ssm-role。我希望另一个 IAM 用户启动附加了 ssm-role 的 EC2 实例。

ssm-role 附带的政策:AmazonEC2RoleforSSM

ssm-role 的信任关系:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com",
        "AWS": "arn:aws:iam::<ACC_ID>:user/test-user"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

我为想要承担 ssm-role 的用户添加了以下内联策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "test",
            "Effect": "Allow",
            "Action": [
                "sts:AssumeRole"
            ],
            "Resource": "arn:aws:iam::<ACC_ID>:role/ssm-role"
        }
    ]
}

尽管如此,test-user 无法启动附加了 ssm-role 的 EC2。

任何帮助将不胜感激。

注意:测试用户有 EC2FullAccess

要启动带有附加角色的 Amazon EC2 实例,发出请求的 IAM 用户需要对给定角色具有 iam:PassRole 权限。

这是防止潜在的 "elevation of authority" 情况所必需的,例如:

  • 用户权限有限
  • 他们启动一个 EC2 实例,指定一个具有提升权限的角色
  • 他们登录到 EC2 实例并使用 Role 的权限来执行他们通常不允许执行的功能

因此,用户必须具有给定角色的 iam:PassRole 权限(至少)才能启动使用该角色的实例。

参见:Granting a User Permissions to Pass a Role to an AWS Service - AWS Identity and Access Management