API Gateway 资源策略示例 - Amazon API Gateway

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

API Gateway 资源策略示例

此页面介绍 API Gateway 资源策略的几个典型使用案例。

以下示例策略使用简化语法来指定 API 资源。此简化语法是一种缩写方式,通过这种方式,您可以引用 API 资源,而不指定完整的 Amazon Resource Name (ARN)。当您保存策略时,API Gateway 会将缩写语法转换为完整 ARN。例如,您可以在资源策略中指定资源 execute-api:/stage-name/GET/pets。当您保存资源策略时, API Gateway 会将资源转换为 arn:aws:execute-api:us-east-2:123456789012:aabbccddee/stage-name/GET/pets。API Gateway 使用当前区域、您的 AWS 账户 ID 以及与资源策略关联的 REST API 的 ID 来生成完整的 ARN。您可以使用 execute-api:/* 来表示当前 API 中的所有阶段、方法和路径。有关访问策略语言的更多信息,请参阅 Amazon API Gateway 的访问策略语言概述

示例:允许其他 AWS 账户中的角色使用 API

以下示例资源策略通过签名版本 4 (Sigv4) 协议向不同 AWS 账户中的两个角色授予一个账户中的 API 访问权限。 AWS 具体而言,由标识的 AWS 账户的开发者和管理员角色account-id-2被授予对您 AWS 账户中的pets资源 (API) 执行操作的GET操作。execute-api:Invoke

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::account-id-2:role/developer", "arn:aws:iam::account-id-2:role/Admin" ] }, "Action": "execute-api:Invoke", "Resource": [ "execute-api:/stage/GET/pets" ] } ] }

示例:基于源 IP 地址或范围拒绝 API 流量

以下资源策略示例拒绝(阻止)从两个指定源 IP 地址块向 API 传入流量。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ] }, { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ], "Condition" : { "IpAddress": { "aws:SourceIp": ["192.0.2.0/24", "198.51.100.0/24" ] } } } ] }

示例:使用私有 API 时,基于源 IP 地址或范围拒绝 API 流量

以下资源策略示例拒绝(阻止)两个指定源 IP 地址块向私有 API 传入流量。使用私有 API 时,execute-api VPC 终端节点重新写入原始源 IP 地址。aws:VpcSourceIp 条件根据原始请求方 IP 地址筛选请求。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ] }, { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ], "Condition" : { "IpAddress": { "aws:VpcSourceIp": ["192.0.2.0/24", "198.51.100.0/24"] } } } ] }

示例:允许基于源 VPC 或 VPC 终端节点的私有 API 流量

以下示例资源策略允许仅从指定的 Virtual Private Cloud (VPC) 或 VPC 终端节点传入到私有 API 的流量。

此示例资源策略指定源 VPC:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ] }, { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ], "Condition" : { "StringNotEquals": { "aws:SourceVpc": "vpc-1a2b3c4d" } } } ] }

此示例资源策略指定源 VPC 终端节点:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ] }, { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ], "Condition" : { "StringNotEquals": { "aws:SourceVpce": "vpce-1a2b3c4d" } } } ] }