我已经将API网关设置为使用IAM进行身份验证,我喜欢用户获得临时凭证的想法,然后他们可以使用这些凭据来访问服务。此设置还有助于配置通过身份验证和未经身份验证的用户都可以访问的端点。
承诺(至少在我看来)是,我们可以使用这些临时凭据(或等效的令牌)访问所有服务。
我似乎发现的限制是使用从API网关执行的lamdas。虽然“事件”中有一些参数告诉我用户已经过身份验证,但我无法找到一种方法将AssumeRole作为根据API进行身份验证的认知标识。
我尝试使用STS到AssumeRole作为在CognitoIdentityPool中定义为身份验证用户的角色。
AssumeRoleWithWebIdentity感觉更合适,但是在传递给lambda的大量字段中,我不确定是否有WebIdentityToken。
到目前为止,我一直在使用HTTP网关。我看到API网关中的REST端点可以使用认知授权器。据我所知,这将不允许未经身份验证的/来宾用户通过认知身份池。
我可以看到,使用AWS扩容和临时IAM凭证,客户端可以直接访问服务,这将在很大程度上起作用。不过,我想提供一个简化的后端,以保持客户端打火机。
有可能得到其中一个可能的结果吗?
我讨厌让lambda访问整个S3桶或DynamoDB表,我更愿意设置用户级别的策略,只有当我能够承担该身份时才能应用这些策略。
任何指点、指导和帮助都将不胜感激!
发布于 2022-10-20 07:30:32
我假设您正在配置认知组中的IAM角色,以便您可以使用不同的权限分配不同的组。
有两个选项,我可以想到,以实现你想要的。
备选案文1
在Lambda代码中,要调用的API应该是AssumeRoleWithWebIdentity). (而不是像AssumeRoleWithWebIdentity).这样的其他变体)。
选项2
因为IAM角色控制对AWS服务的访问,所以您可以让客户端直接调用AWS API,而不是使用Lambda对所有内容进行正面处理。
https://stackoverflow.com/questions/74095551
复制相似问题