AWS 担任角色:"Invalid information in one or more fields."

AWS Assume Role: "Invalid information in one or more fields."

我正计划实施 AssumeRole 场景,下面是场景

  1. 用户将能够 create/stop Ec2 实例但不能终止。
  2. 要终止他必须承担角色(要承担的角色 Ec2FullAccess)

我做了以下事情

  1. 创建一个用户 Test1 并允许 start/stop/launch Ec2 实例并提供以下角色 (EC2FullAccess) 的权限是用户
  2. 的政策

    {
        "Version": "2012-10-17",
        "Statement": [<br>
            {
                "Action": "ec2:*",
                "Effect": "Allow",
                "Resource": "*"
            },
            {
                "Effect": "Deny",
                "Action": "ec2:TerminateInstances",
                "Resource": "*"
            },
            {
                "Action": "sts:AssumeRole",
                "Effect": "Allow",
                "Resource": "arn:aws:iam::226904037275:role/EC2FullAccess"
            }
        ]
    }
  1. 在名称为 EC2FullAccess 的同一帐户中创建一个角色,该角色将授予终止 Ec2 实例的权限 Ec2FullAccess 使用 AmazonEC2FullAccess Permission Policy 下面是它的 Trust Policy
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
} 

现在,当我以 IAM 用户身份登录时 Test1 然后单击切换角色,我提供以下详细信息

账号:1234
角色:EC2FullAccess

当我点击 Switch Role 时,出现以下错误
一个或多个字段中的信息无效。检查您的信息或联系您的管理员。

我缺少什么

您可以这样创建角色:

  • 创建角色
  • 对于可信实体类型,select另一个 AWS 账户并输入相同账户的账户 ID(它显示在与 'Switch Role' 命令相同的菜单中)——这可能看起来很奇怪,但它在信任策略中创建了正确的委托人。
  • 附加所需的策略并保存

然后,使用切换角色

顺便说一下,分配 EC2FullAccess 可能有点矫枉过正——它允许在 EC2 中执行 任何操作 ,包括删除 VPC、删除 Amazon EBS 卷、更改网络设置等。我建议您创建一个授予 TerminateInstances 权限的特定策略,甚至可能将其减少到特定实例(例如通过标签或 VPC)。