创建 Verified Permissions 策略存储 - Amazon Verified Permissions

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建 Verified Permissions 策略存储

您可以使用以下方法创建策略存储:

  • 按照指导设置进行操作-在创建第一个策略之前,您将定义具有有效操作的资源类型和委托人类型。

  • 使用 API Gateway 和身份源进行设置 — 使用身份提供商 (IdP) 登录的用户以及通过 Ama API zon Gateway 进行操作和资源实体来定义您的主体实体。API如果您希望您的应用程序授权具有用户群组成员资格或其他属性的API请求,我们建议您使用此选项。

  • 从示例策略存储区开始-选择预定义的示例项目策略存储库。如果您正在学习 Verified Permissions 并想要查看和测试示例策略,我们建议您使用此选项。

  • 创建空策略存储库-您将自己定义架构和所有访问策略。如果您已经熟悉如何配置策略存储,我们建议您使用此选项。

Guided setup
要使用引导式设置配置方法创建策略存储,请按以下步骤操作:

引导式设置向导将引导您完成创建策略存储第一次迭代的过程。您将为第一个资源类型创建架构,描述适用于该资源类型的操作以及您为其授予权限的主体类型。然后,您将创建第一个策略。完成此向导后,您将能够向策略存储中添加内容,扩展架构以描述其他资源和主体类型,以及创建其他策略和模板。

  1. 已验证的权限控制台中,选择创建新的策略存储

  2. 在 “开始选项” 部分中,选择引导式设置

  3. 输入策略存储描述。此文本可以是任何适合您组织的文本,作为对当前策略库功能的友好参考,例如天气更新 Web 应用程序

  4. 详细信息部分中,输入架构的命名空间。有关命名空间的更多信息,请参阅。命名空间定义

  5. 选择下一步

  6. 资源类型窗口中,输入资源类型的名称。例如,currentTemperature可以是天气更新 Web 应用程序的资源。

  7. (可选)选择添加属性,添加资源属性。输入属性名称,然后为资源的每个属性选择一个属性类型。选择每个属性是否为必填项。例如,temperatureFormat可以是currentTemperature资源的属性,可以是华氏度或摄氏度。要删除已为该资源类型添加的属性,请选择该属性旁边的删除

  8. 操作字段中,输入要为指定的资源类型授权的操作。要为该资源类型添加其他操作,请选择添加操作。例如,viewTemperature可能是天气更新 Web 应用程序中的一个操作。要删除已为该资源类型添加的操作,请选择该操作旁边的删除

  9. 主体类型的名称字段中,输入将对您的资源类型使用指定操作的主体类型的名称。默认情况下,用户已添加到此字段,但可以替换。

  10. 选择下一步

  11. 主体类型窗口中,为您的主体类型选择身份来源。

    • 如果主体的 ID 和属性将由您的 Verified Permissions 应用程序直接提供,请选择自定义。要添加主体属性,请选择添加属性。根据架构验证策略时,Verified Permissions 会使用指定的属性值。要移除已为主体类型添加的属性,请选择该属性旁边的移除

    • 如果主体的 ID 和属性将通过 Amazon Cognito 生成的 ID 或访问令牌提供,请选择 Cognito 用户群体。选择连接用户群体。选择 AWS 区域并输入要连接的 Amazon Cognito 用户群体的用户群体 ID。选择连接。有关更多信息,请参阅《Amazon Cognito 开发人员指南》中的使用 Amazon Verified Permissions 进行授权

    • 如果委托人的 ID 和属性将从外部OIDC提供商生成的 ID 和/或 Access 令牌中提取,请选择外部OIDC提供商,然后添加提供者和令牌详细信息。

  12. 选择下一步

  13. 策略详细信息部分中,为您的第一个 Cedar 策略输入可选的策略描述

  14. 主体范围字段中,选择将从策略中获得权限的主体。

    • 选择特定主体,将策略应用于特定主体。在允许执行操作的主体字段中选择该主体,然后为该主体输入一个实体标识符。例如,user-id可以是天气更新 Web 应用程序中的实体标识符。

      注意

      如果您使用的是 Amazon Cognito,则实体标识符的格式必须为。<userpool-id>|<sub>

    • 选择所有主体,将该策略应用于策略存储中的所有主体。

  15. 资源范围字段中,选择授权指定主体对哪些资源执行操作。

    • 选择特定资源,将该策略应用于特定资源。在此策略适用的资源字段中选择该资源,然后为该资源输入一个实体标识符。例如,temperature-id可以是天气更新 Web 应用程序中的实体标识符。

    • 选择所有资源,将该策略应用于策略存储中的所有资源。

  16. 操作范围字段中,选择授权指定主体执行的操作。

    • 选择特定操作集合,将该策略应用于特定操作。在此策略适用的操作字段中,选中操作旁边的复选框。

    • 选择所有操作,将该策略应用于策略存储中的所有操作。

  17. 策略预览部分中查看该策略。选择创建策略存储

