我正在尝试按照tutorial设置lambda函数来关闭/启动实例,并在ec2实例中添加特殊标记。
管理员用户分配给我的角色的策略使我能够访问所有lambda函数,例如
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"cloudwatch:*",
"cognito-identity:ListIdentityPools",
"cognito-sync:GetCognitoEvents",
"cognito-sync:SetCognitoEvents",
"dynamodb:*",
"events:*",
"iam:ListAttachedRolePolicies",
"iam:ListRolePolicies",
"iam:ListRoles",
"iam:PassRole",
"kinesis:DescribeStream",
"kinesis:ListStreams",
"kinesis:PutRecord",
"lambda:*",
"logs:*",
"s3:*",
"sns:ListSubscriptions",
"sns:ListSubscriptionsByTopic",
"sns:ListTopics",
"sns:Subscribe",
"sns:Unsubscribe"
],
"Resource": "*"
}
]
}
在选择"基本执行角色"同时设置Lambda function handler and role
时,我被困在第6步。有错误
用户:arn:aws:iam :: xxxx:用户/ Yyyy无权执行: iam:资源上的CreateRole:arn:aws:iam :: xxxx:role / lambda_basic_exec
我的角色政策看起来像这样:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"ec2:Describe*",
"ec2:Start*",
"ec2:RunInstances",
"ec2:Stop*",
],
"Resource": "*"
}
]
}
鉴于我的权利有限,这似乎是合理的。
我应该要求管理员更新分配给我的策略,以便我可以成功设置lambda函数的预定事件,如教程中所述?或者这可以通过其他方式使用IAM,例如添加新角色?我只想要足够的权利。
答案 0 :(得分:2)
您有安全约束,因为您需要策略中的“iam:CreateRole”,以及“iam:attachRolePolicy”和“iam:createPolicy”之类的内容。因此,您基本上可以管理您的帐户,因为您可以使用任何策略创建角色并将其附加到EC2实例或直接承担。
你可以做的是让你的管理员为lambda创建一个或多个角色,例如一个用于S3访问,一个用于ec2命令等。当你想要创建一个lambda函数时,选择其中一个预先创建的角色创建一个新的。
答案 1 :(得分:1)
自回答此问题以来,一段时间以来,AWS发生了很大变化,我想提一下AWS在2018年推出的一项新功能: IAM实体的权限边界 [1]。
它们用于“将权限管理委派给受信任的员工” [2]和其他IAM实体(例如角色)。
也就是说,您无需授予特定角色类似admin的权限即可创建其他角色作为接受的答案状态。您可以授予条件 iam:CreateRole 权限,条件是需要在每个新创建的角色{"StringEquals": {"iam:PermissionsBoundary": "arn:aws:iam::111122223333:policy/XCompanyBoundaries"}}
上设置权限边界。
由权限边界指定的策略定义了有效分配给角色的最大权限。 [1]
为了创建具有权限边界的角色,您可以例如对cli命令aws iam create-role
使用可选参数-permissions-boundary 。 [3]
[1] https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html
[2] https://aws.amazon.com/blogs/security/delegate-permission-management-to-developers-using-iam-permissions-boundaries/
[3] https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html