移动应用程序中的AWS AccessKeyId和SecretKey

问题描述 投票:0回答:2

关于使用AWS作为后端来设置移动应用程序,我有一个安全性问题。要开始使用移动SDK,您需要awsconfiguration.json,其中包含AppClientId和AppClientSecret。尽管根据documentation的说法,最佳做法是“像处理用户名和密码一样安全地管理访问密钥”。此外,如果您要查看IPA / APK文件的内部内容,则可以轻松提取这些密钥。我的问题是-这真的重要吗?有哪些安全风险?我知道它们用于签署请求,因此有人可以使用这些密钥签署任意请求吗?我的用户池设置仅允许经过身份验证的用户调用lambda函数。

amazon-web-services security aws-lambda amazon-cognito secret-key
2个回答
0
投票

您需要分两步保护它

1)您需要创建一个逻辑来对凭据进行编码和解码

Best Place to Store Included AWS Credentials in an iOS Application

2)现在,SDK允许传递包含来自awsconfiguration.json文件中的配置的JSONObject。您可以使用自己的安全性机制将信息存储在JSONObject中,并在运行时通过构造函数提供它。

https://github.com/aws-amplify/aws-sdk-android/issues/711


0
投票

如果您将IAM密钥硬编码到应用程序中(通常不建议这样做),请假设世界上任何人都可以使用这些凭据。将这些权限锁定到可以轻松将其发布到reddit的程度。

真正的答案是使用AWS认知身份为给定角色生成STS令牌,并为该角色提供所需的权限。这使您可以为每个单独的用户创建一个(各种)审计跟踪。它允许您禁用注册或取消单个用户的权限,而不会破坏其他用户的应用程序。它允许您以更加可控和可扩展的方式让不同的用户拥有不同的权限。

应用程序中的硬编码API密钥存在的问题是,如果发现漏洞或滥用而无法为每个人破坏应用程序,则无法精细地撤消权限。您不能在不推出软件更新的情况下旋转API密钥(实际上,您的用户多久更新一次?)。最重要的是,您根本无法跟踪请求,您只知道何时滥用API密钥(我认为cloudtrail如果可以使用将为您提供呼叫IP地址),并且您所做的任何更改都将立即影响您的所有用户。

这里有示例应用程序和快速入门指南的文档,可帮助您开始使用Cognito并运行它们:https://aws.amazon.com/cognito/dev-resources/

© www.soinside.com 2019 - 2024. All rights reserved.