如何为 API Gateway API 启用 IAM 身份验证?

上次更新时间:2019 年 12 月 19 日

我想要启用 AWS Identity and Access Management (IAM) 身份验证以访问我的 Amazon API Gateway API。该如何进行设置?

简短描述

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

有关可用于 API Gateway 的不同安全功能的更多信息,请参阅在 API Gateway 中控制和管理对 REST API 的访问

解决方法

为您的 API 启用 IAM 身份验证

  1. API Gateway 控制台中,选择您的 API 的名称。
  2. 资源窗格中,选择您想要用于启用 IAM 身份验证的方法(例如 GETPOST)。
  3. 方法执行窗格中,选择方法请求
  4. 设置下为授权选择铅笔图标(编辑),从下拉菜单中选择 AWS_IAM,然后选择复选标记图标(更新)。
  5. (可选)为您想要用于启用 IAM 身份验证的每个额外的 API 方法重复步骤 2-4。
  6. 部署您的 API 以使更改生效。
  7. 阶段编辑器窗格中,记下调用 URL 以用于以后的测试。

有关更多信息,请参阅使用 API Gateway 控制台设置方法在 API Gateway 控制台中获取 API 的调用 URL

为一组 IAM 用户授予 API 授权

  1. 确定您希望您的 API 用户拥有的权限。例如,您可以授予权限以让用户只能调用您的 API,或者可以授予权限以让用户在您的 AWS 账户中创建和管理 API。有关更多信息和注意事项,请参阅使用 IAM 权限控制对 API 的访问
  2. 创建一个具有所需权限的 IAM 策略文档。有关示例和格式指导,请参阅以下内容:
    控制调用 API 的访问权
    API 执行权限的 IAM 策略示例
    管理 API Gateway API 的 IAM 策略示例
    注意:要完成本文结尾的测试说明,您必须允许调用权限。
  3. 通过执行以下操作之一将 IAM 策略附加到 IAM 组:
    将策略附加到现有的 IAM 组
    创建新的 IAM 组时附加策略

有关更多信息,请参阅 创建并将策略附加到 IAM 用户

注意:您可以向单个 IAM 用户授予 API 访问权限,但我们建议您授予 IAM 组级别的访问权限。

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

您可以使用 API Gateway 资源策略(基于资源的权限)以及 IAM 策略(基于身份的权限)进一步管理对 API Gateway API 的访问权限。有关更多信息,请参阅 IAM 身份验证和资源策略基于身份的策略和基于资源的策略

注意:如果您拒绝使用资源策略访问 API 并允许使用 IAM 策略访问(或者,反之亦然),则访问仍被拒绝。请确保将您的权限结构设计为,使这些安全功能一起按照预期用于您的使用案例。有关更多信息,请参阅 策略评估结果表

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

作为测试,使用 Postman 应用程序通过您启用 IAM 身份验证所用的方法(例如 GETPOST)向您的 API 资源发送请求。

注意:要手动验证使用另一个工具或环境发送至 API Gateway 的请求,您必须使用签名版本 4 签名过程。有关更多信息,请参阅 API Gateway REST API 参考中的签名请求

  1. 在 Postman 中的授权选项卡上,执行以下操作:
    对于类型,选择 AWS 签名
    对于 AccessKeySecretKey,为 IAM 组中有权访问 API 的 IAM 用户输入 IAM 访问密钥 ID 和秘密访问密钥
  2. 在 URL 字段中(输入请求 URL),粘贴您之前记下的调用 URL。如果您对特定 API 资源的方法启用 IAM 身份验证,则将资源名称附加到调用 URL 的结尾。带有资源名称的完整请求 URL 如下所示:
    https://restApiId.execute-api.region.amazonaws.com/stageName/resourceName

一个成功经过身份验证的请求将返回 200 OK 响应代码。未授权的请求将返回消息“缺少身份验证令牌”和 403 禁止响应代码。


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?