【问题标题】:Location to put credential file AWS android sdk accessing AWS s3放置凭证文件 AWS android sdk 访问 AWS s3 的位置
【发布时间】:2015-07-09 02:30:20
【问题描述】:

我有一个调用 s3 将图片上传和下载到存储桶的 android 应用程序,我现在使用 CognitoCachingCredentialsProvider,我想在创建 s3client 对象时开始使用访问密钥作为凭据。 我知道我对 AWS_ACCESS_KEY_ID 和 AWS_SECRET_KEY 进行了硬编码,将它们放入环境变量或主目录中的文件中。

由于我将在我的 android 应用程序中使用 AWS_ACCESS_KEY_ID 和 AWS_SECRET_KEY,因此环境变量将不可用。我的问题是我将这些密钥放在哪里,以便我可以在我的 android 应用程序中使用 s3client。如果应用要进入应用商店,文件驻留在哪里。

【问题讨论】:

    标签: android amazon-s3


    【解决方案1】:

    您不应该让您在 Android 应用程序中、硬编码或在单独的文件中访问密钥和密钥。如果它在应用商店上架,则尤其如此。这是一个很大的安全风险,因为任何人都可以反编译您的应用程序并获取您的凭据。

    您当前使用的 Cognito 凭据有什么问题?

    【讨论】:

    • 一旦应用是应用商店,你是说 Cognito 凭据是应用应该使用的吗?这也是标准方式吗?
    • 是的,亚马逊强烈推荐将 Cognito 作为在应用商店中使用的标准。原因是您可以使用 Cognito 控制资源访问,并且仅向您的应用程序出售临时凭证。您甚至可以将用户创建的资源(如存储桶中的对象)的访问权限限制为特定用户(请参阅mobile.awsblog.com/post/Tx1OSMBRHZVM9V0/… 和以前的博客文章以及开发人员指南docs.aws.amazon.com/cognito/devguide/identity
    • 如何在android中下载私有对象(文件)?如果密钥未在 android 中使用。在 Cognito 凭据中怎么可能?
    • @faziltm 查看上面链接的开发者指南。
    【解决方案2】:

    您不需要任何特殊文件。只需将您的凭据硬编码为static final 之类的常量。

    【讨论】:

    • 我认为这就是您所要求的...但是您不必编写自己的主密钥。您可以使用访问受限的 IAM 密钥。但是,如果您使用 Cognito,那么您就不会使用这些键。
    • 我认为 cognito 是要走的路。
    • 硬编码你的凭据是非常危险的,你不应该这样做。有人很容易反编译您的应用程序并窃取您的凭据。使用 Cognito,您可以大大减少攻击者可以造成的爆炸半径和伤害。
    猜你喜欢
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    • 2018-01-31
    • 2014-04-03
    相关资源
    最近更新 更多