在 API Gateway 中为私有 API 使用 VPC 端点策略
要提高私有 API 的安全性,您可以创建 VPC 端点策略。VPC 端点策略是一种 IAM 资源策略,您可以将其附加到接口端点。有关更多信息,请参阅使用 VPC 端点控制对服务的访问。
您可能需要创建 VPC 端点策略来执行以下任务:
仅允许某些组织或资源访问您的 VPC 端点和调用您的 API。
使用单一策略,并避免使用基于会话或基于角色的策略,来控制 API 的流量。
从本地迁移到 AWS 时,加强应用程序的安全边界。
VPC 端点策略注意事项
以下是 VPC 端点策略的注意事项。
-
根据
Authorization
标头值评估调用方的身份。这可能会导致403 IncompleteSignatureException
或403 InvalidSignatureException
错误,具体视您的authorizationType
而定。下表显示每个authorizationType
的Authorization
标头值。 如果策略限制了对特定 IAM 主体(例如
arn:aws:iam::account-id:role/developer
)的访问权限,则必须将 API 方法的authorizationType
设置为AWS_IAM
或NONE
。有关如何为方法设置authorizationType
的更多说明,请参阅 API Gateway 中用于 REST API 的方法。-
VPC 端点策略可以与 API Gateway 资源策略一起使用。API Gateway 资源策略指定哪些主体可以访问 API。端点策略指定了谁可以访问 VPC,以及可以从 VPC 端点调用哪些 API。您的私有 API 需要资源策略,但您不需要创建自定义 VPC 端点策略。
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。
在这种情况下,因为策略限制了对特定 IAM 主体的访问权限,所以您必须将方法的 authorizationType
设置为 AWS_IAM
或 NONE
。
{ "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
/*" ] } ] }