问题 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 日志,您可以了解您的角色为何未能执行某些操作。