使用API网关代理AWS服务(如S3)时效果很好。
然而,似乎安全性是事后的想法。用于AWS Service集成的执行角色似乎在使用客户授权程序时保持打开集成服务。
API网关中的自定义授权程序返回principalId
(例如userId)和IAM策略文档。如何为服务集成的执行角色构建IAM策略,这需要例如userId / principalId位于S3对象的路径中。
即。使用自定义授权器+ S3集成如何保护对象只能访问其中principalId是对象标记或路径的一部分的特定密钥空间? http://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html或http://docs.aws.amazon.com/AmazonCloudWatch/latest/events/policy-keys-cwe.html
答案 0 :(得分:1)
我遇到了同样的问题。以下是我用路径解决它的方法。
假设user1需要访问他们的数据,他们的空间是
domain/user1/object1
domain/user1/object2
在自定义授权程序中,您可以返回用户只能访问domain / user1 / *的策略。您可以使用所需的任何模式,并将存储组织到您想要的任何命名空间。如果要为多个用户展开名称空间,可以访问
domain/user1/*
domain/managers/*
APIGateway将负责其余部分。如果用户尝试访问除上述URL路径之外的任何内容,则用户将获得403禁止。
遵循AWS的文档并完美运行,
http://docs.aws.amazon.com/apigateway/latest/developerguide/use-custom-authorizer.html
另外,如果您需要身份验证,我会推荐CloudFront签名的URL和Cognito。