从应用程序隐藏 AWS 秘密
Hiding AWS secret from application
我是一名 Java 后端工程师,致力于前端(SPA 和 Android)必须将(大)文件发送到 S3 的功能。因为我必须处理很多请求。由于网络过载的原因,我避免在前端向我发送文件以便我可以将其发送到 S3 的地方创建 'proxy' 服务,但我对确保我的应用程序安全的最佳方式有些担忧。
我寻找了一些解决方案,但找不到能够完全满足我需求的解决方案。
Amazon S3 upload with not showing secret key in frontend
这个post几乎已经是我的答案了,但是我没有足够的分数来发表评论。
S3 upload directly in JavaScript
我阅读了一些关于 AWS 的文档,但我仍然有一些问题和一些必要条件。
- 该解决方案可能允许客户端通过身份验证的用户直接将文件发送到 s3
- 它可能会进行 GET 调用以获取一些令牌或类似的东西(无需发送大量数据)
- 要安全(前端无密钥知识)
哪种解决方案可能适合我?
- 后端可以生成签名密钥并将其发送到前端向 AWS 发出请求 (http://docs.aws.amazon.com/general/latest/gr/signature-v4-examples.html)
- 我可以使用 STS 为每次上传生成一个临时凭证。
您认为这些方法行得通吗?你觉得哪一个更好?有什么权衡取舍?还有其他方法可以解决这个问题吗?
此处最好的做法是使用 Cognito 服务在应用程序中生成允许上传到 S3 的匿名凭据。对于 Android,您可以使用 SDK 然后从设备向 S3 进行分段上传,这也将加快该过程。
我找不到确切的 Android 示例,但这是 iOS 的示例,术语应该与另一个 SDK 相同:iOSTransferManager 。
如果您有基于网络的应用程序,您也可以直接从 javascript 调用 Cognito:Cognito in JS example
希望有帮助!
- 克里斯
我是一名 Java 后端工程师,致力于前端(SPA 和 Android)必须将(大)文件发送到 S3 的功能。因为我必须处理很多请求。由于网络过载的原因,我避免在前端向我发送文件以便我可以将其发送到 S3 的地方创建 'proxy' 服务,但我对确保我的应用程序安全的最佳方式有些担忧。
我寻找了一些解决方案,但找不到能够完全满足我需求的解决方案。
Amazon S3 upload with not showing secret key in frontend
这个post几乎已经是我的答案了,但是我没有足够的分数来发表评论。 S3 upload directly in JavaScript
我阅读了一些关于 AWS 的文档,但我仍然有一些问题和一些必要条件。
- 该解决方案可能允许客户端通过身份验证的用户直接将文件发送到 s3
- 它可能会进行 GET 调用以获取一些令牌或类似的东西(无需发送大量数据)
- 要安全(前端无密钥知识)
哪种解决方案可能适合我?
- 后端可以生成签名密钥并将其发送到前端向 AWS 发出请求 (http://docs.aws.amazon.com/general/latest/gr/signature-v4-examples.html)
- 我可以使用 STS 为每次上传生成一个临时凭证。
您认为这些方法行得通吗?你觉得哪一个更好?有什么权衡取舍?还有其他方法可以解决这个问题吗?
此处最好的做法是使用 Cognito 服务在应用程序中生成允许上传到 S3 的匿名凭据。对于 Android,您可以使用 SDK 然后从设备向 S3 进行分段上传,这也将加快该过程。
我找不到确切的 Android 示例,但这是 iOS 的示例,术语应该与另一个 SDK 相同:iOSTransferManager 。
如果您有基于网络的应用程序,您也可以直接从 javascript 调用 Cognito:Cognito in JS example 希望有帮助! - 克里斯