Set up with API Gateway and an identity source
使用 Set with Gat e API way 和身份源配置方法创建策略存储

APIGateway 选项APIs使用经过验证的权限策略进行保护,这些策略旨在根据用户的群组或角色做出授权决定。此选项构建一个策略存储库,用于测试身份源组和使用 Lambda 授权API者的授权。

IdP 中的用户及其群组要么成为您的委托人(ID 令牌),要么成为您的上下文(访问令牌)。API网关中的方法和路径将API成为您的策略授权的操作。您的应用程序将成为资源。作为此工作流程的结果,已验证权限将创建策略存储、Lambda 函数和 Lambda API 授权者。完成此工作流程API后,您必须将 Lambda 授权方分配给您的。

  1. 已验证的权限控制台中,选择创建新的策略存储

  2. 在 “开始选项” 部分,选择 “使用API网关和身份源进行设置”,然后选择 “下一步”。

  3. 在 “导入资源和操作” 步骤中 API,在 “导入资源和操作” 步骤下API,选择一个将用作策略存储资源和操作模型的。

    1. 从中配置的阶段中选择部署阶段,API然后选择导入API。有关API阶段的更多信息,请参阅 Amazon API Gateway 开发者指南RESTAPI中的设置阶段

    2. 预览导入的资源和操作地图

    3. 要更新资源或操作,请在 Gate API way 控制台中修改您的API路径或方法,然后选择导入API以查看更新。

    4. 如果您对自己的选择感到满意,请选择 “下一步”。

  4. 身份来源中,选择身份提供者类型。你可以选择 Amazon Cognito 用户池或 OpenID Connect () OIDC IdP 类型。

  5. 如果你选择 Amazon Cognito

    1. 选择 AWS 区域 与 AWS 账户 您的策略存储区相同的用户池。

    2. 选择要传递给您要提交以进行授权的令牌类型。API两种令牌类型都包含用户组,这是这种API关联授权模型的基础。

    3. 应用程序客户端验证下,您可以将策略存储的范围限制为多租户用户池中的一部分 Amazon Cognito 应用程序客户端。要要求该用户使用用户池中的一个或多个指定应用程序客户端进行身份验证,请选择 “仅接受预期应用程序客户端的令牌” IDs。要接受任何通过用户池进行身份验证的用户,请选择不验证应用程序客户端IDs

    4. 选择下一步

  6. 如果您选择外部OIDC提供商:

    1. 发行人中URL,输入您的URLOIDC发卡机构的。例如,这是提供授权服务器、签名密钥以及有关您的提供商的其他信息的服务端点https://auth.example.com。您的签发者URL必须将OIDC发现文件存放在网址/.well-known/openid-configuration

    2. 令牌类型中,选择您OIDCJWT希望您的应用程序提交以供授权的类型。有关更多信息,请参阅 将身份提供者令牌映射到架构

    3. (可选)在令牌声明-可选中,选择添加令牌声明,输入令牌的名称,然后选择值类型。

    4. 用户和群组令牌声明中,执行以下操作:

      1. 在身份源的令牌中输入用户声明名称。这通常sub是来自您的身份证或访问令牌的声明,该身份证或访问令牌包含待评估实体的唯一标识符。来自已连接 OIDC IdP 的身份将映射到您的策略存储中的用户类型。

      2. 在身份源的令牌中输入群组声明名称。通常groups,这是来自您的身份证或访问令牌的声明,其中包含用户的群组列表。您的策略存储将根据群组成员资格对请求进行授权。

    5. 受众验证中,选择Add value并添加您希望策略商店在授权请求中接受的值。

    6. 选择下一步

  7. 如果您选择了 Amazon Cognito,则经过验证的权限会在您的用户池中查询群组。对于OIDC提供商,请手动输入群组名称。“将操作分配给群组” 步骤可为您的策略存储创建允许群组成员执行操作的策略。

    1. 选择或添加要包含在策略中的群组。

    2. 为您选择的每个群组分配操作。

    3. 选择下一步

  8. 在 Depl oy 应用程序集成中,选择是要稍后手动附加 Lambda 授权者,还是想让已验证的权限立即为您执行此操作,并查看已验证权限将为创建策略存储和 Lambda 授权者而采取的步骤。

  9. 准备好创建新资源时,选择创建策略存储

  10. 在浏览器中保持 “策略存储状态” 步骤处于打开状态,以通过已验证的权限监控资源创建的进度。

  11. 一段时间后(通常为大约一个小时),或者当 D eploy Lambda 授权方步骤显示成功时,如果您选择手动连接授权方,请配置您的授权方。

    经过验证的权限将在您的中创建一个 Lambda 函数和一个 Lambda 授权者。API选择 “打开” API 以导航到您的API。

    要了解如何分配 Lambda 授权方,请参阅亚马逊网关开发者指南中的使用网关 Lamb API da 授权方。API

    1. 导航到您的授权者,API并记下已验证权限创建的授权者的名称。

    2. 导航到 “资源”,然后在您的中选择一种顶级方法API。

    3. 在 “方法请求设置” 下选择 “编辑

    4. 授权者设置为您之前记下的授权者名称。

    5. 展开HTTP请求标头,输入名称AUTHORIZATION,然后选择必填

    6. 部署API舞台。

    7. 保存您的更改。

  12. 使用您在选择身份来源步骤中选择令牌类型的用户池令牌来测试您的授权方。有关用户池登录和检索令牌的更多信息,请参阅 Amazon Cognito 开发者指南中的用户池身份验证流程

  13. 使用向您的请求AUTHORIZATION标头中添加用户池令牌再次测试身份验证API。

  14. 检查您的新保单存储。添加和完善政策。

