{
  "$type": "site.standard.document",
  "canonicalUrl": "https://blog.nove-b.dev//posts/amazon-cognito-overview",
  "path": "/posts/amazon-cognito-overview",
  "publishedAt": "2025-01-27T00:00:00.000Z",
  "site": "at://did:plc:2atly2y5kfyjcj5zap6pv4wd/site.standard.publication/3mmxeqr2tcb2k",
  "tags": [
    "Cognito",
    "Amazon",
    "認証サービス"
  ],
  "textContent": "業務で使用する可能性があるので、簡単に概念的な部分を調べてみた。\n\nAmazon CognitoにはAWSが提供するユーザー認証サービス\n\ncognitoはコグニートと読み、AWSが提供するユーザー認証サービスのこと。\n\n多様な認証サービス\n\n同様のサービスにFirebase AuthenticationとかAuth0がある。\n\nちなみにAWSの代表的なものだけでも\n\n- AWS Identity and Access Management (IAM)\n- AWS Directory Service\n- AWS Single Sign-On (以下、SSO)\n- Amazon Cognito\n\nなど多くのサービスがある。\n\nそれぞに向き不向きがあるとのことで、生成AI(嘘が含まれている可能性がある)にユースケース等をまとめてもらった。\n\n| 項目                      | AWS SSO                                                                                                                                       | Amazon Cognito                                                                                                                                                  | AWS IAM                                                                                                      | AWS Directory Service                                                                                       |\n| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |\n| 目的                      | 組織内のユーザーに対する認証・認可を一元管理する                                                                                                  | 一般ユーザーに対する認証・認可を提供                                                                                                                                | AWSリソースへのアクセスを制御する                                                                                | マネージド型のActive Directoryサービスを提供し、AWSとADの連携を可能にする                                       |\n| 主な対象                  | 組織内の従業員や社内システム利用者                                                                                                                | 不特定多数の一般ユーザー                                                                                                                                            | AWSアカウントのIAMユーザー、ロール、サービス                                                                     | Active Directoryを使用している企業                                                                              |\n| 主要機能                  | - 複数のAWSアカウントへのSSO<br>- Active Directoryとの連携<br>- 外部アプリケーション(例: Office 365)へのSSO<br>- AWS Organizationsとの統合      | - ユーザープール(ユーザー認証)<br>- IDプール(認可とAWSリソースへのアクセス権限付与)<br>- Cognito Sync(データのデバイス間共有)                                 | - ユーザー、グループ、ロールによるアクセス管理<br>- AWSリソースのポリシーベースのアクセス制御<br>- MFAのサポート | - Microsoft Active Directory (AD) の管理<br>- AWSリソースとADの統合<br>- ドメインコントローラーの提供           |\n| AWS Organizationsとの連携 | マスターアカウントでAWS SSOを有効にすることで、複数アカウントの統合管理が可能                                                                     | 不可                                                                                                                                                                | ポリシーを使用してマルチアカウント環境を管理可能                                                                 | 不可                                                                                                            |\n| Active Directory連携      | AWS Managed Microsoft ADやAzure ADなどの外部ディレクトリサービスと統合可能                                                                        | 不可                                                                                                                                                                | AWS Managed Microsoft ADを使用したアクセス管理が可能                                                             | Active Directoryそのものの管理が可能                                                                            |\n| 認証対象の規模            | 組織内ユーザー向け(数百〜数千の規模)                                                                                                            | 不特定多数(デフォルトで最大20,000,000ユーザー)                                                                                                                    | AWSアカウントに関連するIAMユーザーとロール                                                                       | 組織内のActive Directoryユーザー                                                                                |\n| トークンの種類            | 不適用(SSOによる直接ログイン)                                                                                                                   | - IDトークン(認証)<br>- 一時クレデンシャル(認可)                                                                                                                | 一時クレデンシャル(STSトークン)                                                                                | 不適用                                                                                                          |\n| 主なユースケース          | - 複数AWSアカウントへの一元的アクセス<br>- AWS上のファイルシステム(例: Amazon FSx)へのアクセス<br>- Office 365などの外部アプリケーションへのSSO | - サーバーレスアプリケーションの認証(例: API Gateway)<br>- 認証不要なアプリケーションのAWSリソースアクセス<br>- ソーシャルログイン(Facebook, Google, Appleなど) | - AWSリソースへのアクセス制御<br>- リソースレベルのポリシー適用<br>- セキュリティの詳細な管理                    | - AWSと社内Active Directoryの統合<br>- ADベースの認証でAWSリソースにアクセス<br>- Windowsファイルシステムの管理 |\n| 特徴的な機能              | - シングルサインオンの利便性とセキュリティ向上<br>- AWSコンソールにログインせずにアプリケーション利用可能                                         | - ユーザー登録機能(セルフサービス)<br>- ゲストユーザーへの限定的なアクセス権付与<br>- 複数デバイス間でのデータ同期                                                | - ポリシーベースで細かいアクセス制御が可能<br>- AWS CLIやSDKでの柔軟な認証管理                                   | - ADサービスのマネージド運用<br>- AWSリソースとの完全統合                                                       |\n\nAmazon Cognitoと他サービスの違い\n\n1. 対象ユーザーが一般ユーザー向け\n2. ソーシャルログインとの連携\n3. ユーザープールとIDプールの役割分担\n\n- Cognitoは認証(ユーザープール)と認可(IDプール)を明確に分けている\n- ユーザープール: アプリケーションのユーザーを認証し、IDトークンを発行。\n- IDプール: 認証済みのユーザーやゲストにAWSリソースのアクセス権を付与するための一時クレデンシャルを発行。\n\n4. 大規模ユーザー向け設計\n5. デバイス間のデータ同期\n6. 認証を必要としないアクセスのサポート\n7. エンドユーザー向けのUIカスタマイズ\n\nAmazon\nCognitoは、外部ユーザー認証を中心に、ソーシャルログインや大規模ユーザー管理、デバイス間のデータ同期など、アプリケーションの開発者にとって必要な機能を幅広くサポートしている。\n\nちなみに認証とは、その人が誰であるかを判別すること。認可とは、その人が何を許可されているかを判別すること。\n\n参考になりそうなサイトとかをまとめてみた\n\n- https://aws.amazon.com/jp/cognito/\n- https://d1.awsstatic.com/webinars/jp/pdf/services/20200630_AWS_BlackBelt_Amazon%20Cognito.pdf\n- https://dev.classmethod.jp/articles/krsk-amazon-cognito-20250120/\n- https://techblog.insightedge.jp/entry/cognito-auth\n- https://dev.classmethod.jp/articles/get-started-with-amazon-cognito-now-1/\n- https://zenn.dev/toccasystems/articles/aws-cognito-trial",
  "title": "Amazon Cognitoについて調べてみた"
}