【问题标题】:Executing AWS Lambda with assumed role with web identity使用具有 Web 身份的假定角色执行 AWS Lambda
【发布时间】:2021-11-26 16:25:30
【问题描述】:

是否可以通过 API 网关执行 Lambda,并代表 Cognito 身份验证用户扮演角色?

现在我在 Lambda 代码中手动进行角色假设:

  const assumedRole = await sts.send(new AssumeRoleWithWebIdentityCommand({
    RoleArn: 'some role ARN',
    RoleSessionName: event.requestContext.authorizer.jwt.claims['cognito:username'],
    WebIdentityToken: event.headers.authorization
  }));

但我想避免这种情况,并且已经使用这个假定的角色执行 Lambda。

我遇到的困难是弄清楚实现这一目标需要什么 IAM 角色和策略。

谢谢!

【问题讨论】:

  • 这可能会导致一种非常糟糕的做法。是什么阻止了恶意用户使用他们的令牌自己承担角色、直接访问资源并绕过任何验证和清理逻辑?
  • 这个想法是只允许他们需要通过 IAM 角色和策略文档访问的资源。

标签: amazon-web-services aws-lambda aws-api-gateway amazon-cognito amazon-iam


【解决方案1】:

您可以将 cognito 令牌从请求的标头传递给 lambda,然后为身份调用获取 get 凭据。这将是动态承担认知用户角色的最佳方法。如果您已将 cognito 配置为根据令牌授予角色,您甚至不需要在调用中明确提供角色 arn。

【讨论】:

    猜你喜欢
    • 2019-03-08
    • 2016-12-22
    • 2022-01-18
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 2019-06-02
    • 2021-05-07
    • 1970-01-01
    相关资源
    最近更新 更多