

# 使用 Verified Permissions 根据身份的属性控制访问
<a name="apigateway-lambda-authorizer-verified-permissions"></a>

使用 Amazon Verified Permissions 控制对 API Gateway API 的访问。在将 API Gateway 与 Verified Permissions 结合使用时，Verified Permissions 会创建一个 Lambda 授权方，该授权者使用精细的授权决策来控制对 API 的访问。Verified Permissions 使用 Cedar 策略语言根据策略存储架构和策略来向调用方授权，以便为应用程序用户定义精细权限。有关更多信息，请参阅《Amazon Verified Permissions 用户指南》**中的 [Create a policy store with a connected API and identity provider](https://docs.aws.amazon.com/verifiedpermissions/latest/userguide/getting-started-api-policy-store.html)。

Verified Permissions 支持将 Amazon Cognito 用户池或 OpenID Connect（OIDC）身份提供商作为身份源。Verified Permissions 假设主体之前已被识别并经过身份验证。仅区域和边缘优化的 REST API 支持 Verified Permissions。

## 使用 Verified Permissions 创建 Lambda 授权方
<a name="apigateway-lambda-authorizer-verified-permissions-attach"></a>

Verified Permissions 会创建 Lambda 授权方以确定是否允许主体对 API 执行操作。您创建 Verified Permissions 用来执行其授权任务的 Cedar 策略。

以下是一个示例 Cedar 策略，该策略允许访问以调用基于 Amazon Cognito 用户池（即 API 的 `GET /users` 资源上的 `developer` 组的 `us-east-1_ABC1234`）的 API。Verified Permissions 通过解析调用方身份的持有者令牌来确定组成员资格。

```
permit(
  principal in MyAPI::UserGroup::"us-east-1_ABC1234|developer",
  action in [ MyAPI::Action::"get /users" ],
  resource
  );
```

（可选）Verified Permissions 可以将授权方附加到 API 的方法。在 API 的生产阶段，建议您禁止 Verified Permissions 为您附加授权方。

以下列表说明如何将 Verified Permissions 配置为附加或不附加到 API 方法的方法请求。

**为您附加授权方（AWS 管理控制台）**  
在 Verified Permissions 控制台中选择**创建策略存储**时，在**部署应用程序集成**页面上，选择**立即**。

**不要为您附加授权方（AWS 管理控制台）**  
在 Verified Permissions 控制台中选择**创建策略存储**时，在**部署应用程序集成**页面上，选择**稍后**。  
Verified Permissions 仍会为您创建 Lambda 授权方。Lambda 授权方以 `AVPAuthorizerLambda-` 开头。有关如何在方法上附加授权方的更多说明，请参阅[配置方法以使用 Lambda 授权方（控制台）](configure-api-gateway-lambda-authorization.md#configure-api-gateway-lambda-authorization-method-console)。

**为您附加授权方（CloudFormation）**  
在 Verified Permissions 生成的 CloudFormation 模板中，在 `Conditions` 部分中，将 `"Ref": "shouldAttachAuthorizer"` 设置为 `true`。

**不要为您附加授权方（CloudFormation）**  
在 Verified Permissions 生成的 CloudFormation 模板中，在 `Conditions` 部分中，将 `"Ref": "shouldAttachAuthorizer"` 设置为 `false`。  
Verified Permissions 仍会为您创建 Lambda 授权方。Lambda 授权方以 `AVPAuthorizerLambda-` 开头。有关如何在方法上附加授权方的更多说明，请参阅[配置方法以使用 Lambda 授权方（AWS CLI）](configure-api-gateway-lambda-authorization.md#configure-api-gateway-lambda-authorization-method-cli)。

## 使用 Verified Permissions 调用 Lambda 授权方
<a name="apigateway-lambda-authorizer-verified-permissions-call"></a>

您可以通过在 `Authorization` 标头中提供身份或访问令牌来调用您的 Lambda 授权方。有关更多信息，请参阅 [使用 API Gateway Lambda 授权方调用 API](call-api-with-api-gateway-lambda-authorization.md)。

API Gateway 会将 Lambda 授权方返回的策略缓存 120 秒。您可以在 API Gateway 控制台中或使用 AWS CLI 修改 TTL。