本文へスキップ
← 記事一覧に戻る

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レベルのセキュリティが標準で備わっています。