如何为 API Gateway REST API 激活 IAM 身份验证?

2 分钟阅读
0

我想激活 AWS Identity and Access Management(AWS IAM)身份验证以访问我的 Amazon API Gateway(API Gateway)REST API。该如何设置?

简短描述

在 API Gateway 控制台中为 API 方法启用 IAM 身份验证。然后,使用 IAM 策略和资源策略为您的 API 用户指定权限。

有关可用于 API Gateway 的不同安全功能的更多信息,请参阅 Controlling and managing access to a REST API in API Gateway

解决方法

为 REST API 启用 IAM 身份验证

1.    在 API Gateway 控制台中,选择 API 的名称。

2.    在资源窗格中,选择要激活 IAM 身份验证的方法(例如 GETPOST)。

3.    在方法执行窗格中,选择方法请求

4.    在设置下的授权中,选择铅笔图标(编辑)。然后,从下拉列表中选择 AWS_IAM,接下来选择复选标记图标(更新)。

5.    (可选)对要激活 IAM 身份验证的每个 API 方法重复步骤 2-4。

6.    部署您的 API,让更改生效。

7.    在阶段编辑器窗格中,复制**调用 URL。**稍后您将使用该调用 URL 进行测试。

有关更多信息,请参阅 Set up a method using the API Gateway console。还可以参考在 API Gateway 控制台中获取 API 的调用 URL

向一组 IAM 用户授予 API 授权

1.    确定您希望 API 用户拥有的权限。有关更多信息,请参阅 Control access to an API with IAM permissions

2.    创建包含所需权限的 IAM 策略。有关示例和格式指南,请参阅以下内容:
控制调用 API 的访问权限
API 执行权限的 IAM 策略示例
Amazon API Gateway 基于身份的策略示例
**注意:**要完成本文末尾的测试说明,必须允许调用权限。

3.    执行以下任一操作,将 IAM 政策附加到 IAM 组:
将策略附加到现有的 IAM 组
-或-
创建新的 IAM 组时附加策略。

有关更多信息,请参阅 Create and attach a policy to an IAM User

**注意:**最佳做法是在 IAM 组级别授予访问权限。

(可选)配置 API Gateway 资源策略

您还可以使用 API Gateway 资源策略(基于资源的权限)以及 IAM 策略(基于身份的权限)管理对 API 的访问权限。有关更多信息,请参阅 IAM authentication and resource policyIdentity-based policies and resource-based policies

**重要提示:**如果您使用一种类型的 IAM 策略拒绝对 API 的访问,而允许使用另一种类型的策略对其进行访问,则访问将被拒绝。有关更多信息,请参阅 Policy evaluation outcome tables

发送请求以测试身份验证设置

使用 Postman 应用程序,通过已激活 IAM 身份验证的方法向您的 API 资源发送请求。

**注意:**要手动验证使用其他工具或环境发送到 API Gateway 的请求,请使用签名版本 4 签名流程。有关更多信息,请参阅签署请求

1.    在 Postman 的授权选项卡上,执行以下操作:
对于类型,选择 AWS 签名
对于 AccessKeySecretKey,请输入 IAM 用户的 IAM 访问密钥 ID 和私密访问密钥。IAM 用户必须位于有权访问 API 的 IAM 组中。

2.    在输入请求 URL 字段中,粘贴 API 的调用 URL。如果您对特定 API 资源的方法激活了 IAM 身份验证,则将资源名称附加到调用 URL 的末尾。

**注意:**包含资源名称的完整请求 URL 如下所示:https://restApiId.execute-api.region.amazonaws.com/stageName/resourceName

经过身份验证的请求将返回 200 OK 响应代码。未授权的请求会返回缺少身份验证令牌消息和 403 禁止访问响应代码。


相关信息

API 网关资源策略如何影响授权工作流程