Amazon Cognitoについて
Amazon Cognito
ウェブアプリやモバイルアプリに「認証(誰であるか)」と 「認可(何ができるか)」の機能を簡単に追加できる フルマネージドサービスです。
2つの主要コンポーネント
Cognitoを理解する上で最も重要なのが、ユーザープールとIDプールの役割の違いです。
1. ユーザープール (User Pools) — 「認証」
ユーザーがサインアップ(登録)やサインイン(ログイン)を行うためのユーザーディレクトリです。
- 役割: 「この人は誰か?」を確認します。
- 主な機能:
- ユーザー登録、ログイン、パスワードリ忘れた時の再設定。
- 多要素認証 (MFA) やパスワードポリシーの設定。
- Google、Apple、Facebookなどのソーシャルログイン(外部IdP)との連携。
- 2026年のアップデート: クライアントシークレットのオンデマンドローテーション機能などが追加され、よりセキュアな運用が可能になっています。
2. IDプール (Identity Pools) — 「認可」
ログインしたユーザーに対して、AWSリソース(S3やDynamoDBなど)にアクセスするための一時的な権限を与える仕組みです。
- 役割: 「この人にどの操作を許可するか?」を管理します。
- 主な機能:
- ユーザーに対して一時的なIAM認証情報(アクセスキーなど)を発行。
- ログインしていない「ゲストユーザー」にも特定の権限を与えることが可能。
比較表:ユーザープール vs IDプール
| 特徴 | ユーザープール (User Pool) | IDプール (Identity Pool) |
|---|---|---|
| 主な目的 | 認証 (Authentication) | 認可 (Authorization) |
| 何を作るか | ユーザーの名簿(ディレクトリ) | AWSリソースへのアクセス権 |
| アウトプット | IDトークン、アクセストークン | 一時的なAWS認証情報 (IAM) |
| ターゲット | アプリ独自のログイン機能 | S3/DynamoDB等への直接アクセス |
なぜCognitoを使うのか?
- 開発コストの削減: ログイン画面(Hosted UI)やメール送信、パスワード管理のロジックを自分で実装する必要がありません。
- スケーラビリティ: 数人から数百万人のユーザーまで自動でスケールします。
- セキュリティ: パスワードのハッシュ化やMFA、異常なログイン試行の検知など、AWSレベルのセキュリティが標準で備わっています。