スマートフォンアプリやWebアプリでは、ユーザー登録やログイン機能が欠かせません。
しかし、認証機能を一から開発するには、ユーザー情報の管理やパスワードの暗号化、MFA(多要素認証)、パスワードリセットなど、多くのセキュリティ対策を実装する必要があります。
そこでAWSが提供しているのがAmazon Cognitoです。
Amazon Cognitoを利用すると、安全なユーザー認証やAWSサービスへのアクセス制御を比較的容易に実装できます。
一方で、AWS初心者は「IAMとの違いが分からない」「User PoolとIdentity Poolは何が違うの?」と混乱しがちです。
SAA(AWS Certified Solutions Architect – Associate)でも、この違いを理解しているかを問う問題が頻繁に出題されます。
この記事では、Amazon Cognitoの基本から、User PoolとIdentity Poolの役割、実際の利用シーンまで、初心者にも分かりやすく図解を交えながら解説します。
この記事で学べること
- Amazon Cognitoとは何か
- Amazon Cognitoが必要とされる理由
- IAMとAmazon Cognitoの違い
- User PoolとIdentity Poolの役割
- User PoolとIdentity Poolの違い
- SAA試験で押さえるべきポイント
📘 SAA試験対策ボックス
| 試験頻出度 | ★★★★☆ |
|---|---|
| 重要度 | ★★★★☆ |
| 学習優先度 | 高い |
| 関連ドメイン | ドメイン1:セキュアなアーキテクチャの設計 |
| 関連サービス | Amazon Cognito・IAM・STS・API Gateway・AWS Lambda |
この記事で覚えるポイント
- User Poolはユーザー認証を担当する
- Identity PoolはAWSサービスへのアクセス権限を付与する
- Identity PoolはIAMロールを利用して一時的な認証情報を取得する
- IAMはAWS管理者向け、Cognitoはアプリ利用者向けの認証サービスである
Amazon Cognitoとは?
Amazon Cognitoは、AWSが提供するアプリケーション向けの認証・認可サービスです。
ユーザー登録、ログイン、パスワード管理、MFA、多数の外部認証サービスとの連携など、認証機能に必要な仕組みをクラウド上で提供しています。
例えば、ショッピングサイトやSNS、スマートフォンアプリなどでは、利用者がメールアドレスとパスワードでログインする機能があります。
このような認証機能を安全かつ効率的に実装できるのがAmazon Cognitoです。

