Contents
Amazon Cognito の概要と主な機能
Cognito はモバイル・Web アプリ向けに、ユーザーの認証・認可を サーバーレスで 提供するサービスです。エンドユーザーが自前で認証ロジックを書く必要がなく、数クリックでサインアップ/サインインフローを構築できます。本章では User Pool と Identity Pool の役割と、公式ドキュメントに基づく主要機能を解説します。
User Pool とサインアップ/サインインフロー
User Pool は Cognito が管理するユーザー情報のデータベースです。メール・電話番号での登録やパスワードポリシー、カスタム属性が標準で利用できます。
- 認証方式:username + password に加えて MFA(SMS / TOTP)や検証コードを組み合わせた多要素認証が可能です。
- SDK サポート:AWS Amplify、AWS Mobile SDK など数行のコードでフロントエンドに統合できます。
- 無料利用枠:月間 5 万件(約 50 k)までの認証リクエストが無料です※[1]。
ポイント:User Pool は「誰がサインインできるか」を管理し、バックエンド側で認証ロジックを実装する手間を大幅に削減します。
Identity Pool とフェデレーテッド認証
Identity Pool(フェデレーテッド ID)は、User Pool で認証済みのユーザーや外部 IdP のトークンから AWS リソースへの一時的なクレデンシャル を発行します。
- サポート IdP:Google、Facebook、Apple、SAML 2.0 対応プロバイダーなど公式ドキュメントに掲載された全ての外部 ID プロバイダーと連携できます※[2]。
- 一時クレデンシャル:取得したトークンで AWS SDK を呼び出し、S3 へのアップロードや API Gateway の利用が可能です。
- スケーラビリティ:公式には「月間 100 億件超」の認証リクエストを処理できると記載されています※[3]。
ポイント:Identity Pool は「認証されたユーザーにどの AWS リソースへのアクセス権を付与するか」を動的に決定します。
ソーシャルログイン・MFA の標準搭載
Cognito では主要なソーシャルプロバイダーと数クリックで連携でき、MFA(SMS/TOTP)もデフォルトで有効化できます。
| 機能 | 主な利点 |
|---|---|
| ソーシャルログイン | ユーザーは既存の SNS アカウントで即時サインイン |
| MFA (SMS/TOTP) | アカウント乗っ取りリスクを大幅に低減 |
| カスタムチャレンジ | ビジネス要件に合わせた認証フローを実装可能 |
ポイント:標準機能だけでセキュリティとユーザー体験の両立が実現でき、追加開発コストを抑えられます。
AWS IAM の概要と主な機能
IAM(Identity and Access Management)は、AWS リソース全般へのアクセス権限を 細粒度かつ統合的に 管理する基盤です。社内エンジニアやサービス間連携での最小権限実装が求められる場面で中心的に利用されます。本章ではユーザー・ロール管理、ポリシー言語、監査機能を公式情報をもとに整理します。
ユーザー・グループとアクセスキー管理
IAM ユーザーは AWS アカウント内の個別主体で、プログラムからは Access Key(AK)/Secret Key(SK)で認証します。
- 作成方法:AWS コンソールまたは CLI (
aws iam create-user) で即座に生成可能です。 - グループ:共通権限をまとめて付与でき、管理負荷が低減します。
- アクセスキーのローテーション:自動化スクリプト(例: AWS Secrets Manager)で定期的に更新し、ベストプラクティスを遵守できます※[4]。
ポイント:IAM ユーザーは「AWS に対して何ができるか」を決める最小単位です。キー管理の自動化がセキュリティ向上の鍵となります。
ポリシー言語と細粒度権限付与
IAM のポリシーは JSON 形式で、Allow / Deny を組み合わせてリソース単位のアクセスを制御します。
- 条件キー:IP アドレス、MFA 有無、タグベースなど実行時コンテキストに基づく細かい制御が可能です。
- サービスコントロールポリシー(SCP):AWS Organizations で組織全体の最大許可範囲を上位レベルで限定します※[5]。
- 監査ログ:CloudTrail がすべての IAM 操作を記録し、コンプライアンス要件に対応できます※[6]。
ポイント:JSON ポリシーは柔軟性が高く、最小権限の原則(Principle of Least Privilege)を実装するための中心的手段です。
ロールと一時的認証によるサービス間委任
ロールは「誰が」ではなく「何が」アクセスできるかを表す抽象概念で、AssumeRole により他アカウントや AWS サービスから一時的に取得できます。
| 用途 | 具体例 |
|---|---|
| クロスアカウントアクセス | 開発用アカウントから本番アカウントの S3 バケットへ読み取り権限を付与 |
| EC2 インスタンスロール | アプリが SSM Parameter Store のシークレットに安全にアクセス |
| Cognito 連携 (フェデレーテッド) | 認証済みユーザーにテナント別 IAM ロールを割り当て、リソース利用を制御 |
ポイント:ロールと一時クレデンシャルにより、長期的な認証情報を保持せずに安全な委任が実現します。
Cognito と IAM の比較
| 比較軸 | Amazon Cognito | AWS IAM |
|---|---|---|
| 対象ユーザー層 | エンドユーザー(モバイル/Web) | 社内エンジニア・サービス間 |
| 認証方式 | User Pool + 外部 IdP、MFA 標準装備 | Access Key / ロールベース認証 |
| 権限付与方法 | Identity Pool で一時クレデンシャル(粗粒度) | ポリシー言語で細粒度制御 |
| スケーラビリティ | 月間 100 億件超の実績(サーバーレス設計)※[3] | アカウントごとのポリシー上限は約 5,000 件 |
| コスト構造 | 認証リクエスト数ベース、無料枠あり※[1] | 基本無料、使用した AWS リソースのみ課金 |
| 管理容易さ | コンソール UI が充実し、コード不要で設定可能 | JSON ポリシーは手動編集が必要だが自動化支援ツール多数 |
| セキュリティ・コンプライアンス | GDPR、SOC 2、MFA 標準装備 | CloudTrail、IAM Access Analyzer、SCP による監査対応 |
| マルチテナンシー | ユーザープール単位で分離可能 | アカウントまたは Organizations で分離 |
ポイント:エンドユーザー向けの認証は Cognito が最適、AWS リソースへの細かな権限管理は IAM が得意です。要件に応じてハイブリッド構成を検討してください。
ハイブリッド構成例(Cognito → IAM ロール連携)
- User Pool でエンドユーザーを認証し、JWT トークンを取得。
- Identity Pool がトークンから一時的な AWS クレデンシャルを発行。
- 発行されたクレデンシャルに IAM ロール(テナント別) を紐付け、S3 や DynamoDB へのアクセス権を制御。
このパターンは「認証は Cognito に任せ、権限は IAM の細粒度で管理したい」ケースに有効です。
導入判断フローチャートとベストプラクティス
| 判定項目 | 推奨アクション |
|---|---|
| エンドユーザーが外部 IdP(Google/Apple 等)を利用するか | Yes → Cognito の Identity Pool を活用 |
| 主な目的が AWS リソースへのアクセス権管理か | Yes → IAM ポリシー・ロールで実装 |
| 両方の要件がある場合 | ハイブリッド構成(Cognito + IAM)を採用 |
ベストプラクティス
- 最小権限の原則:Identity Pool では必要最低限の IAM ロールだけを割り当てる。
- ポリシーのコード化:IAM ポリシーは Git 等でバージョン管理し、プルリクエストによるレビューを徹底する。
- 定期的なキー・ローテーション:Access Key は自動ローテーションツール(例: AWS Secrets Manager)で更新し、漏洩リスクを低減。
- モニタリングとアラート:CloudWatch メトリクスと CloudTrail ログで認証・権限付与の異常を検知する仕組みを構築。
ポイント:上記フローとベストプラクティスに従うことで、開発工数と運用コストを最適化しつつ高いセキュリティ水準を維持できます。
まとめ
- Amazon Cognito はエンドユーザー向け認証をサーバーレスで簡素化し、ソーシャルログインや MFA が標準装備です。無料枠(月間 5 万件)もあり、スタートアップから大規模サービスまで幅広く利用できます。
- AWS IAM は AWS リソースへの細粒度権限付与と監査機能が強力で、社内システムやサービス間連携に最適です。ポリシーは JSON 形式でコード化でき、組織全体のガバナンスを実現します。
- 比較軸(対象ユーザー層・認証方式・権限付与方法・スケーラビリティ等)を基に選定し、要件が混在する場合は Cognito と IAM のハイブリッド構成 を検討してください。
最新の料金や機能制限は必ず AWS 公式ページをご確認ください([Amazon Cognito Pricing][1]、[IAM Documentation][4])。
参考文献
- Amazon Cognito Pricing – https://aws.amazon.com/cognito/pricing/
- External Identity Providers (Cognito) – https://docs.aws.amazon.com/cognito/latest/developerguide/external-idp.html
- Amazon Cognito Scalability – https://docs.aws.amazon.com/cognito/latest/developerguide/limits.html
- IAM Best Practices – https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html
- AWS Organizations and SCPs – https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html
- CloudTrail User Guide – https://docs.aws.amazon.com/cloudtrail/index.html