我正在尝试进入整个IAM设置。我有一个角色,希望lambda能够担任。 因此,我的信任关系策略设置如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
据我所知,现在这将允许任何lambda担任此角色。
我可以再缩小一点,所以只有一个特定的lambda可以接受吗?
我曾尝试用lambda的arn代替"Service": "lambda.amazonaws.com"
,但对我来说并没有真正的作用:/
答案 0 :(得分:1)
我认为这实际上是另一回事...
创建Lambda函数时,可以指定要使用的角色。 允许功能使用角色的功能需要iam:PassRole
权限。拥有此权限的任何人都可以将Lambda函数配置为使用特定的(或任何)IAM角色。
以下是Granting a User Permissions to Pass a Role to an AWS Service - AWS Identity and Access Management中的示例策略,该示例策略授予IAM用户传递角色的能力:
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": [
"iam:GetRole",
"iam:PassRole"
],
"Resource": "arn:aws:iam::<account-id>:role/EC2-roles-for-XYZ-*"
}]
}
iam:PassRole
是非常重要的权限,因为它控制可以将角色传递给服务的人员。如果使用不当,用户可能会获得太多权限。例如,假设有一个具有很多权限的管理员角色。被授予使用PassRole
权限的任何人都可以创建使用此角色的资源(例如Amazon EC2实例或AWS Lambda函数),从而为他们提供Admin功能。因此,应严格控制使用PassRole
的能力。
因此,您实际上需要一个拥有PassRole
的用户才能将角色分配给该功能,而不是信任Lambda函数的角色。