使用 Verified Permissions 根据身份的属性控制访问
使用 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。
Verified Permissions 支持将 Amazon Cognito 用户池或 OpenID Connect(OIDC)身份提供商作为身份源。Verified Permissions 假设主体之前已被识别并经过身份验证。仅区域和边缘优化的 REST API 支持 Verified Permissions。
使用 Verified Permissions 创建 Lambda 授权方
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 Management Console)
-
在 Verified Permissions 控制台中选择创建策略存储时,在部署应用程序集成页面上,选择立即。
- 不要为您附加授权方(AWS Management Console)
-
在 Verified Permissions 控制台中选择创建策略存储时,在部署应用程序集成页面上,选择稍后。
Verified Permissions 仍会为您创建 Lambda 授权方。Lambda 授权方以
AVPAuthorizerLambda-
开头。有关如何在方法上附加授权方的更多说明,请参阅配置方法以使用 Lambda 授权方(控制台)。 - 为您附加授权方(AWS CloudFormation)
-
在 Verified Permissions 生成的 AWS CloudFormation 模板中,在
Conditions
部分中,将"Ref": "shouldAttachAuthorizer"
设置为true
。 - 不要为您附加授权方(AWS CloudFormation)
-
在 Verified Permissions 生成的 AWS CloudFormation 模板中,在
Conditions
部分中,将"Ref": "shouldAttachAuthorizer"
设置为false
。Verified Permissions 仍会为您创建 Lambda 授权方。Lambda 授权方以
AVPAuthorizerLambda-
开头。有关如何在方法上附加授权方的更多说明,请参阅配置方法以使用 Lambda 授权方(AWS CLI)。
使用 Verified Permissions 调用 Lambda 授权方
您可以通过在 Authorization
标头中提供身份或访问令牌来调用您的 Lambda 授权方。有关更多信息,请参阅 使用 API Gateway Lambda 授权方调用 API。
API Gateway 会将 Lambda 授权方返回的策略缓存 120 秒。您可以在 API Gateway 控制台中或使用 AWS CLI 修改 TTL。