保护AWS API Gateway

3
我们有一个现有的应用程序,正在AWS上开发所需的新API。我们希望在不迁移用户到AWS Cognito的情况下为我们的AWS API启用基于角色的访问控制。我们认为可能需要使用开发者身份提供程序和IAM角色,但不确定如何将我们应用程序中的用户附加到IAM角色。如果能够在这方面提供任何帮助,将不胜感激。
提前致谢。
注意:我是AWS的新手。

所以您已经有一个应用程序,其中实现了基于角色的访问控制的API,并且需要通过API网关提供服务? - Ashan
我们计划在AWS基础设施/服务中开发所有现有遗留应用所需的新API。现有应用程序已定义用户角色/权限。我们希望为通过AWS API网关公开的新API使用相同的角色/权限。 - Kay
2个回答

1
我认为你应该看一下API Gateway自定义授权者
这样,您可以将已有的授权系统插入到API网关中。只要您不直接与用户共享AWS资源,我不会使用IAM角色。
如果您仅针对应用程序使用基于角色的访问控制,则使用现有的应用程序角色绝对是可以的。您只需要使它们可访问,以便自定义授权者Lambda可以根据其验证授权。

谢谢Jens Walter。这是否意味着API网关自定义授权应该从现有应用程序中获取与给定令牌相关联的权限,并将其转换为IAM策略? - Kay
对于 API 访问,您不需要 IAM 策略,因为网关有自己的策略框架。只有在您想直接访问 AWS 资源(如 S3、DynamoDB 或 RDS)时才需要 IAM 策略。在您的情况下,我假设应用程序控制对后端的访问,并且网关应该仅允许/拒绝对 API 资源的访问。 - jens walter

0

由于您计划使用应用程序的现有角色和权限来管理API,因此有几个选项可供选择。

  • 使用Cognito的IAM授权器用户组功能,最近引入并将现有角色映射到开发人员身份提供者的属性,并将其映射到组。使用此功能,您可以通过在IAM策略中定义它们,为不同的用户组定义不同的API网关资源。

  • 使用自定义授权器,您需要编写自定义授权器代码来进行身份验证和授权。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接