AWS API Gateway安全性:外部化IAM用户凭证

时间:2018-11-16 13:26:48

标签: amazon-web-services aws-api-gateway aws-iam aws-sdk-js

我是对AWS详细用法非常陌生的开发人员。在AWS中,我实现了一个示例无服务器架构流程/应用程序。用于图层的服务是Dynamodb(DB)-Lamda(DAO)-API Gateway(API)-S3 Bucket(演示文稿)

我需要保护API网关的安全。

我如何:

  1. 如何使用Javascript SDK将IAM用户凭据文件外部化,而不是将IAM用户凭据放入代码中:a)在本地窗口中b)S3存储桶。
  2. 如果我使用凭证文件,JavaScript SDK代码如何知道使用我的AWS账户?使用IAM用户凭据?
  3. 是否有一种方法可以使用AWS Console创建凭证文件,但我还不知道要使用AWS CLI?

我从此处检查了3种实现和实现API安全的方法:https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-to-api.html

1)Cognito用户池2)使用计划+ API密钥3)IAM用户身份验证:我将AWS_IAM设置为api网关的授权类型。我创建了一个IAM用户,并附加了一个具有调用api权限的IAM策略。我遵循此: https://docs.aws.amazon.com/apigateway/latest/developerguide/permissions.htmlhttps://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-control-access-using-iam-policies-to-invoke-api.html

我认为IAM用户身份验证是最安全的,因为我们发出了SigV4签名的请求。我在这里的特定问题是关于将IAM用户凭据放入和检索文档中称为〜/ .aws / credentials的外部文件。 通常,请进一步指导我

我目前正在使用JavaScript SDK,并在浏览器中加载。在本地Windows系统中,我在C:\ Users \ USERNAME.aws \ credentials下创建了凭据文件,格式如下:https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html

我尝试使用Javascript SDK CredentialProviderChain https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CredentialProviderChain.html#constructor-property

我的代码是

var chain = new AWS.CredentialProviderChain();
            chain.resolve(function(err, credentials)
            {
                console.log(err);
                console.log(credentials);
            });

我收到“没有提供者”错误。我读了一个类似问题的评论,即如果在浏览器中使用Javascript SDK加载,我们将无法从C:\ Users \ USERNAME .aws \ credentials文件中检索证书。

我已经阅读了相关的AWS文档,这里未提及。

注意:以后我需要实现要在移动应用程序中使用的代码。如果我使用JavaScript实现示例,则需要指导App Developer。我一个人都不知道Android。

更新 作为使用Javascript SDK的第一步,我发现了我正在研究的以下2个链接: https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-credentials-browser.html https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/loading-browser-credentials-cognito.html 请注意,我要使用IAM身份验证而不是Cognito身份验证。如果最终目标是移动应用程序,是否要使用Cognito身份验证?请指导。

更新 使用Javascript SDK,我实现了这一点:a)使用身份池b)将Cognito用户池用作身份提供程序。 c)编写代码以登录用户池用户,获取ID令牌。 d)使用身份池获得临时AWS凭证。

所以问题是:a)是否使用身份提供者+身份池进行身份验证+授权,这是为API网关实现IAM安全的唯一方法? b)如何仅使用IAM凭据来实现安全性,即没有授权仅使用授权就可以实现安全性吗?

0 个答案:

没有答案