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