nove-b

nove-b/Amazon Cognitoについて調べてみた

Created Mon, 27 Jan 2025 00:00:00 +0000 Modified Wed, 12 Feb 2025 14:44:57 +0000

業務で使用する可能性があるので、簡単に概念的な部分を調べてみた。

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 SSOAmazon CognitoAWS IAMAWS 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と他サービスの違い

  1. 対象ユーザーが一般ユーザー向け
  2. ソーシャルログインとの連携
  3. ユーザープールとIDプールの役割分担
  • Cognitoは認証(ユーザープール)と認可(IDプール)を明確に分けている
  • ユーザープール: アプリケーションのユーザーを認証し、IDトークンを発行。
  • IDプール: 認証済みのユーザーやゲストにAWSリソースのアクセス権を付与するための一時クレデンシャルを発行。
  1. 大規模ユーザー向け設計
  2. デバイス間のデータ同期
  3. 認証を必要としないアクセスのサポート
  4. エンドユーザー向けのUIカスタマイズ

Amazon Cognitoは、外部ユーザー認証を中心に、ソーシャルログインや大規模ユーザー管理、デバイス間のデータ同期など、アプリケーションの開発者にとって必要な機能を幅広くサポートしている。

ちなみに認証とは、その人が誰であるかを判別すること。 認可とは、その人が何を許可されているかを判別すること。

参考になりそうなサイトとかをまとめてみた