我可以将假设规则策略限制为特定的lambda,而不是一般的lambda吗?

时间:2019-09-14 15:01:06

标签: amazon-web-services aws-lambda amazon-iam

我正在尝试进入整个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",但对我来说并没有真正的作用:/

1 个答案:

答案 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函数的角色。