为什么aws opsworks register
命令需要这些权限才能运行?:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"opsworks:AssignInstance",
"opsworks:CreateStack",
"opsworks:CreateLayer",
"opsworks:DeregisterInstance",
"opsworks:DescribeInstances",
"opsworks:DescribeStackProvisioningParameters",
"opsworks:DescribeStacks",
"opsworks:UnassignInstance"
],
"Resource": [
"*"
]
},
{
"Effect": "Allow",
"Action": [
"ec2:DescribeInstances"
],
"Resource": [
"*"
]
},
{
"Effect": "Allow",
"Action": [
"iam:AddUserToGroup",
"iam:CreateAccessKey",
"iam:CreateGroup",
"iam:CreateUser",
"iam:ListInstanceProfiles",
"iam:PassRole",
"iam:PutUserPolicy"
],
"Resource": [
"*"
]
}
]
}
也许我过于谨慎了,但在我看来,任何授予iam:CreateUser
和iam:PutUserPolicy
完全权限的策略基本上都是一个巨大的安全漏洞,因为这种级别的访问权限将使您有权在任何时候创建管理员用户。
我是不是错过了什么?或者,上述策略是否可以更安全,并且仍然适用于OpsWorks?
这些IAM权限用于为实例创建IAM用户,并且这些权限仅用于aws opsworks register
命令一次。
只对一个命令拥有一次所有这些权限有点麻烦,但更多的是为了简化实例注册配置。如果您关心权限问题,您可以从工作站注册实例,而不是使用实例配置文件(如aws opsworks register --infrastructure-class ec2 --region us-east-1 --stack-id ac95d52c-3f4d-4452-b134-b44f6b4c4f02 --ssh-username [username] --ssh-private-key [key-path] i-050e2a8c
)在实例内部注册实例。这样,只有您的工作站需要这样的IAM权限。