{
"$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について調べてみた"
}