安卓应用中的亚马逊访问凭证



Amazon Cloud Services (AWS) 提供了随时可用的库,可以直接从您的 Android 应用程序调用 SDB、S3、SNS 等。这使得不熟悉 Web 服务和 Web 应用程序的移动开发人员非常容易创建完全可扩展的基于云的应用程序。我们在这些 API 调用中提供 Amazon 访问凭证以连接到我们的云帐户;我的问题是:

  1. 如何在应用程序中有效地使用密钥轮换,因为我将分发应用程序,一旦密钥更改可能意味着现有用户的时间段中断。
  2. 代码中对 Amazon 访问凭证进行硬编码(作为字段常量等)是否使其容易受到提取?通过反编译等?

和我们地区的亚马逊倡导者交谈过,他告诉亚马逊客户端库不是为此目的而设计的。

  • 它可以用于内部应用程序(未发布),例如客户端演示应用程序。
  • 如果您要将凭证与要在公开市场上发布的应用程序捆绑在一起(不推荐),请使用 IAM 并创建具有受限访问权限的单独凭证。
  • 如果您正在构建像Instagram这样的应用程序,则可能需要设置一个Web服务器来代理对Amazon的调用(实际上使客户端库无用)。

显然,我不是很相信。我认为整个客户端库与亚马逊的通信(绕过对网络服务器的需求)对于移动开发人员来说可能是一个很大的优势。

回复:

代码中对 Amazon 访问凭证进行硬编码(作为字段常量等)是否使其容易受到提取?通过反编译等?

是的,通过在二进制文件中查找字符串和模式。也可以反编译,但这通常不是必需的。

第一个问题是,您要防范什么样的威胁?政府?付费黑客?或者您只是想让通过应用程序以外的访问变得不容易?

  • 将密钥的访问权限限制为应用所需的数据。
  • 将密钥分成几部分存储在应用程序中。以某种方式修改它们(例如 ROT47),然后在发送到服务时重新组合。
  • 不要将所有关键信息放入应用中。 需要使用其他安全设备,例如亚马逊 MFA
  • 安装监视以检测异常访问模式,这些模式可能指示来自应用外部的访问。

最新更新