Sample policy store
要使用示例策略存储配置方法创建策略存储,请按以下步骤操作:
  1. 在 “起始选项” 部分中,选择示例策略存储

  2. 示例项目部分中,选择要使用的示例 Verified Permissions 应用程序的类型。

    • PhotoFlash是一个面向客户的 Web 应用程序示例,它使用户能够与朋友共享个人照片和相册。用户可以对允许谁查看、评论和重新共享照片设置精细权限。账户所有者还可以创建好友组,并将照片整理到相册中。

    • DigitalPetStore是一个示例应用程序,任何人都可以在其中注册并成为客户。客户可以添加待售宠物、搜索宠物和下单。添加宠物的客户将被记录为宠物主人。宠物主人可以更新宠物的详细信息、上传宠物图片或删除宠物清单。已下单的客户将被记录为订单所有者。订单所有者可以获取订单的详细信息或取消订单。宠物商店经理拥有管理权限。

      注意

      DigitalPetStore示例策略存储区不包括策略模板。PhotoFlashTinyTodo示例策略存储包括策略模板。

    • TinyTodo是一个允许用户创建任务和任务列表的示例应用程序。列表所有者可以管理和共享自己的列表,并指定谁可以查看或编辑他们的列表。

  3. 系统会根据您选择的示例项目,自动为示例策略存储的架构生成一个命名空间。

  4. 选择创建策略存储

    您的策略存储是使用您选择的示例策略存储的策略和架构创建的。有关您可以为示例策略存储创建的模板链接策略的更多信息,请参阅Amazon 已验证权限示例模板关联政策

Empty policy store
要使用清空策略存储配置方法创建策略存储,请按以下步骤操作:
  1. 在 “起始选项” 部分中,选择清空策略存储

  2. 选择创建策略存储

创建的空策略存储没有架构,这意味着策略未经过验证。有关更新策略存储架构的更多信息,请参阅 Amazon Verified Permissions 策略存储架构

有关为策略存储创建策略的更多信息,请参阅创建 Amazon Verified Permissions 静态策略创建与 Amazon 验证权限模板关联的政策

AWS CLI
要使用 AWS CLI创建空策略存储,请按以下步骤操作:

您可以使用 create-policy-store 操作创建策略存储。

注意

使用创建的策略存储 AWS CLI 为空。

$ aws verifiedpermissions create-policy-store \ --validation-settings "mode=STRICT" { "arn": "arn:aws:verifiedpermissions::123456789012:policy-store/PSEXAMPLEabcdefg111111", "createdDate": "2023-05-16T17:41:29.103459+00:00", "lastUpdatedDate": "2023-05-16T17:41:29.103459+00:00", "policyStoreId": "PSEXAMPLEabcdefg111111" }
AWS SDKs

您可以使用创建策略存储CreatePolicyStoreAPI。有关更多信息,请参阅CreatePolicyStore《Amazon 已验证权限API参考指南》。