如何避免硬编码访问密钥和安全密钥值aws

时间:2020-01-13 23:43:53

标签: amazon-web-services react-native aws-sts access-keys

在我的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'>
     }
});
...

请帮助。

2 个答案:

答案 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