0

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

请帮忙。

4

2 回答 2

0

是的,有更安全的方法来处理凭据。硬编码它们是最不安全的。

虽然可以这样做,但我们不建议在您的应用程序中硬编码您的 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/

于 2020-01-14T03:36:50.453 回答
0

在不了解您的代码的情况下很难发表评论。

React Native 是一个移动应用程序。您将需要一项服务来针对该服务对您的移动应用程序用户进行身份验证。其中一项服务是亚马逊 Cognito。

用户池

Amazon Cognito 有一个名为user pool. 用户池是存储用户的地方。

当您根据用户池对用户进行身份验证时,您将获得授权令牌作为回报。您的应用可以存储此令牌并将其发送到您的后端服务。后端服务可以验证令牌以确认用户的身份。

身份池

身份池是一个概念,其中颁发临时 AWS 凭证以换取授权令牌。这是临时 AWS 凭证,您可以使用它直接从移动应用程序调用 aws 服务。

希望这可以帮助。

这是一篇供您阅读的文章 - https://pusher.com/tutorials/serverless-react-native-aws-amplify

于 2020-01-14T04:05:02.880 回答