Amazon Cognitoのユーザープールとアイデンティティプールを使い分ける
SCS-C02では、アプリケーション利用者の認証と認可の設計が出題されます。Cognitoの2つのプールを取り違えると誤答になりやすいため、この記事で役割を整理します。
覚え方:3つの観点
「認証(誰か)」「認可(AWSの資格情報)」「フェデレーション(外部IdP)」の3つで考えます。
ユーザープール:認証の担当
ユーザーの登録、サインイン、MFAを管理し、結果としてJWT(ID、アクセス、リフレッシュ)トークンを発行します。SAMLやOIDC、ソーシャルのIdPともフェデレーションできます。Lambdaトリガーで、サインアップ時の処理を拡張できます。自社のAPIをログインユーザーだけに公開する場合は、ユーザープールのトークンをAPI GatewayのCognitoオーソライザーで検証します。
アイデンティティプール:認可の担当
ユーザープールや外部IdPで認証したユーザーに、STSの一時認証情報を発行します。認証済みと未認証のIAMロールを設定でき、ロールの選択ルールも使えます。モバイルアプリからS3やDynamoDBへ直接アクセスさせたい場合に使います。
| 項目 | ユーザープール | アイデンティティプール |
|---|---|---|
| 役割 | 認証(サインイン・MFA) | 認可(AWS資格情報の発行) |
| 発行するもの | JWTトークン | STSの一時認証情報 |
| 代表的な用途 | APIの保護・ユーザー管理 | S3やDynamoDBへの直接アクセス |
試験ポイント 両方を組み合わせるのが定番です。ユーザープールで認証し、そのトークンをアイデンティティプールに渡して、AWS資格情報を取得します。
よくある誤り ユーザープールが発行するJWTトークンは、そのままではAWSのAPIに署名して呼び出せません。AWS資格情報を得るには、アイデンティティプールが必要です。
チェックリスト
- ユーザープールの役割とJWTトークンを説明できる
- アイデンティティプールの役割と認証済みロールを説明できる
- APIの保護に使う仕組みを選べる
- S3へ直接アクセスさせる設計を選べる
まとめ
Cognitoは、認証はユーザープール、認可はアイデンティティプールと分けて考えます。 理解度はクイズで確認し、最新の試験範囲はAWS認定 公式ページで確かめましょう。
SCS(セキュリティ) におすすめの教材
書籍
要点整理から攻略する AWS認定 セキュリティ−専門知識 改訂2版
問題集
AWS認定 セキュリティ−専門知識 SCS-C02 練習問題集
Udemy・講座
AWS認定SCS(SCS-C03)対策トレーニングコース
Udemy・模試
AWS認定SCS 本番模試(4回分/260問)
本セクションにはAmazonアソシエイト・Udemyアフィリエイトのリンクが含まれます。