目次
1. 結論
Amazon Cognitoは、「アプリ専用の会員管理システム」です。ログイン画面の作成、パスワード忘れ対応、MFA(多要素認証)などを自前で作る代わりに、AWSにお任せできます。一般ユーザーが自分のSNSアカウント(GoogleやAppleなど)でログインできるようにしたり、ログインしたユーザーだけに特定のAWSリソースを使わせたりする仕組みを提供します。
2. SAAで出やすいポイント
- ユーザープール (User Pools): 「認証 (Authentication)」を担当。ユーザーのディレクトリ(名簿)を作り、サインアップやサインインを管理する。
- IDプール (Identity Pools): 「認可 (Authorization)」を担当。ログインしたユーザーに、AWSリソース(S3やDynamoDBなど)を操作するための一時的なIAM権限を与える。
- フェデレーション (Federation): Google, Facebook, Appleなどの外部プロバイダーや、SAML 2.0(社内システム等)を使ったログインを可能にする。
- MFAとアダプティブ認証: 二要素認証の追加や、普段と違う場所からのアクセス時に追加の確認を求める高度なセキュリティ機能。
- サーバーレス連携: API GatewayやAppSyncの認証機能として直接統合できる。
3. キーワードでの判断
| 問題文のキーワード | 疑うべきサービス/機能 | 判断理由 |
|---|---|---|
| 「モバイルアプリにログイン機能を追加」 | Cognito ユーザープール | 会員管理が必要なため |
| 「外部SNSアカウントでログインさせたい」 | Cognito フェデレーション | ソーシャルログイン機能 |
| 「ログインユーザーにS3へのアクセス権を与える」 | Cognito IDプール | AWSリソースへの認可が必要 |
4. ひっかけポイント
- ユーザープール vs IDプール:
- ユーザープール: IDとパスワードで本人確認をするまで。
- IDプール: 本人確認が取れた人に「AWSを使っていいよという鍵(IAM権限)」を渡すまで。
- IAMとの違い:
- IAM: 主に「開発者やサーバー」など、AWSを管理する内部向けの権限。
- Cognito: 主に「アプリの一般ユーザー」など、不特定多数の外部向けの権限。
5. 覚え方
- 「アプリの受付窓口」。
- ユーザープールで「会員証」を発行し、IDプールで「AWSというテーマパークの入場チケット(IAM)」に交換してくれるイメージ。
6. 関連サービス
| サービス名 | 関連する理由 |
|---|---|
| API Gateway | Cognitoユーザープールをオーソライザーとして設定し、APIへのアクセスを制限する。 |
| S3 | IDプールを使って、特定のユーザーに自分専用のフォルダへのアクセスを許可する。 |
| Lambda | ユーザーのサインアップ時などに、カスタムロジック(歓迎メール送信など)を実行するトリガー。 |
7. Obsidian管理メモ
- 復習ポイント:
ユーザープールとIDプールの違いを問う問題が非常に多い。
- User Pools = AuthN (Authentication)
- Identity Pools = AuthZ (Authorization)
- 関連ノート: アプリの認証・認可設計
8. HTMLファイル名
amazon-cognito-authentication-authorization.html