API Gateway 资源策略示例 - Amazon API Gateway
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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 使用当前区域、您的 Amazon 账户 ID 以及与资源策略关联的 REST API 的 ID 来构建完整的 ARN。您可以使用 execute-api:/* 来表示当前 API 中的所有阶段、方法和路径。有关访问策略语言的更多信息,请参阅 Amazon API Gateway 的访问策略语言概述

示例:允许另一个 Amazon 账户中的角色使用 API

以下示例资源策略通过签名版本 4(SigV4)协议将一个 Amazon 账户中的 API 访问权限授予位于另一个 Amazon 账户中的两个角色。具体而言,向由 account-id-2 标识的 Amazon 账户的开发人员和管理员角色授予了 execute-api:Invoke 操作权限,允许他们对您 Amazon 账户中的 pets 资源(API)执行 GET 操作。

{ "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" } } } ] }