使用API网关来代理AWS服务(例如S3)的功能很好。
然而,似乎安全是事后的想法。使用客户授权者时,用于AWS服务集成的执行角色似乎会留下综合服务。
API网关中的自定义授权器返回principalId
(例如用户ID)和IAM策略文档。如何建立一个IAM策略来执行服务集成的执行角色,例如用户ID/principalid在S3对象的路径中。
即。使用自定义授权器 S3集成,如何将对象访问仅限于对象标签或路径的一部分的特定密钥空间?http://docs.aws.amazon.com/amazons3/latest/dev/object/object-tagging.html或http://docs.aws.aws.amazon.com/amazoncloudwatch/latest/latest/latest/events/policy-keys-keys-keys-ceys-ceys-cwe.html
我遇到了同样的问题。这是我用路径解决的方式。
假设User1需要访问其数据,并且其空间为
domain/user1/object1
domain/user1/object2
在自定义授权器中,您可以返回用户只能访问域/user1/*的策略。您可以使用任何想要的模式并将存储组织到所需的任何名称空间中。如果要为多个用户展开名称空间,则可以访问
domain/user1/*
domain/managers/*
和Apigateway将负责其余的事情。如果用户尝试访问上述URL路径以外的任何内容,则用户将被禁止403。
遵循AWS的文档,并且工作得很完美,
http://docs.aws.amazon.com/apigateway/latest/developerguide/use-custom-authorizer.html
此外,如果您需要身份验证,我建议云旗和cognito。