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

时间:2014-06-25 06:41:36

标签: amazon-ec2 amazon-iam ansible-playbook

我正在尝试使用IAM角色通过ansible创建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 个答案:

答案 0 :(得分:12)

此处的问题不在于IAM Role for Amazon EC2本身,而在于您(即您自己使用的AWS凭据)似乎缺少iam:PassRole权限,而这需要通过&## 39;启动时请求的EC2实例的角色,有关详细信息,请参阅{{3>}中{em>使用Amazon EC2的角色所需的权限部分:

  

要启动具有角色的实例,开发人员必须具有权限   启动Amazon EC2实例以及传递IAM角色的权限。

     

以下示例策略允许用户使用AWS管理   用于启动具有角色的实例的控制台。该策略允许用户   传递任何角色并通过指定执行所有Amazon EC2操作   星号(*)。 ListInstanceProfiles操作允许用户查看全部   AWS账户上可用的角色。

     

授予用户启动实例权限的示例策略   使用Amazon EC2控制台的任何角色

{
  "Version": "2012-10-17",   
  "Statement": [{
    "Effect": "Allow",
    "Action": [
      "iam:PassRole",
      "iam:ListInstanceProfiles",
      "ec2:*"
    ],
    "Resource": "*"
  }]
}

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

  

这有助于防止用户运行应用程序   拥有比授予用户更多的权限 - 即来自   能够获得提升的特权。例如,想象一下   用户Alice只有权启动Amazon EC2实例和   使用Amazon S3存储桶,但她传递给Amazon EC2的角色   instance具有使用IAM和DynamoDB的权限。在这种情况下,   Alice可能能够启动实例,登录它,获得临时性   安全凭证,然后执行IAM或DynamoDB操作   她没有被授权。

您可能希望阅读我对Granting Applications that Run on Amazon EC2 Instances Access to AWS Resources的回答,以获得更详尽的解释,该解释也链接到Mike Pope关于How to specify an IAM role for an Amazon EC2 instance being launched via the AWS CLI?的精彩文章,该文章从AWS点解释了主题观点。