在我的js文件中,我正在访问我的AWS sns,但主要的问题是当前我正在对IAM访问和安全密钥进行硬编码...是否可以避免使用临时密钥或隐藏我的钥匙?我已经发布了有关如何更新以下配置的代码段。
var AWS = require('aws-sdk');
AWS.config.update({
region: < 'My Hard coded region' >,
credentials: {
accessKeyId: < 'My Hard coded Access Key' >,
secretAccessKey: <'My Hard Coded Security Key'>
}
});
...
请帮助。
答案 0 :(得分:1)
是的,有更多安全的方式来处理凭据。对它们进行硬编码是最不安全的。
虽然可以这样做,但我们不建议在应用程序中对您的AWS凭证进行硬编码。硬编码凭据会带来暴露您的访问密钥ID和秘密访问密钥的风险
请参见https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-credentials-node.html
另请参阅“管理AWS访问密钥的最佳实践”:
不要将访问密钥直接嵌入代码中。 AWS开发工具包和AWS命令行工具允许您将访问密钥放置在已知位置,这样您就不必将其保留在代码中。
请参见https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html
最安全的方法是从Amazon EC2的AWS Identity and Access Management(IAM)角色加载凭证。
每个SDK都有执行此操作的方法。检查您的SDK文档,以从IAM加载凭据。
以下是有关证书最佳做法的良好概述,并提供了Java示例:https://aws.amazon.com/blogs/developer/credentials-best-practices/
答案 1 :(得分:0)
在不了解您的代码的情况下很难注释。
react native是一个移动应用程序。您将需要一项服务来根据该服务对移动应用程序用户进行身份验证。亚马逊Cognito就是其中一种。
Amazon Cognito有一个名为user pool
的概念。用户池是存储用户的位置。
当您根据用户池对用户进行身份验证时,您将获得一个授权令牌。您的应用程序可以存储此令牌并将其发送到您的后端服务。后端服务可以验证令牌以确认用户的身份。
身份池是一个概念,在该概念中,将颁发临时AWS凭证以换取授权令牌。这是临时的AWS凭证,您可以使用该凭证直接从移动应用程序调用AWS服务。
希望这会有所帮助。
这是一篇供您阅读的文章-https://pusher.com/tutorials/serverless-react-native-aws-amplify