

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 建立已驗證許可政策存放區
<a name="policy-stores-create"></a>

您可以使用下列方法建立政策存放區：
+ **遵循引導式設定** – 在建立第一個政策之前，您將使用有效的動作和委託人類型來定義資源類型。
+ **使用 API 閘道 和 身分來源設定** – 使用身分提供者 (IdP) 登入的使用者，以及 Amazon API Gateway API 的動作和資源實體，來定義您的委託人實體。如果您希望應用程式授權具有使用者群組成員資格或其他屬性的 API 請求，建議您使用此選項。
+ **從範例政策存放區開始** – 選擇預先定義的範例專案政策存放區。如果您了解 Verified Permissions 並想要檢視和測試範例政策，建議您使用此選項。
+ **建立空的政策存放區** – 您將自行定義結構描述和所有存取政策。如果您已經熟悉設定政策存放區，建議您使用此選項。

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

**使用**引導式設定**組態方法建立政策存放區**

引導式設定精靈會引導您完成建立政策存放區的第一次反覆運算的程序。您將為第一個資源類型建立結構描述，描述適用於該資源類型的動作，以及您授予許可的委託人類型。然後，您將建立您的第一個政策。完成此精靈後，您就可以將 新增至您的政策存放區、擴展結構描述來描述其他資源和主體類型，以及建立其他政策和範本。

