首页 文章

AWS EC2实例通过Ansible IAM角色创建instance_profile_name UnauthorizedOperation:错误

提问于
浏览
9

我试图通过ansible使用IAM角色创建EC2实例,但我在启动新实例时遇到错误

failed: [localhost] => (item= IAMRole-1) => {"failed": true, "item": " IAMRole-1"}
msg: Instance creation failed => UnauthorizedOperation: You are not authorized to perform
this operation. Encoded authorization failure message: Ckcjt2GD81D5dlF6XakTSDypnwrgeQb0k
ouRMKh3Ol1jue553EZ7OXPt6fk1Q1-4HM-tLNPCkiX7ZgJWXYGSjHg2xP1A9LR7KBiXYeCtFKEQIC
W9cot3KAKPVcNXkHLrhREMfiT5KYEtrsA2A-xFCdvqwM2hNTNf7Y6VGe0Z48EDIyO5p5DxdNFsaSChUcb
iRUhSyRXIGWr_ZKkGM9GoyoVWCBk3Ni2Td7zkZ1EfAIeRJobiOnYXKE6Q

而iam角色具有完整的ec2访问权限,具有以下策略

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": "ec2:*",
      "Effect": "Allow",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "elasticloadbalancing:*",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "cloudwatch:*",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "autoscaling:*",
      "Resource": "*"
    }
  ]
}

请给我任何建议 .

1 回答

  • 11

    这里的问题不在于IAM Role for Amazon EC2本身,而是您(即您自己使用的AWS凭证)似乎缺少启动时请求的EC2实例所需的 iam:PassRole 权限,请参阅使用所需的权限部分有关Amazon EC2的角色,请致电Granting Applications that Run on Amazon EC2 Instances Access to AWS Resources了解详细信息:

    要使用角色启动实例,开发人员必须具有启动Amazon EC2实例的权限以及传递IAM角色的权限 . 以下示例策略允许用户使用AWS管理控制台启动具有角色的实例 . 该策略允许用户通过指定星号()来传递任何角色并执行所有Amazon EC2操作 . ListInstanceProfiles操作允许用户查看AWS账户上可用的所有角色 . 示例策略,授予用户使用Amazon EC2控制台启动具有任何角色的实例的权限{
    “版本”:“2012-10-17”,
    “声明”:[{
    “效果”:“允许”,
    “行动”:[
    “IAM:PassRole”
    “IAM:ListInstanceProfiles”
    “EC2:*”
    ]
    “资源”:“

    }]
    }

    通过 PassRole 权限要求此间接的原因是能够限制用户在启动实例时可以将哪个角色传递给Amazon EC2实例:

    这有助于防止用户运行具有比授予用户更多权限的应用程序 - 即,能够获得提升的权限 . 例如,假设用户Alice仅具有启动Amazon EC2实例和使用Amazon S3存储桶的权限,但她传递给Amazon EC2实例的角色具有使用IAM和DynamoDB的权限 . 在这种情况下,Alice可能能够启动实例,登录实例,获取临时安全凭证,然后执行未经授权的IAM或DynamoDB操作 .

    您可能希望阅读我对How to specify an IAM role for an Amazon EC2 instance being launched via the AWS CLI?的回答以获得更详细的解释,该解释也链接到Mike Pope关于Granting Permission to Launch EC2 Instances with IAM Roles (PassRole Permission)的好文章,该文章从AWS的角度解释了主题 .

相关问题