我需要在 IAM 中拥有哪些权限才能使用 Chef Knife 启动 EC2 实例?

我需要在 IAM 中拥有哪些权限才能使用 Chef Knife 启动 EC2 实例?

问题 1:我尝试在 IAM AWS 控制台中创建用户,该用户仅具有使用 knife ec2 方法启动新实例的限制权限。目前,只有使用策略“Amazon EC2 完全访问”的完全访问权限才有效。创建用户并授予启动/停止实例和描述图像的权限不起作用。

Q2:我该如何调试这个

ERROR: Fog::Compute::AWS::Error: UnauthorizedOperation => You are not authorized to perform this operation.

并追踪我到底需要哪些权限。(-V -V -V 没有用)

答案1

问题 1:我必须调试 knife-ec2 gem,以便找出启动 EC2 实例所需的最低 IAM 权限。以下是最低策略:

{
  "Statement": [
    {
      "Sid": "Stmt123",
      "Action": [
        "ec2:RunInstances",
        "ec2:DescribeInstances",
        "ec2:DescribeKeyPairs",
        "ec2:DescribeImages",
        "ec2:CreateTags",
        "ec2:DescribeTags"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ]
    }
  ]
}

请注意 Sid 应该是唯一的。

Q2:我对 Ruby 的了解有限,可能没有方便的调试方法。我个人使用 binding.pry 作为调试器。请参考以下内容文章了解更多信息。

答案2

您需要允许运行实例

答案3

我必须允许使用“访问密钥 ID”和“秘密访问密钥”的用户访问 IAM

答案4

我提出的政策是:

    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances",
                "ec2:CreateTags",
                "ec2:DescribeInstances",
                "ec2:DescribeImages",
                "ec2:DescribeKeyPairs",
                "ec2:DescribeVpcs",
                "ec2:DescribeSubnets",
                "ec2:DescribeTags",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeAddresses"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": <You should list the roles you want to be able to create here
 or use '*' but that is dangerous because if it allows for privilege escalation>
        }
    ]
}

我认为这可能取决于您使用 knife ec2 create 的具体功能/选项。我尝试了其他答案中的策略(使用 iam:PassRole 和一些额外的策略),但具体到 ec2:DescribeAddress 时遇到了问题。

通过查看我的 ButtTrail 日志,您可以了解您的角色为何未能执行某些操作。

相关内容