Amazon API Gateway
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

针对管理 API 的访问控制

在本节中,您将了解如何创建 IAM 策略语句,以控制谁可以或不可以创建、部署和更新 API Gateway 中的 API。您还可以找到策略语句参考,包括与 API 管理服务有关的 ActionResource 字段的格式。

控制谁可以使用 IAM 策略创建和管理 API Gateway API

要控制谁可以或不可以使用 API Gateway 的 API 管理服务创建、部署和更新您的 API,请根据以下策略模板中显示的必要许可创建 IAM 策略文档:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Permission", "Action": [ "apigateway:HTTP_VERB" ], "Resource": [ "arn:aws:apigateway:region::resource1-path", "arn:aws:apigateway:region::resource2-path", ... ] } ] }

此处,可 PermissionAllow Deny,分别授予或撤消策略语句规定的访问许可。有关更多信息,请参阅 AWS IAM 许可

HTTP_VERB 可以是任何 API Gateway 支持的任何 HTTP 动词* 可用于表示任何 HTTP 动词。

Resource 包含受影响的 API 实体的 ARN 列表,其中包括 RestApi资源方法集成DocumentationPart模型授权方UsagePlan 等。有关更多信息,请参阅 在 API Gateway 中管理 API 的许可的 Resource 格式

通过结合不同的策略语句,您可以为单个用户、组或角色自定义对选定 API 实体的访问许可,以及针对这些实体执行特定操作的许可。例如,您可以在 IAM 策略中包含以下语句,授予您的文档团队创建、发布、更新和删除特定 API 的文档部分以及查看 API 实体的权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "apigateway:GET" ], "Resource": [ "arn:aws:apigateway:region::/restapis/api-id/*" ] }, { "Effect": "Allow", "Action": [ "apigateway:POST", "apigateway:PATCH", "apigateway:DELETE" ], "Resource": [ "arn:aws:apigateway:region::/restapis/api-id/documentation/*" ] } ] }

对于负责所有操作的 API 核心开发团队,您可以在 IAM 策略中包含以下语句,授予团队更广泛的访问权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "apigateway:*" ], "Resource": [ "arn:aws:apigateway:*::/*" ] } ] }

用于在 API Gateway 中管理 API 的 IAM 策略的语句参考

以下信息介绍了 IAM 策略语句中用于授予或撤消管理 API Gateway API 实体的许可的 ActionResource 元素格式。

在 API Gateway 中管理 API 的许可的 Action 格式

API 管理的 Action 表达式有以下一般格式:

apigateway:action

其中,action 是以下 API Gateway 操作之一:

  • *,代表以下所有操作。

  • GET,用于获取资源信息。

  • POST,主要用于创建子资源。

  • PUT,主要用于更新资源(尽管不建议这样做,但也可用于创建子资源)。

  • DELETE,用于删除资源。

  • PATCH,可用于更新资源。

Action 表达式的一些示例包括:

  • apigateway:*,适用于所有 API Gateway 操作。

  • apigateway:GET,仅适用于 API Gateway 中的 GET 操作。

在 API Gateway 中管理 API 的许可的 Resource 格式

API 管理的 Resource 表达式有以下一般格式:

arn:aws:apigateway:region::resource-path-specifier

其中,region 是目标 AWS 区域(例如,适用于所有受支持的 AWS 区域的 us-east-1*),而 resource-path-specifier 是前往目标资源的路径。

一些示例资源表达式包括:

  • arn:aws:apigateway:region::/restapis/*,适用于 AWS region 区域内的所有资源、方法、模型和阶段。

  • arn:aws:apigateway:region::/restapis/api-id/*,适用于 AWS region 区域内带 api-id 标识符的 API 中的所有资源、方法、模型和阶段。

  • arn:aws:apigateway:region::/restapis/api-id/resources/resource-id/*,适用于带 resource-id 标识符的资源中的所有资源和方法,其中该资源位于 AWS region 区域内带 api-id 标识符的 API 中。

  • arn:aws:apigateway:region::/restapis/api-id/resources/resource-id/methods/*,适用于带 resource-id 标识符的资源中的所有方法,其中该资源位于 AWS region 区域内带 api-id 标识符的 API 中。

  • arn:aws:apigateway:region::/restapis/api-id/resources/resource-id/methods/GET,仅适用于带 resource-id 标识符的资源中的 GET 方法,其中该资源位于 AWS region 区域内带 api-id 标识符的 API 中。

  • arn:aws:apigateway:region::/restapis/api-id/models/*,适用于 AWS region 区域内带 api-id 标识符的 API 中的所有模型。

  • arn:aws:apigateway:region::/restapis/api-id/models/model-name,适用于名称为 model-name 的模型,其中该模型位于 AWS region 区域内带 api-id 标识符的 API 中。

  • arn:aws:apigateway:region::/restapis/api-id/stages/*,适用于 AWS region 区域内带 api-id 标识符的 API 中的所有阶段。

  • arn:aws:apigateway:region::/restapis/api-id/stages/stage-name,仅适用于 AWS region 区域内带 api-id 标识符的 API 中的名称为 stage-name 的阶段。