Amazon Cognito
開発者ガイド

ユーザープールにグループを追加する

Amazon Cognito ユーザープールのグループのサポートにより、ユーザーの作成と管理、グループへのユーザーの追加、およびグループからのユーザーの削除が可能になります。グループを使用して、ユーザーのコレクションを作成してそのアクセス権限を管理したり、異なるタイプのユーザーを表したりできます。グループに AWS Identity and Access Management (IAM) ロールを割り当てて、グループのメンバーのアクセス権限を定義できます。

グループを使用して、ユーザープールでユーザーのコレクションを作成できます。この操作は、これらのユーザーのアクセス権限を設定するためによく行われます。たとえば、ウェブサイトやアプリの読者、寄稿者、および編集者であるユーザーに対して別個のグループを作成できます。また、グループに関連付けられた IAM ロールを使用すると、これらの異なるグループに別のアクセス権限を設定し、寄稿者のみがコンテンツを Amazon S3 に配置し、編集者のみが Amazon API Gateway の API を通じてコンテンツを発行するようにできます。

ユーザープールのグループは、AWS マネジメントコンソール、API、および CLI から作成、管理できます。開発者として (AWS 認証情報を使用)、ユーザープールのグループを作成、読み込み、更新、削除、およびリストすることができます。また、グループに対してユーザーを追加、削除できます。

ユーザープール内のグループを使用しても追加コストは発生しません。詳細については、「Amazon Cognito 料金表」を参照してください。

SpaceFinder リファレンスアプリで、この機能が使用されている例を参照できます。

グループへの IAM ロールの割り当て

グループを使用して、グループ内のユーザーに IAM ロールを割り当てることで、AWS のリソースへのアクセス権限を管理できます。グループを作成するとき、グループにロール ARN を提供することでこのグループのユーザーに IAM ロールを指定できます。IAM ロールは、ユーザーに対してリソースおよびアクションの許可あるいは拒否を定義するポリシーが関連付けられています。IAM ロールおよびそのアクセス許可は、Amazon Cognito ID プールによって認証されたユーザーに提供される一時的な AWS 認証情報に関連付けられています。[トークンからロールを選択する] オプションを使用して Amazon Cognito フェデレーティッドアイデンティティによって AWS 認証情報が提供されるときに、グループのユーザーにグループの IAM ロールが自動的に割り当てられます。

各ユーザーは複数のグループに属することができます。開発者には、ユーザーが複数のグループに属している場合に IAM ロールを自動的に選択する次のオプションがあります。

  • 各グループに優先順位の値を割り当てることができます。優先順位が高い (値が低い) グループが選択され、関連付けられた IAM ロールが適用されます。

  • また、アプリは、ID プールを通じてユーザーの AWS 認証情報をリクエストするときに、GetCredentialsForIdentity CustomRoleARN パラメータでロール ARN を指定して、利用できるロールから選択できます。指定された IAM ロールは、ユーザーが利用できるロールに一致する必要があります。

グループへの優先順位の値の割り当て

ユーザーは複数のグループに属することができます。ユーザーの ID トークンで、cognito:groups クレームに、ユーザーが属するすべてのグループのリストが含まれます。cognito:roles クレームには、グループに対応するロールのリストが含まれます。

ユーザーは複数のグループに属することができるので、各グループに優先順位を割り当てることができます。これは、ユーザーがユーザープールで属することができるその他のグループに対するこのグループの優先順字を指定する正数です。ゼロが最優先順位値です。低い優先順位の値を持つグループは、高い優先順位の値または null 値を持つグループよりも優先されます。ユーザーが複数のグループに属している場合、こは IAM ロールがユーザーの ID トークンで cognito:preferred_role クレームに適用されている、最も優先順位の値が低いグループです。

2 つのグループは、同じ優先順位の値を持つことができます。その場合は、どちらのグループも他方に対して優先されません。同じ優先順位の値を持つ 2 つのグループのロール ARN が同じである場合、そのロールは、各グループのユーザーの ID トークンの cognito:preferred_role クレームで使用されます。2 つのグループのロール ARN が異なる場合、cognito:preferred_role クレームは、ユーザーの ID トークンで設定されません。

グループと Amazon API Gateway を使用したアクセス権限の管理

ユーザープールのグループを使用して、Amazon API Gateway でアクセス権限を管理できます。ユーザーがメンバーであるグループは、ユーザーがサインインするときにユーザープールによって提供される ID トークンに含まれています。リクエストによってこれらの ID トークンを Amazon API Gateway に送信し、カスタムオーソライザー Lambda 関数を使ってトークンを検証してから、ユーザーが属しているグループを検査できます。ユーザープールトークンと Amazon API Gateway カスタムオーソライザーの使用例については、このブログ投稿を参照してください。

グループの制限

ユーザーグループには、次の制限が適用されます。

  • 作成できるグループの数は、Amazon Cognito のサービス制限によって制限されます。

  • グループはネストできません。

  • グループのユーザーを検索することはできません。

  • グループを名前で検索することはできませんが、グループをリストすることはできます。

  • メンバーが存在しないグループのみを削除できます。

AWS マネジメントコンソールでの新しいグループの作成

[ユーザーとグループ] タブの [グループ] タブには、[グループの作成] ボタンがあります。


        ユーザーとグループタブのグループタブで、新しいグループを作成する。

[グループの作成] を選択すると、[グループの作成] フォームが表示されます。このフォームに、新しいグループに関する情報を入力します。[名前] フィールドのみが必須です。ID プールを持つユーザープールを統合する場合、[IAM ロール] の設定によって、トークンからロールを選択するよう ID プールが設定されているときに、ユーザーの ID トークンに割り当てられるロールが決定されます。既にロールを定義していない場合は、[新しいロールの作成] を選択します。複数のグループがあり、ユーザーを複数のグループに割り当てることができる場合、各グループに [Precedence] の値を設定できます。優先順位の値は正の整数である場合があります。ゼロが最優先順位値です。


        ユーザーとグループタブでグループフォームを作成する。