【问题标题】:Using S3 for saving images from mobile application使用 S3 从移动应用程序中保存图像
【发布时间】:2017-05-02 08:21:45
【问题描述】:

我正在创建一个后端服务,该服务将从 Android 应用程序获取有关创建某些服务请求的请求。这些服务请求将包含有关服务项目的详细信息以及与请求相关的一些图像。我们希望使用 S3 直接从 android 应用程序存储图像,并通过后端服务上的 API 调用获取保存的图像密钥。

这种方法的问题在于授权移动应用访问共享存储桶。

  • 如果我们将共享桶的访问密钥保存在应用程序中,则可以反编译这段代码,从而泄露机密。
  • 另一种选择是在后端服务上创建一个 API,它将在移动应用程序需要将图像放入 S3 之前将授权密钥返回给移动应用程序。通过这种方式,我们还可以定期轮换秘密。

就安全性而言,这些方法中哪一种更好?还有其他我想念的方法吗?这听起来像是使用 S3 保存文件的标准访问实践,因此必须有针对这种特定场景的东西。

【问题讨论】:

    标签: amazon-web-services mobile amazon-s3 amazon-iam


    【解决方案1】:

    您无需发明 API 即可执行此操作 - AWS 仅针对此用例提供其 STS 服务。

    http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html

    要请求临时安全凭证,您可以使用 AWS STS API 操作。

    要调用 API,您可以使用其中一个可用的 AWS 开发工具包 适用于各种编程语言和环境,包括 Java、.NET、Python、Ruby、Android 和 iOS。 SDK 负责处理 诸如对您的请求进行加密签名、重试等任务 必要时请求,并处理错误响应。你也可以使用 AWS STS 查询 API,在 AWS 安全令牌中描述 服务 API 参考。最后,两个命令行工具支持 AWS STS 命令:AWS 命令​​行界面和 AWS 工具 Windows PowerShell。

    AWS STS API 操作返回临时安全凭证 由访问密钥和会话令牌组成。访问密钥包括 访问密钥 ID 和密钥。用户(或应用程序 用户运行)可以使用这些凭据来访问您的资源。 创建凭证时,它们与 IAM 关联 访问控制策略,限制用户在使用 证书。有关详细信息,请参阅使用临时安全性 请求访问 AWS 资源的凭证。

    【讨论】:

    • @Brennan 你的意思是从我的后端服务中,我可以使用 STS 为移动应用程序创建临时帐户以将这些图像上传到 S3。这仍然不能解决将这些凭据分发给应用程序的问题。我们需要为此创建一个 API,对吧?
    • 您不创建帐户,而是请求临时凭据。 STS API 将为您提供这些凭证,这些凭证将在 IAM 角色的上下文中运行 - 即具有限制权限 - 并且只会持续很短的时间并且不能再次使用。本质上,它们是时间和权限受限的访问密钥
    猜你喜欢
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多