承担角色/限制从另一个 lambda 函数调用 lambda 函数

问题描述 投票:0回答:1

我在 2 个不同的 aws 账户中有 2 个 lambda,如下所示: 拉姆达A

  • 在AWS账户#111中
  • 具有具有以下策略的 RoleA:
  1. 访问 s3,
  2. 秘密经理 3-允许RoleB调用它

Lambda B

  • 在 AWS 账户# 222 中
  • 具有具有以下策略的 RoleB:
  1. 承担角色
  2. 调用 Lambda

当 LambdaB 获得代入角色令牌时,该令牌可以执行以下操作:

  1. 调用 lambdaA(好的,这是必需的)
  2. 访问111 s3!!! (为什么!)
  3. 获取111个秘密!!! (为什么!)

如何仅允许 lambdaB 使用令牌仅调用该函数。无法完全访问所有 **RoleA **?

用户可以访问所有角色策略,我希望用户只能调用该功能

amazon-web-services amazon-iam assume-role
1个回答
0
投票

如果我的理解是正确的,您的主要目标是通过 lambda B 调用 lambda A。如果情况并非如此,请纠正我。

如果是这种情况,您可以在 lambda 函数 A 中使用基于资源的策略,以允许 Lambda B 附加/使用的角色进行调用。这可以避免允许 roleB 承担角色 A(来自 lambda A 的角色)。

因此,如果您进入 lambda A 的 lambda 控制台,然后转到“配置”->“权限”->“基于资源的策略”->“查看策略文档”。然后你可以使用类似下面的东西:

{
    "Version": "2012-10-17",
    "Id": "default",
    "Statement": [
        {
            "Sid": "lambda-allow-lambdaB-to-invoke",
            "Effect": "Allow",
            "Principal": {
              "AWS": "full-arn-of-roleB-used-in-lambda-B"
            },
            "Action": "lambda:InvokeFunction",
            "Resource":  "full-arn-of-lambdaA"}
            }
        }
     ]
}

这样,在 lambdaB 内部,您可以使用 boto3 lambda 客户端调用 lambdaA,并且 lambdaB 的权限仍将仅限于 roleB,因为它不会承担任何角色(roleA)。

© www.soinside.com 2019 - 2024. All rights reserved.