【認証連携】Amazon Cognito(User Pool / Identity Pool)によるアプリ認証の基本

  • URLをコピーしました!

スマートフォンアプリや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の違いです。

どちらも認証に関係するサービスですが、対象となるユーザーが異なります。

項目IAMAmazon 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へアクセスできます。

処理の流れは次のようになります。

  1. ユーザーがUser Poolでログインする
  2. User Poolが認証に成功する
  3. Identity Poolが認証結果を受け取る
  4. IAMロールを引き受ける(AssumeRole)
  5. AWS STSが一時的な認証情報を発行する
  6. ユーザーはAmazon S3やDynamoDBへアクセスする

💼 実務ではこう使われる

スマートフォンアプリでは、利用者が撮影した写真をAmazon S3へ保存するケースがあります。 このとき、アプリ内へアクセスキーを保存するのではなく、Identity PoolとIAMロールを利用して安全にアップロードを実現します。

User PoolとIdentity Poolの違い

SAA試験では、この2つの違いを理解しているかを問う問題が頻繁に出題されます。

項目User PoolIdentity 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を組み合わせて利用するケースが一般的です。

  1. ユーザーがUser Poolへログインする
  2. User PoolがJWTを発行する
  3. Identity PoolがJWTを受け取る
  4. Identity PoolがIAMロールをAssumeRoleする
  5. STSが一時的な認証情報を発行する
  6. 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を利用すると、これらの認証機能を比較的簡単に実装できます。

認証プロバイダー利用例
GoogleGoogleアカウントでログイン
AppleiPhoneアプリへのログイン
FacebookSNSアカウントでログイン
AmazonAmazonアカウントでログイン
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は、「このユーザーは認証済みである」ことを証明するトークンです。 アプリケーションは、このトークンを利用してログイン状態を維持します。

一般的な認証の流れは次のようになります。

  1. ユーザーがメールアドレスとパスワードを入力する
  2. User Poolが認証を行う
  3. 認証成功後、JWTを発行する
  4. アプリケーションがJWTを保持する
  5. 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 IAMAWS管理者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は対象ユーザーと用途が異なる

目次