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

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

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

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

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

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

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

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

グループを使用して、IAM ロールでリソースへの許可を制御できます。IAM ロールには、信頼ポリシーと許可ポリシーが含まれます。ロールの信頼ポリシーでは、ロールを使用できるユーザーを指定します。許可ポリシーでは、グループメンバーがアクセスできるアクションとリソースを指定します。IAM ロールを作成するときに、グループユーザーがロールを引き受けることを許可するロールの信頼ポリシーを設定します。ロールの許可ポリシーで、グループに付与する許可を指定します。

Amazon Cognito でグループを作成するときは、ロールの ARNを指定して IAM ロールを指定します。グループメンバーが Amazon Cognito を使用してサインインすると、ID プールから一時的な認証情報を受け取ることができます。それらの許可は、関連付けられた IAM ロールによって決まります。

各ユーザーは複数のグループに属することができます。デベロッパーとして、ユーザーが複数のグループに属している場合に IAM ロールを自動的に選択するための以下のオプションがあります。

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

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

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

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

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

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 Management Consoleでの新しいグループの作成

[Users and groups] (ユーザーとグループ) タブの [Groups] (グループ) タブには、[Create group] (グループの作成) ボタンがあります。


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

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


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