0

使用API​​网关代理AWS服务(例如S3)效果很好。使用自定义授权商和AWS服务集成的AWS API网关安全性

然而,似乎安全是事后才想到的。用于AWS服务集成的执行角色似乎在使用客户授权人时留下了综合服务。

API网关中的自定义授权程序返回principalId(例如userId)和IAM策略文档。如何为服务集成的执行角色构建一个IAM策略,这需要例如将userId/principalId放在S3对象的路径中。

I.e.使用自定义授权人+ S3集成如何将对象访问权限仅保留在principalId是对象标记或路径的一部分的特定密钥空间中? http://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.htmlhttp://docs.aws.amazon.com/AmazonCloudWatch/latest/events/policy-keys-cwe.html

回答

1

我遇到了同样的问题。这是我如何用路径解决它。

假设USER1需要访问他们的数据和他们的空间是

domain/user1/object1 
domain/user1/object2 

在自定义授权者可以返回用户可以访问策略仅域/用户1/*。您可以使用任何您想要的模式,并将存储组织到您想要的任何名称空间。如果要为多个用户扩展命名空间,则可以访问

domain/user1/* 
domain/managers/* 

并且APIGateway将负责其余部分。如果用户尝试访问除上述URL路径之外的任何内容,则用户将被禁止403。

其次从AWS文档和完美的作品,

http://docs.aws.amazon.com/apigateway/latest/developerguide/use-custom-authorizer.html

另外,如果你想验证我会建议CloudFront的标识的URL和Cognito。