

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

# 创建 Verified Permissions 策略存储
<a name="policy-stores-create"></a>

您可以使用以下方法创建策略存储：
+ **按照指导设置进行**操作-在创建第一个策略之前，您将定义具有有效操作的资源类型和委托人类型。
+ **使用 API Gateway 和身份源进行设置 — 使用身份**提供商 (IdP) 登录的用户以及通过 Amazon API Gateway API 登录的用户定义您的主体实体，以及通过 Amazon API Gateway API 进行操作和资源实体。如果您希望您的应用程序使用用户的群组成员资格或其他属性来授权 API 请求，我们建议您使用此选项。
+ **从示例策略存储区开始**-选择预定义的示例项目策略存储库。如果您正在学习 Verified Permissions 并想要查看和测试示例策略，我们建议您使用此选项。
+ **创建空策略存储库**-您将自己定义架构和所有访问策略。如果您已经熟悉如何配置策略存储，我们建议您使用此选项。

------
#### [ Guided setup ]

**要使用**引导式设置**配置方法创建策略存储，请按以下步骤操作：**

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

1. 在[已验证的权限控制台](https://console.aws.amazon.com/verifiedpermissions)中，选择**创建新的策略存储**。

1. 在 “**开始选项**” 部分中，选择**引导式设置**。

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

1. 在**详细信息**部分中，输入**架构的命名空间**。有关命名空间的更多信息，请参阅。[命名空间定义](terminology-differences-avp-cedar.md#differences-namespaces)

1. 选择**下一步**。

1. 在**资源类型**窗口中，输入资源类型的名称。例如，`currentTemperature`可能是*天气更新 Web 应用程序*的资源。

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

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

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

1. 选择**下一步**。

1. 在**主体类型**窗口中，为您的主体类型选择身份来源。
   + 如果主体的 ID 和属性将由您的 Verified Permissions 应用程序直接提供，请选择**自定义**。要添加主体属性，请选择**添加属性**。根据架构验证策略时，Verified Permissions 会使用指定的属性值。要移除已为主体类型添加的属性，请选择该属性旁边的**移除**。
   + 如果委**托人的 ID 和属性将由生成的 ID 或访问令牌提供，请选择 Cognito 用户池**。 Amazon Cognito选择**连接用户群体**。选择**AWS 区域**并键入要连接的 Amazon Cognito 用户池的用户池 **ID**。选择**连接**。有关更多信息，请参阅《Amazon Cognito 开发人员指南》中的[使用 Amazon Verified Permissions 进行授权](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-authorization-with-avp.html)**。
   + 如果委托人的 ID 和属性将从**外部 OIDC 提供商**生成的 ID and/or 访问令牌中提取，请选择外部 OIDC 提供商，然后添加提供商和令牌详细信息。

1. 选择**下一步**。

1. 在**策略详细信息**部分中，为您的第一个 Cedar 策略输入可选的**策略描述**。

1. 在**主体范围**字段中，选择将从策略中获得权限的主体。
   + 选择**特定主体**，将策略应用于特定主体。在**允许执行操作的主体**字段中选择该主体，然后为该主体输入一个实体标识符。例如，`user-id`可以是*天气更新 Web 应用程序*中的实体标识符。
**注意**  
如果您使用的是 Amazon Cognito，则实体标识符的格式必须为`<userpool-id>|<sub>`。
   + 选择**所有主体**，将该策略应用于策略存储中的所有主体。

1. 在**资源范围**字段中，选择授权指定主体对哪些资源执行操作。
   + 选择**特定资源**，将该策略应用于特定资源。在**此策略适用的资源**字段中选择该资源，然后为该资源输入一个实体标识符。例如，`temperature-id`可以是*天气更新 Web 应用程序*中的实体标识符。
   + 选择**所有资源**，将该策略应用于策略存储中的所有资源。

1. 在**操作范围**字段中，选择授权指定主体执行的操作。
   + 选择**特定操作集合**，将该策略应用于特定操作。在**此策略适用的操作**字段中，选中操作旁边的复选框。
   + 选择**所有操作**，将该策略应用于策略存储中的所有操作。

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

------
#### [ Set up with API Gateway and an identity source ]

**使用**设置方式 API Gateway 和身份源**配置方法创建策略存储**

该 API Gateway 选项使用经过 APIs 验证的权限策略来保护，该策略旨在根据用户的群组或*角色*做出授权决定。此选项构建一个策略存储库，用于测试身份源组的授权，以及使用 Lambda 授权方的 API。

IdP 中的用户及其群组要么成为您的委托人（ID 令牌），要么成为您的上下文（访问令牌）。 API Gateway API 中的方法和路径将成为您的策略授权的操作。您的应用程序将成为资源。作为此工作流程的结果，已验证权限将创建策略存储、Lambda 函数和 API Lambda 授权方。完成此工作流程后，您必须为您的 API 分配 Lambda [授权](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html)方。

1. 在[已验证的权限控制台](https://console.aws.amazon.com/verifiedpermissions)中，选择**创建新的策略存储**。

1. 在 “**开始选项**” 部分，选择 “**设置方式 API Gateway 和身份源**”，然后选择 “**下一步**”。

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

   1. 从 API 中配置的阶段中选择**部署**阶段，然后选择**导入 API**。有关 API 阶段的更多信息，请参阅 [Amazon API Gateway 开发者指南中的为 REST API 设置阶段](https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-stages.html)。

   1. 预览**导入的资源和操作地图**。

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

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

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

1. 如果你选择 **Amazon Cognito**：

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

   1. 选择要**传递给要提交授权的 API 的令牌类型**。两种令牌类型都包含用户组，这是这种与 API 关联的授权模型的基础。

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

   1. 选择**下一步**。

1. 如果您选择**外部 OIDC** 提供商：

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

   1. 在**令牌类型**中，选择您希望您的应用程序提交以进行授权的 OIDC JWT 类型。有关更多信息，请参阅[将 Amazon Cognito 令牌映射到架构和将](cognito-map-token-to-schema.md) [OIDC 令牌映射到](oidc-map-token-to-schema.md)架构。

   1. （可选）在**令牌声明-可选**中，选择**添加令牌声明**，输入令牌的名称，然后选择值类型。

   1. 在**用户和群组令牌声明**中，执行以下操作：

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

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

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

   1. 选择**下一步**。

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

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

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

   1. 选择**下一步**。

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

1. 准备好创建新资源时，选择**创建策略存储**。

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

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

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

   *要了解如何分配 Lambda 授权方，请参阅 A [mazon API Gateway 开发者指南中的使用 API Gateway Lambda 授权](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html)方。*

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

   1. 导航到 “**资源**”，然后在 API 中选择一种顶级方法。

   1. 在 “**方法请求设置**” 下选择 “编辑**”**。

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

   1. 展开 **HTTP 请求标头**，输入**名称**或`AUTHORIZATION`，然后选择**必需**。

   1. 部署 API 阶段。

   1. **保存**您的更改。

1. 使用您在**选择身份来源步骤中选择**的**令牌类型的**用户池令牌来测试您的授权方。有关用户池登录和检索令牌的更多信息，请参阅 *Amazon Cognito* 开发者[指南中的用户池身份验证流程](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-authentication-flow.html)。

1. 在 API 请求的`AUTHORIZATION`标题中使用用户池令牌再次测试身份验证。

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

------
#### [ Sample policy store ]

**要使用**示例策略存储**配置方法创建策略存储，请按以下步骤操作：**

1. 在 “**起始选项**” 部分中，选择**示例策略存储**。

1. 在**示例项目**部分中，选择要使用的示例 Verified Permissions 应用程序的类型。
   + **PhotoFlash**是一个面向客户的 Web 应用程序示例，它使用户能够与朋友共享个人照片和相册。用户可以对允许谁查看、评论和重新共享照片设置精细权限。账户所有者还可以创建好友组，并将照片整理到相册中。
   + **DigitalPetStore**是一个示例应用程序，任何人都可以在其中注册并成为客户。客户可以添加待售宠物、搜索宠物和下单。添加宠物的客户将被记录为宠物主人。宠物主人可以更新宠物的详细信息、上传宠物图片或删除宠物清单。已下单的客户将被记录为订单所有者。订单所有者可以获取订单的详细信息或取消订单。宠物商店经理拥有管理权限。
**注意**  
**DigitalPetStore**示例策略存储区不包括策略模板。**PhotoFlash**和**TinyTodo**示例策略存储包括策略模板。
   + **TinyTodo**是一个允许用户创建任务和任务列表的示例应用程序。列表所有者可以管理和共享自己的列表，并指定谁可以查看或编辑他们的列表。

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

1. 选择**创建策略存储**。

   您的策略存储是使用您选择的示例策略存储的策略和架构创建的。有关您可以为示例策略存储创建的模板链接策略的更多信息，请参阅[Amazon 已验证权限示例模板关联政策](policy-templates-example-policies.md)。

------
#### [ Empty policy store ]

**要使用**清空策略存储**配置方法创建策略存储，请按以下步骤操作：**

1. 在 “**起始选项**” 部分中，选择**清空策略存储**。

1. 选择**创建策略存储**。

创建的空策略存储没有架构，这意味着策略未经过验证。有关更新策略存储架构的更多信息，请参阅 [Amazon Verified Permissions 策略存储架构](schema.md)。

有关为策略存储创建策略的更多信息，请参阅[创建 Amazon Verified Permissions 静态策略](policies-create.md)和[创建与 Amazon 验证权限模板关联的政策](policy-templates-create-policy.md)。

------
#### [ AWS CLI ]

**要使用 AWS CLI创建空策略存储，请按以下步骤操作：**  
您可以使用 `create-policy-store` 操作创建策略存储。

**注意**  
使用创建的策略存储 AWS CLI 为空。  
要添加架构，请参阅 [Amazon Verified Permissions 策略存储架构](schema.md)。
 要添加策略，请参阅[创建 Amazon Verified Permissions 静态策略](policies-create.md)。
要添加策略模板，请参阅[创建 Amazon 已验证权限策略模板](policy-templates-create.md)。

```
$ 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 ]

您可以使用 `CreatePolicyStore` API 创建策略存储。有关更多信息，请参阅[CreatePolicyStore](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_CreatePolicyStore.html)《Amazon 已验证权限 API 参考指南》。

------