

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

# 新增群組至使用者集區
<a name="cognito-user-pools-user-groups"></a>

Amazon Cognito 使用者集區中的群組支援可讓您建立和管理群組、新增使用者至從群組，以及從群組移除使用者。使用群組來建立使用者集合，以管理其許可，或代表不同類型的使用者。您可以將 AWS Identity and Access Management (IAM) 角色指派給群組，以定義群組成員的許可。

您可以在使用者集區中使用群組來建立使用者集合，通常這麼做以為這些使用者設定許可。例如，您可以針對網站和應用程式的讀者、參與者和編輯者，建立個別的使用者群組。若是使用與群組相關聯的 IAM 角色，您還可以為這些不同的群組設定不同的權限，這樣就只有參與者可以在 Amazon S3 中輸入內容，且只有編輯者可以透過 Amazon API Gateway 中的 API 發佈內容。

Amazon Cognito 會為您新增至使用者集區的每個 OIDC、SAMl 和社交[身分提供者](cognito-user-pools-identity-federation.md#cognito-user-pools-identity-federation-how-it-works) (IdP) 建立使用者群組。群組的名稱格式為 `[user pool ID]_[IdP name]`，例如 `us-east-1_EXAMPLE_MYSSO`或 `us-east-1_EXAMPLE_Google`。每個唯一自動產生的 IdP 使用者設定檔都會自動新增至此群組。[連結的使用者](cognito-user-pools-identity-federation-consolidate-users.md)不會自動新增至此群組，但您可以個別程序將其設定檔新增至群組。

您可以從 AWS 管理主控台、 APIs 和 CLI 在使用者集區中建立和管理群組。身為開發人員 （使用 AWS 登入資料），您可以建立、讀取、更新、刪除和列出使用者集區的群組。您也可以新增使用者，以及從群組移除使用者。

在使用者集區中使用群組不會產生額外成本。如需詳細資訊，請參閱 [Amazon Cognito 定價](https://aws.amazon.com/cognito/pricing/)。

## 指派 IAM 角色給群組
<a name="assigning-iam-roles-to-groups"></a>

您可以使用 IAM 角色透過群組來控制資源的許可。IAM 角色包含信任政策和許可政策。角色[信任](https://docs.aws.amazon.com/cognito/latest/developerguide/role-trust-and-permissions.html)政策指定誰可以使用該角色。[許可](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies)政策指定群組成員可以存取的動作和資源。建立 IAM 角色時，請設定角色信任政策讓群組使用者可以擔任該角色。在角色許可政策中，指定您希望群組擁有的許可。

在 Amazon Cognito 中建立群組時，您可以透過提供角色的 [ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns) 來指定 IAM 角色。當群組成員使用 Amazon Cognito 登入時，可以從身分集區接收暫時性登入資料。其許可由相關聯 IAM 角色決定。

個別使用者可以在多個群組中。身為開發人員，當一個使用者在多個群組中時，您有下列選項可以自動選擇 IAM 角色：
+ 您可以為每個群組指派優先順序值。系統會選擇優先順序較高 (值較小) 的群組，並套用其相關聯的 IAM 角色。
+ 您的應用程式在透過身分集區為使用者請求 AWS 登入資料時，也可以在 [GetCredentialsForIdentity](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetCredentialsForIdentity.html) `CustomRoleARN` 參數指定角色 ARN，以從可用的角色中選擇。指定的 IAM 角色必須符合使用者可用的角色。

## 指定優先順序值給群組
<a name="assigning-precedence-values-to-groups"></a>

一個使用者可以隸屬於多個群組。在使用者的存取權和 ID 權杖中，`cognito:groups` 會宣告包含使用者隸屬的所有群組清單。`cognito:roles`宣告包含對應群組的角色清單。

由於一個使用者可以隸屬於多個群組，因此可以為每個群組各指派一個優先順序。此為非負數，指定在使用者集區中，此群組相對於使用者可隸屬之其他群組的優先順序。零是最高優先順序值。優先順序值較小的群組，優先順序高於較大值或空值的群組。如果使用者隸屬於兩個以上群組，優先順序值最小的群組會將其 IAM 角色套用至使用者 ID 權杖的 `cognito:preferred_role` 宣告。

兩個群組可以有相同的優先順序值。如果發生這種情況，則兩個群組的優先順序相等。如果優先順序值相同的兩個群組具有相同的角色 ARN，則會為每個群組中的使用者，在 ID 權杖的 `cognito:preferred_role`宣告中使用該角色。如果這兩個群組有不同的角色 ARN，則不會在使用者的 ID 權杖中設定 `cognito:preferred_role`宣告。

## 使用群組來控制 Amazon API Gateway 許可
<a name="using-groups-to-control-permission-with-amazon-api-gateway"></a>

您可以在使用者集區中使用群組來控制 Amazon API Gateway 許可。使用者隸屬的群組會包含在來自 `cognito:groups` 宣告之使用者集區的 ID 權杖和存取權杖中。您可以將具有請求的 ID 或存取權杖提交到 Amazon API Gateway，並使用 Amazon Cognito 使用者集區授權方來執行 REST API。如需詳細資訊，請參閱《[API Gateway 開發人員指南](https://docs.aws.amazon.com/apigateway/latest/developerguide/)》中的[使用 Amazon Cognito 使用者集區作為授權方來控制對 REST API 的存取](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html)。

您也可以使用自訂 JWT 授權方授權對 Amazon API Gateway HTTP API 的存取。如需詳細資訊，請參閱《[API Gateway 開發人員指南](https://docs.aws.amazon.com/apigateway/latest/developerguide/)》中的[使用 JWT 授權方控制對 HTTP API 的存取](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-jwt-authorizer.html)。

## 群組的限制
<a name="user-pool-user-groups-limitations"></a>

使用者群組具有下列限制：
+ 您可以建立的群組數量受限於 [Amazon Cognito 服務配額](quotas.md)。
+ 群組不能巢狀組合。
+ 您不能在群組中搜尋使用者。
+ 您不能依名稱來搜尋群組，但您可以列出群組。

## 在 中建立新群組 AWS 管理主控台
<a name="creating-a-new-group-using-the-console"></a>

使用下列程序以建立新的群組。

**建立新群組**

1. 前往 [Amazon Cognito 主控台](https://console.aws.amazon.com/cognito/home)。如果出現提示，請輸入您的 AWS 登入資料。

1. 選擇 **User Pools** (使用者集區)。

1. 從清單中選擇現有的使用者集區。

1. 選擇**群組**功能表，然後選擇**建立群組**。

1. 在 **Create a group** (建立群組) 頁面，**Group name** (群組名稱) 中，輸入新群組的易記名稱。

1. 您可以選擇性地使用下列任一欄位，提供有關此群組的其他資訊：
   + **Description** (描述) – 輸入有關此新群組之用途的詳細資訊。
   + **Precedence** (優先順序) – Amazon Cognito 根據使用者所屬的群組具有較低的優先順序值，評估並套用指定使用者的所有群組許可。系統會選擇優先順序較低的群組，並套用其相關聯的 IAM 角色。如需詳細資訊，請參閱[指定優先順序值給群組](#assigning-precedence-values-to-groups)。
   + **IAM role** (IAM 角色) – 需要控制資源的許可時，您可以將 IAM 角色指派給群組。如果您要將使用者集區與身分集區整合，**IAM role (IAM 角色)** 設定會決定要在使用者的 ID 權杖中指派哪個角色 (如果身分集區設定為從該權杖中選擇角色)。如需詳細資訊，請參閱[指派 IAM 角色給群組](#assigning-iam-roles-to-groups)。
   + **Add users to this group** (將使用者新增至此群組) – 建立後，將現有使用者新增為此群組的成員。

1. 選擇 **Create** (建立) 以確認。