我正在构建一个将使用Amazon的SimpleDB服务的应用程序。它使用亚马逊的AWS Android SDK。据我了解,我不建议将我的Amazon凭据(访问ID和密钥)硬编码到我的应用程序中,因为在应用程序二进制文件中查找字符串并不困难。如何以安全的方式从我的应用程序访问SimpleDB?我想我应该使用KeyStore,但我不知道该怎么做。
如果它有帮助,我使用Eclipse作为我的IDE(我说这是为了Eclipse可以使整个亚马逊凭证更加简单)。
答案 0 :(得分:4)
AWS提供有关credential management in mobile applications。
的详细信息讨论了两种模式:
这两个选项之间的选择基本上归结为您是要将应用程序逻辑放在移动设备上还是放在服务器上(这些可能是AWS EC2服务器)。如果您决定将逻辑放在服务器上,那么您不必担心在移动设备上放置任何AWS凭据。但是,如果您确实希望直接从移动应用程序访问AWS,那么您将遇到如何管理此交互的问题。还有两种情况:
如果您提供的应用程序允许客户管理自己的AWS服务,则可以使用第一个方案。对于大多数面向客户的应用,您将使用自己的帐户。为了解决第二种情况,AWS目前建议使用IAM管理您帐户的用户池,其解释如下:
在此解决方案中,客户池由您的AWS账户下的IAM管理。移动应用程序用户被重定向到托管在单独服务器队列中的登录页面。由于您拥有并运行管理应用程序身份验证的服务器,因此您可以在将AWS安全凭证分发到移动应用程序之前验证应用程序用户的身份。
您可以使用AWS Identity and Access Management(IAM)以编程方式为您的AWS账户下的每个应用程序用户创建一个新的IAM用户,而不是为每个应用程序用户使用同一组AWS凭证。
AWS身份和访问管理(IAM)允许您创建多个用户并管理您的AWS账户中每个用户的权限。用户是具有唯一安全凭证的身份(在您的AWS账户内),可用于访问AWS服务。 IAM消除了在客户,应用程序和用户之间共享密码或访问密钥的需要;并可以根据需要轻松启用或禁用用户访问权限。在将安全凭证传递给移动应用程序时,IAM提供更多灵活性,控制和安全性。您可以在http://aws.amazon.com/iam/了解有关IAM的更多信息。