本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 API Gateway 中为私有 API 使用 VPC 终端节点策略
通过将 API Gateway 配置为使用 interface VPC endpoint(接口 VPC 端点),可以提高 private API(私有 API)的安全性。接口终端节点由 Amazon PrivateLink 提供支持,您可以使用该技术通过私有 IP 地址私密访问 Amazon。有关创建 VPC 终端节点的更多信息,请参阅创建接口终端节点。
VPC 终端节点策略 是一种 IAM 资源策略,您可以将它们附加到接口 VPC 终端节点来控制对终端节点的访问。有关更多信息,请参阅使用 VPC 终端节点控制对服务的访问。您可以使用终端节点策略来限制从您的内部网络访问您的私有 API 的流量。您可以选择允许或拒绝访问可以通过 VPC 终端节点访问的特定私有 API。
VPC 终端节点策略可以与 API Gateway 资源策略一起使用。资源策略用于指定哪些委托人可以访问 API。终端节点策略指定哪些私有 API 可以通过 VPC 终端节点调用。有关资源策略的更多信息,请参阅使用 API Gateway 资源策略控制对 API 的访问。
VPC 端点策略注意事项
如果策略限制 IAM 主体,则必须将方法的
authorizationType
设置为AWS_IAM
或NONE
。-
根据
Authorization
标头值评估调用方的身份。这可能会导致403 IncompleteSignatureException
或403 InvalidSignatureException
错误,具体视您的authorizationType
而定。下表显示每个authorizationType
的Authorization
标头值。
VPC 终端节点策略示例
您可以为 Amazon API Gateway 创建 Amazon Virtual Private Cloud 终端节点策略,您可以在其中指定:
-
可执行操作的委托人。
-
可执行的操作。
-
可用于执行操作的资源。
要将策略附加到 VPC 终端节点,您需要使用 VPC 控制台。有关更多信息,请参阅使用 VPC 终端节点控制对服务的访问。
示例 1:授予对两个 API 的访问权限的 VPC 终端节点策略
以下示例策略只授予通过该策略附加到的 VPC 终端节点访问两个特定 API。
{ "Statement": [ { "Principal": "*", "Action": [ "execute-api:Invoke" ], "Effect": "Allow", "Resource": [ "arn:aws:execute-api:
us-east-1
:123412341234
:a1b2c3d4e5
/*", "arn:aws:execute-api:us-east-1
:123412341234
:aaaaa11111
/*" ] } ] }
示例 2:授予对 GET 方法的访问权限的 VPC 终端节点策略
以下示例策略授予用户通过该策略附加到的 VPC 终端节点访问特定 API 的 GET
方法。
{ "Statement": [ { "Principal": "*", "Action": [ "execute-api:Invoke" ], "Effect": "Allow", "Resource": [ "arn:aws:execute-api:
us-east-1
:123412341234
:a1b2c3d4e5
/stageName
/GET/*" ] } ] }
示例 3:授予用户对特定 API 的特定用户访问权限的 VPC 终端节点策略
以下示例策略授予特定用户通过该策略附加到的 VPC 终端节点访问特定 API。
{ "Statement": [ { "Principal": { "AWS": [ "arn:aws:iam::123412341234:user/
MyUser
" ] }, "Action": [ "execute-api:Invoke" ], "Effect": "Allow", "Resource": [ "arn:aws:execute-api:us-east-1
:123412341234
:a1b2c3d4e5
/*" ] } ] }