1. 在 [Verified Permissions 主控台](https://console.aws.amazon.com/verifiedpermissions)中，選取**建立新政策存放區**。

1. 在**開始選項**區段中，選擇**引導式設定**。

1. 輸入**政策存放區描述**。此文字可以是適合您組織的任何內容，做為目前政策存放區的 函數的易記參考，例如 *Weather Update Web 應用程式*。

1. 在**詳細資訊**區段中，輸入**結構描述的命名空間**。如需命名空間的詳細資訊，請參閱 [命名空間定義](terminology-differences-avp-cedar.md#differences-namespaces)。

1. 選擇**下一步**。

1. 在**資源類型**視窗中，輸入資源類型的名稱。例如， `currentTemperature`可以是 *天氣更新 Web 應用程式*的資源。

1. （選用） 選擇**新增屬性**以新增資源屬性。輸入**屬性名稱**，並為資源的每個屬性選擇**屬性類型**。選擇每個屬性是否為**必要**。例如， `temperatureFormat`可以是`currentTemperature`資源的屬性，可以是華氏或攝氏。若要移除已針對資源類型新增的屬性，請選擇屬性旁的**移除**。

1. 在**動作**欄位中，輸入要授權給指定資源類型的動作。若要為資源類型新增其他動作，請選擇**新增動作**。例如， `viewTemperature` 可能是 *天氣更新 Web 應用程式中*的動作。若要移除為資源類型新增的動作，請選擇動作旁的**移除**。

1. 在**委託人類型名稱**欄位中，輸入將針對資源類型使用指定動作的委託人類型名稱。根據預設，**使用者**會新增至此欄位，但可以取代。

1. 選擇**下一步**。

1. 在**委託人類型**視窗中，為您的委託人類型選擇身分來源。
   + 如果您的 Verified Permissions 應用程式將直接提供委託人的 ID 和屬性，請選擇**自訂**。選擇**新增屬性**以新增主體屬性。Verified Permissions 在針對結構描述驗證政策時使用指定的屬性值。若要移除已針對委託人類型新增的屬性，請選擇屬性旁的**移除**。
   + 如果委託人的 ID 和屬性將從 產生的 ID 或存取權杖提供，請選擇 **Cognito 使用者集**區 Amazon Cognito。選擇 **Connect 使用者集區**。選取要連線之使用者集區的 **AWS 區域**並輸入 Amazon Cognito 使用者集區 ID。 ****選擇**連線**。如需詳細資訊，請參閱《[Amazon Cognito 開發人員指南》中的授權 Amazon Verified Permissions](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-authorization-with-avp.html)。 *Amazon Cognito *
   + 如果委託人的 ID 和屬性將從**外部 OIDC 提供者**產生的 ID 和/或存取字符中擷取，請選擇外部 OIDC 提供者，並新增提供者和字符詳細資訊。

1. 選擇**下一步**。

1. 在**政策詳細資訊**區段中，輸入第一個 Cedar 政策的選用**政策描述**。

1. 在**主體範圍**欄位中，選擇將從政策授予許可的主體。
   + 選擇**特定委託人**，將政策套用至特定委託人。在**允許採取動作的委託人**欄位中選擇委託人，然後輸入委託人的實體識別符。例如， `user-id`可以是*天氣更新 Web 應用程式中*的實體識別符。
**注意**  
如果您使用的是 Amazon Cognito，實體識別符必須格式化為 `<userpool-id>|<sub>`。
   + 選擇**所有主體**，將政策套用到政策存放區中的所有主體。

1. 在**資源範圍**欄位中，選擇指定委託人有權採取行動的資源。
   + 選擇**特定資源**，將政策套用至特定資源。選擇**此政策應套用至**資源欄位中的資源，並輸入資源的實體識別符。例如， `temperature-id`可以是*天氣更新 Web 應用程式中*的實體識別符。
   + 選擇**所有資源**，將政策套用至政策存放區中的所有資源。

1. 在**動作範圍**欄位中，選擇指定委託人將獲授權執行的動作。
   + 選擇**特定動作集**，將政策套用至特定動作。選取**此政策應套用至 欄位的動作旁的核取方塊 （動作）**。
   + 選擇**所有動作**，將政策套用至政策存放區中的所有動作。

1. 檢閱政策**預覽區段中的政策**。選擇**建立政策存放區**。

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

**使用**設定 API 閘道 和身分來源**組態方法建立政策存放區**

 API 閘道 選項會使用 Verified Permissions 政策來保護 APIs，這些政策旨在從使用者群組或*角色*做出授權決策。此選項會建置政策存放區，以使用身分來源群組和具有 Lambda 授權方的 API 來測試授權。

IdP 中的使用者及其群組會成為您的委託人 (ID 字符） 或您的內容 （存取字符）。API 中 API 閘道 的方法和路徑會成為您的政策授權的動作。您的應用程式會成為 資源。由於此工作流程，Verified Permissions 會建立政策存放區、Lambda 函數和 API Lambda 授權方。完成此工作流程後，您必須將 Lambda [授權方](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html)指派給您的 API。

1. 在 [Verified Permissions 主控台](https://console.aws.amazon.com/verifiedpermissions)中，選取**建立新政策存放區**。

1. 在**開始選項**區段中，選擇**使用 API 閘道 和身分來源設定**，然後選取**下一步**。

1. 在**匯入資源和動作**步驟的 **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 閘道 主控台中修改您的 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. 在身分來源的**字符中輸入使用者宣告名稱**。這是來自您的 ID 或存取權杖`sub`的宣告，其保留要評估之實體的唯一識別符。來自已連線 OIDC IdP 的身分將映射至政策存放區中的使用者類型。

      1. 在身分來源的**字符中輸入群組宣告名稱**。這是`groups`您的 ID 或存取字符中通常包含使用者群組清單的宣告。您的政策存放區會根據群組成員資格授權請求。

   1. 在**對象驗證**中，選擇`Add value`並新增您希望政策存放區在授權請求中接受的值。

   1. 選擇**下一步**。

1. 如果您選擇 **Amazon Cognito**，Verified Permissions 會查詢 群組的使用者集區。對於 OIDC 供應商，手動輸入群組名稱。**將動作指派給群組**步驟會為您的政策存放區建立政策，以允許群組成員執行動作。

   1. 選擇或新增您要包含在政策中的群組。

   1. 將動作指派給您選取的每個群組。

   1. 選擇**下一步**。

1. 在**部署應用程式整合**中，選擇是否要稍後手動連接 Lambda 授權方，還是要 Verified Permissions 現在為您執行，並檢閱 Verified Permissions 建立政策存放區和 Lambda 授權方時將採取的步驟。

1. 當您準備好建立新資源時，請選擇**建立政策存放區**。

1. 在瀏覽器中保持**政策存放區狀態**步驟開啟，以監控 Verified Permissions 建立資源的進度。

1. 一段時間後，通常大約一個小時，或者**部署 Lambda 授權方**步驟顯示**成功**時，如果您選擇手動連接授權方，請設定授權方。

   Verified Permissions 將在您的 API 中建立 Lambda 函數和 Lambda 授權方。選擇**開啟 API** 以導覽至您的 API。

   若要了解如何指派 Lambda 授權方，請參閱《*Amazon API Gateway 開發人員指南*》中的[使用 API 閘道 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. 在**範例專案**區段中，選擇要使用的範例已驗證許可應用程式類型。
   + **PhotoFlash** 是面向客戶的範例 Web 應用程式，可讓使用者與好友共用個別相片和相簿。使用者可以設定允許誰檢視、評論和重新共用其相片的精細許可。帳戶擁有者也可以建立朋友群組，並將相片整理成相簿。
   + **DigitalPetStore** 是一個範例應用程式，任何人都可以註冊並成為客戶。客戶可以新增寵物來銷售、搜尋寵物和下訂單。新增寵物的客戶會記錄為寵物擁有者。寵物擁有者可以更新寵物的詳細資訊、上傳寵物影像或刪除寵物清單。已下訂單的客戶會記錄為訂單擁有者。訂單擁有者可以取得訂單的詳細資訊或取消訂單。寵物商店管理員具有管理存取權。
**注意**  
**DigitalPetStore** 範例政策存放區不包含政策範本。**PhotoFlash** 和 **TinyTodo** 範例政策存放區包含政策範本。
   + **TinyTodo** 是一種範例應用程式，可讓使用者建立任務和任務清單。清單擁有者可以管理和共用其清單，並指定誰可以檢視或編輯其清單。

1. 根據您選擇的範例專案，系統會自動產生範例政策存放區的結構描述命名空間。

1. 選擇**建立政策存放區**。

   您的政策存放區是使用您所選範例政策存放區的政策和結構描述建立的。如需您可以為範例政策存放區建立之範本連結政策的詳細資訊，請參閱 [Amazon Verified Permissions 範本連結政策範例](policy-templates-example-policies.md)。

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

**使用**空白政策存放區組態方法建立政策存放區****

1. 在**開始選項**區段中，選擇**空白政策存放**區。

1. 選擇**建立政策存放區**。

空白政策存放區是在沒有結構描述的情況下建立的，這表示不會驗證政策。如需更新政策存放區結構描述的詳細資訊，請參閱 [Amazon Verified Permissions 政策存放區結構描述](schema.md)。

如需為政策存放區建立政策的詳細資訊，請參閱 [建立 Amazon Verified Permissions 靜態政策](policies-create.md)和 [建立 Amazon Verified Permissions 範本連結政策](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 Verified Permissions 政策範本](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 建立政策存放區。如需詳細資訊，請參閱《Amazon Verified Permissions API 參考指南》中的 [CreatePolicyStore](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_CreatePolicyStore.html)。

------