【发布时间】: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