ポイント
Amazon Cognitoは「AWSへログインするサービス」ではありません。
アプリケーションを利用するエンドユーザーを認証するサービスです。
なぜAmazon Cognitoが必要なのか?
もし認証機能を自社で開発する場合、次のような機能を実装する必要があります。
- ユーザー登録
- ログイン
- ログアウト
- パスワード変更
- パスワードリセット
- メール認証
- MFA(多要素認証)
- セッション管理
- パスワードの安全な保存
- 不正ログイン対策
これらを安全に実装・運用するには、多くの開発工数とセキュリティ対策が必要です。
Amazon Cognitoを利用すれば、これらの機能をAWSが提供するマネージドサービスとして利用できるため、開発者はアプリケーションの本来の機能開発に集中できます。
IAMとAmazon Cognitoの違い
AWS初心者が最も混同しやすいのが、IAMとAmazon Cognitoの違いです。
どちらも認証に関係するサービスですが、対象となるユーザーが異なります。
| 項目 | IAM | Amazon Cognito |
|---|---|---|
| 対象 | AWS管理者・運用担当者 | アプリケーション利用者 |
| 利用目的 | AWS管理コンソールやCLIへのアクセス | Webアプリ・モバイルアプリへのログイン |
| 認証対象 | IAMユーザー・IAMロール | 一般ユーザー |
| 代表例 | AWS運用担当者 | ECサイトの会員・アプリ利用者 |
User Poolとは?
User Pool(ユーザープール)は、Amazon Cognitoのユーザー認証機能を提供するサービスです。
メールアドレスやパスワードによるログイン、ユーザー登録、MFA、パスワードリセットなど、一般的な認証機能を提供します。
つまり、User Poolは「ユーザーが本人であることを確認する仕組み」と考えると理解しやすいでしょう。
Identity Poolとは?
Identity Pool(IDプール)は、Amazon Cognitoで認証されたユーザーに対して、AWSサービスへアクセスするための一時的な認証情報(認証情報=クレデンシャル)を発行するサービスです。
User Poolは「ユーザー本人であること」を証明する認証サービスでした。一方、Identity Poolは、その認証結果をもとにAWSサービスへアクセスできるようにする役割を持っています。
つまり、Identity Poolは認証そのものを行うサービスではなく、「認証後のAWSアクセス権限」を管理するサービスです。
ポイント
Identity Pool単体ではユーザー認証はできません。 認証されたユーザーに対して、一時的なAWS認証情報を払い出す役割を担います。
Identity PoolはIAMロールを利用する
Identity Poolの最大の特徴は、IAMロールを利用してAWSサービスへのアクセス権限を付与することです。
例えば、ログインしたユーザーがAmazon S3へ画像をアップロードするアプリを考えてみましょう。
ユーザー自身にAWSアカウントやIAMユーザーを作成する必要はありません。 Identity PoolがIAMロールを利用して、一時的な認証情報を発行することで、安全にS3へアクセスできます。
処理の流れは次のようになります。
- ユーザーがUser Poolでログインする
- User Poolが認証に成功する
- Identity Poolが認証結果を受け取る
- IAMロールを引き受ける(AssumeRole)
- AWS STSが一時的な認証情報を発行する
- ユーザーはAmazon S3やDynamoDBへアクセスする
💼 実務ではこう使われる
スマートフォンアプリでは、利用者が撮影した写真をAmazon S3へ保存するケースがあります。 このとき、アプリ内へアクセスキーを保存するのではなく、Identity PoolとIAMロールを利用して安全にアップロードを実現します。
User PoolとIdentity Poolの違い
SAA試験では、この2つの違いを理解しているかを問う問題が頻繁に出題されます。
| 項目 | User Pool | Identity Pool |
|---|---|---|
| 役割 | ユーザー認証 | AWSサービスへのアクセス権限付与 |
| ログイン機能 | 〇 | × |
| JWT発行 | 〇 | × |
| IAMロール利用 | × | 〇 |
| STS利用 | × | 〇 |
| AWSサービスアクセス | × | 〇 |
覚え方
- User Pool = 「本人確認」
- Identity Pool = 「AWS利用許可」
なぜUser PoolだけではAWSサービスへアクセスできないのか?
User Poolでは、ユーザー認証に成功するとJWT(JSON Web Token)が発行されます。
しかし、このJWTは「本人確認が完了した」という情報であり、AWSサービスへアクセスするための認証情報ではありません。
AWSサービスへアクセスするには、一時的なAWS認証情報(Access Key ID・Secret Access Key・Session Token)が必要になります。
この認証情報を取得する役割を担っているのがIdentity Poolです。
そのため、User PoolだけではAmazon S3やDynamoDBへアクセスできません。 Identity PoolとIAMロールを組み合わせることで初めてAWSサービスへ安全にアクセスできます。
User PoolとIdentity Poolは一緒に利用することが多い
実際のシステムでは、User PoolとIdentity Poolを組み合わせて利用するケースが一般的です。
- ユーザーがUser Poolへログインする
- User PoolがJWTを発行する
- Identity PoolがJWTを受け取る
- Identity PoolがIAMロールをAssumeRoleする
- STSが一時的な認証情報を発行する
- Amazon S3・DynamoDB・API Gatewayなどへアクセスする
このように役割を分担することで、安全性と利便性を両立しています。
💼 実務ではこう考える
サーバーレスアプリケーションでは、「API Gateway → Lambda → DynamoDB」の構成にAmazon Cognitoを組み合わせるケースが非常に多く見られます。 利用者はUser Poolでログインし、Identity PoolがIAMロールを利用して必要最小限の権限を付与します。
このパートのポイント
- Identity PoolはAWSサービスへのアクセス権限を付与する
- Identity PoolはIAMロールを利用する
- STSが一時的な認証情報を発行する
- User Poolは認証、Identity Poolは認可(AWSアクセス)の役割を担う
- 実際のシステムではUser PoolとIdentity Poolを組み合わせて利用することが一般的
GoogleやAppleなどの外部認証サービスとも連携できる
Amazon Cognitoは、メールアドレスやパスワードによる認証だけでなく、外部認証サービス(Identity Provider:IdP)との連携にも対応しています。
近年では、「Googleでログイン」「Appleでサインイン」「Facebookでログイン」といった認証方法を利用できるWebサイトやスマートフォンアプリが増えています。
Amazon Cognitoを利用すると、これらの認証機能を比較的簡単に実装できます。
| 認証プロバイダー | 利用例 |
|---|---|
| Googleアカウントでログイン | |
| Apple | iPhoneアプリへのログイン |
| SNSアカウントでログイン | |
| Amazon | Amazonアカウントでログイン |
| OIDC | 企業独自の認証基盤との連携 |
| SAML 2.0 | 企業向けシングルサインオン(SSO) |
💼 実務ではこう使われる
一般消費者向けサービスではGoogleやAppleとの連携が多く利用されます。一方、企業向けシステムではMicrosoft Entra ID(旧Azure AD)やOktaなど、SAMLやOIDCに対応した認証基盤と連携するケースが一般的です。
JWT(JSON Web Token)とは?
User Poolで認証に成功すると、JWT(JSON Web Token)が発行されます。
JWTは、「このユーザーは認証済みである」ことを証明するトークンです。 アプリケーションは、このトークンを利用してログイン状態を維持します。
一般的な認証の流れは次のようになります。
- ユーザーがメールアドレスとパスワードを入力する
- User Poolが認証を行う
- 認証成功後、JWTを発行する
- アプリケーションがJWTを保持する
- API呼び出し時にJWTを送信する
試験ポイント
JWTは「認証済み」であることを示すトークンであり、AWSリソースへアクセスするための認証情報ではありません。 AWSサービスへアクセスする場合は、Identity PoolがIAMロールを利用して一時的な認証情報を取得します。
MFA(多要素認証)にも対応
Amazon Cognitoは、多要素認証(MFA:Multi-Factor Authentication)にも対応しています。
パスワードだけでなく、スマートフォンアプリやSMSなどを利用した追加認証を行うことで、不正ログインのリスクを低減できます。
| MFAの種類 | 概要 |
|---|---|
| SMS認証 | SMSへ確認コードを送信する |
| TOTP認証 | 認証アプリ(Google Authenticatorなど)を利用する |
金融機関やECサイトなど、セキュリティが重視されるサービスではMFAの利用が一般的になっています。
SAA試験でよく出題されるポイント
- IAMはAWS管理者向けの認証サービスである
- Amazon Cognitoはアプリケーション利用者向けの認証サービスである
- User Poolはユーザー認証を担当する
- Identity PoolはIAMロールを利用してAWSサービスへのアクセス権限を付与する
- User Pool単体ではAmazon S3などへアクセスできない
- Identity PoolはAWS STSを利用して一時的な認証情報を取得する
- GoogleやAppleなどの外部認証サービスと連携できる
初心者が混同しやすいポイント
| 誤解 | 正しい理解 |
|---|---|
| IAMとAmazon Cognitoは同じサービス | IAMはAWS管理者向け、Cognitoはアプリ利用者向け |
| User PoolだけでS3へアクセスできる | Identity PoolとIAMロールが必要 |
| JWTがあればAWSサービスへアクセスできる | JWTだけではアクセスできない |
| Identity Poolがユーザー認証を行う | 認証を行うのはUser Pool |
IAM・IAM Identity Center・Amazon Cognitoの違い
AWSには認証に関するサービスが複数存在します。 それぞれ対象となるユーザーが異なるため、用途に応じて使い分けることが重要です。
| サービス | 対象 | 主な用途 |
|---|---|---|
| AWS IAM | AWS管理者 | AWSリソースのアクセス制御 |
| AWS IAM Identity Center | 企業ユーザー | 複数AWSアカウントへのシングルサインオン(SSO) |
| Amazon Cognito | アプリ利用者 | Web・モバイルアプリの認証 |
覚え方
- IAM:AWSを管理する人のための認証
- IAM Identity Center:企業内ユーザーのSSO
- Amazon Cognito:一般ユーザー向けアプリ認証
AWS公式試験ガイドとの対応
本記事はAWS Certified Solutions Architect – Associate(SAA-C03)の「ドメイン1:セキュアなアーキテクチャの設計」に対応しています。
特に以下の知識は試験で重要視されます。
- Amazon Cognitoによる認証
- User PoolとIdentity Poolの役割
- IAMロールとの連携
- 外部認証プロバイダーとの連携
- 一時的な認証情報の利用
まとめ
Amazon Cognitoは、Webアプリケーションやモバイルアプリ向けの認証・認可サービスです。
User Poolはユーザー認証を担当し、Identity PoolはIAMロールを利用してAWSサービスへのアクセス権限を付与します。
この役割を正しく理解することが、SAA試験対策だけでなく、実際のAWS設計でも重要になります。
特に、「IAMはAWS管理者向け」「Amazon Cognitoはアプリ利用者向け」という違いは頻出ポイントです。両者を混同しないように整理して覚えておきましょう。
この記事のポイント
- Amazon Cognitoはアプリケーション利用者向けの認証サービス
- User Poolはユーザー認証を担当する
- Identity PoolはIAMロールを利用してAWSサービスへのアクセス権限を付与する
- JWTは認証済みであることを示すトークン
- Identity PoolはAWS STSから一時的な認証情報を取得する
- Google・Apple・Facebook・OIDC・SAMLなどの外部認証サービスと連携できる
- IAM、IAM Identity Center、Amazon Cognitoは対象ユーザーと用途が異なる

