

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ユーザーグループのマルチテナンシーのベストプラクティス
<a name="group-based-multi-tenancy"></a>

グループベースのマルチテナンシーは、アーキテクチャでアイデンティティプールを持つ Amazon Cognito ユーザープールが必要な場合に最適です。

ユーザープールの [ID トークンとアクセストークン](amazon-cognito-user-pools-using-tokens-with-identity-providers.md#amazon-cognito-user-pools-using-tokens-with-identity-providers.title)には `cognito:groups` クレームが含まれています。さらに、ID トークンには `cognito:roles` クレームと `cognito:preferred_role` クレームが含まれます。アプリケーションでの認証の主な結果がアイデンティティプールからの一時的な AWS 認証情報である場合、ユーザーのグループメンバーシップによって、そのユーザーが受け取る [IAM ロール](iam-roles.md#iam-roles.title)とアクセス許可が決まります。

例えば、それぞれがアプリケーションアセットを独自の Amazon S3 バケットに保存している 3 つのテナントを考えてみましょう。各テナントのユーザーを、関連付けられたグループに割り当て、グループの優先ロールを設定し、そのロールにバケットへの読み取りアクセスを許可します。

次の図は、アプリケーションクライアントとユーザープールを共有するテナントで、IAM ロールの適格性を決定するユーザープール内の専用グループがあるものを示しています。

![\[各テナントが共有ユーザープールに独自のユーザーグループを持つ多対 1 マルチテナンシーモデルの図。\]](http://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/images/multi-tenancy-group.png)


**グループマルチテナンシーを実装するタイミング**  
 AWS リソースへのアクセスが主な懸念事項である場合。Amazon Cognito ユーザープールのグループは、ロールベースのアクセス制御 (RBAC) のメカニズムです。ユーザープールに多数のグループを設定し、グループ優先度に基づく複雑な RBAC 決定を行うことができます。アイデンティティプールは、優先度が最も高いロール、グループクレーム内の任意のロール、またはユーザーのトークン内の他のクレームからのロールに対して、認証情報を割り当てることができます。

**労力レベル**  
グループメンバーシップのみでマルチテナンシーを維持する労力は、低レベルです。ただし、ユーザープールグループのロールを IAM ロール選択の組み込み容量を超えて拡張するには、ユーザーのトークンにおけるグループメンバーシップを処理するアプリケーションロジックを構築し、クライアントで何をするかを決定する必要があります。Amazon Verified Permissions をアプリケーションと統合して、クライアント側の認可に関する決定を行うことができます。現在のところ、グループ識別子は Verified Permissions [IsAuthorizedWithToken](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_IsAuthorizedWithToken.html) API オペレーションでは処理されませんが、グループメンバーシップクレームなど、トークンの内容を解析する[カスタムコードを開発](https://docs.aws.amazon.com/verifiedpermissions/latest/userguide/identity-providers.html#identity-providers_other-idp)できます。