我正在尝试进入整个IAM设置。我有一个我希望 lambda 能够承担的角色。 因此,我的信任关系策略设置如下:
{ "版本": "2012-10-17", "声明":[ { "效果": "允许", "主体":{ "服务": "lambda.amazonaws.com" }, "action": "sts:AssumeRole" } ] }
现在,据我了解,这将允许任何lambda承担这个角色。
我可以再缩小一点,所以它只有一个特定的 lambda,允许假设它吗?
我试图用 lambda 的 arn 替换"Service": "lambda.amazonaws.com"
,但它对我来说并没有真正奏效:/
我认为这实际上是相反的方式......
创建 Lambda 函数时,您可以指定要使用的角色。允许函数使用角色的能力需要iam:PassRole
权限。具有此权限的任何人都可以将 Lambda 函数配置为使用特定(或任何(IAM 角色。
以下是授予用户将角色传递给 AWS 服务 - AWS 身份和访问管理的权限中的示例策略,该策略授予 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 函数(,从而授予他们管理员权限。因此,应严格控制使用PassRole
的能力。
因此,您实际上需要一个具有PassRole
的用户来为函数分配角色,而不是角色信任 Lambda 函数。