Amazon Cognito とは - Amazon Cognito

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon Cognito とは

Amazon Cognito はウェブアプリとモバイルアプリ用のアイデンティティプラットフォームです。これは、ユーザーディレクトリ、認証サーバー、OAuth 2.0 アクセストークンと AWS 認証情報の承認サービスです。Amazon Cognito を使用すると、組み込みのユーザーディレクトリ、エンタープライズディレクトリ、Google や Facebook などのコンシューマー ID プロバイダーからユーザーを認証および承認できます。

その後に続く 2 つのコンポーネントが Amazon Cognito を構成します。これらは、ユーザーのアクセスニーズに応じて、独立して動作することも、連携して動作することもできます。

ユーザープール

アプリまたは API のユーザーを認証および承認する場合は、ユーザープールを作成します。ユーザープールは、セルフサービスと管理者主導の両方によるユーザー作成、管理、認証を行うユーザーディレクトリです。ユーザープールは、独立したディレクトリや OIDC ID プロバイダー (IdP) でも、従業員や顧客のアイデンティティを提供するサードパーティプロバイダーの中間サービスプロバイダー (SP) でもかまいません。ユーザープールの SAML 2.0 および OIDC IdP における組織のワークフォースアイデンティティに対して、アプリでシングルサインオン (SSO) を提供できます。また、パブリック OAuth 2.0 アイデンティティストア (Amazon、Google、Apple、および Facebook) 内の組織のカスタマーアイデンティティに対して、アプリで SSO を提供することもできます。カスタマー ID およびアクセス管理 (CIAM) の詳細については、「CIAM とは何ですか?」を参照してください。

ユーザープールはアイデンティティプールとの統合を必要としません。ユーザープールから、認証された JSON ウェブトークン (JWT) をアプリ、ウェブサーバー、または API に直接発行できます。

アイデンティティプール

認証されたユーザーまたは匿名ユーザーに AWS リソースへのアクセスを許可する場合は、Amazon Cognito アイデンティティプールを設定します。アイデンティティプールは、ユーザーにリソースを提供するためのアプリ用の AWS 認証情報を発行します。ユーザープールや SAML 2.0 サービスなど、信頼できる ID プロバイダーでユーザーを認証できます。また、オプションでゲストユーザーに認証情報を発行することもできます。アイデンティティプールは、ロールベースと属性ベースのアクセス制御の両方を使用して、AWS リソースへのアクセスに対するユーザー権限を管理します。

アイデンティティプールはユーザープールとの統合を必要としません。アイデンティティプールは、ワークフォースとコンシューマーの両方の ID プロバイダーからの認証済みクレームを直接受け入れることができます。

Amazon Cognito のユーザープールとアイデンティティプールの併用

このトピックの最初の図では、Amazon Cognito を使用してユーザーを認証し、ユーザーにアクセス権を付与します。AWS のサービス

  1. アプリユーザーはユーザープールを介してサインインし、OAuth 2.0 トークンを受け取ります。

  2. アプリは、ユーザープールトークンとアイデンティティプールを AWS API と AWS Command Line Interface (AWS CLI)  で使用できる一時的な AWS 認証情報と交換します。

  3. アプリケーションは認証情報セッションをユーザーに割り当て、Amazon S3 や Amazon DynamoDB など AWS のサービス へ承認されたアクセスを提供します。

アイデンティティプールとユーザープールを使用するその他の例については、「Amazon Cognito の一般的なシナリオ」を参照してください。

Amazon Cognito では、責任分担モデルによるクラウド義務のセキュリティは、SOC 1~3、PCI DSS、ISO 27001 に準拠し、HIPAA-BAA に対応しています。Amazon Cognito では、SOC1~3、ISO 27001、HIPAA-BAA に準拠し、PCI DSS に準拠し、PCI DSS に準拠し、Amazon Cognito でクラウド内のセキュリティを設計できます。詳細については、[AWS 対象範囲内のサービス]を参照してください。リージョンデータに関する考慮事項も参照してください。

Amazon Cognito の機能

ユーザープール

Amazon Cognito ユーザープールは、ユーザーディレクトリです。ユーザープールを使用することで、ユーザーはウェブまたはモバイルアプリに Amazon Cognito 経由でサインインする、またはサードパーティー IdP 経由でフェデレートすることができます。フェデレーションとローカルユーザーには、ユーザープールにユーザープロファイルがあります。

ローカルユーザーとは、ユーザーがユーザープールにサインアップした、または直接作成したユーザーです。これらのユーザープロファイルは、AWS Management Console、AWS SDK、または AWS Command Line Interface (AWS CLI) で管理およびカスタマイズできます。

Amazon Cognito ユーザープールは、サードパーティー IdPs からのトークンとアサーションを受け取り、ユーザー属性を JWT に収集してアプリに発行します。アプリを 1 つの JWT セットで標準化できます。一方、Amazon Cognito が IdP とのインタラクションを処理し、IdPs のクレームを中央トークン形式にマッピングします。

Amazon Cognito ユーザープールは、スタンドアロンIdP である可能性があります。Amazon Cognito は OpenID Connect (OIDC) 標準に基づいて、認証と承認のための JWT を生成しています。ローカルユーザーをログインさせると、ユーザープールがそれらのユーザーに対して権限を持つことになります。ローカルユーザーを認証すると、次の機能にアクセスできます。

  • Amazon Cognito ユーザープール API を呼び出してユーザーを認証、承認、管理する独自のウェブフロントエンドを実装します。

  • ユーザーに多要素認証 (MFA) を設定します。Amazon Cognito は、タイムベースドワンタイムパスワード (TOTP) と SMS メッセージ MFA をサポートしています。

  • 悪意のある管理下にあるユーザーアカウントからのアクセスから保護します。

  • 独自のカスタムマルチステップ認証フローを作成します。

  • 別のディレクトリでユーザーを検索し、Amazon Cognito に移行します。

Amazon Cognito ユーザープールは、IdP のサービスプロバイダー (SP) とアプリの IdPs という二重の役割を果たすこともできます。Amazon Cognito ユーザープールは、Facebook や Google などのコンシューマー IdPs や、Okta やアクティブディレクトリフェデレーションサービス (ADFS) などのワークフォース IdPs に接続できます。

Amazon Cognito ユーザープールが発行する OAuth 2.0 トークンと OpenID Connect (OIDC) トークンを使用すると、次のことができるようになります。

  • ユーザーを認証し、ユーザープロファイルの設定に必要な情報を提供する ID トークンをアプリ内で受け入れる

  • ユーザーの API 呼び出しを許可する OIDC スコープを使用して、API でアクセストークンを受け入れます。

  • Amazon Cognito アイデンティティプールから AWS 認証情報を取得します。

Amazon Cognito ユーザープールの機能
機能 説明
OIDC IdP Issue ID tokens to authenticate users
Authorization server Issue access tokens to authorize user access to APIs
SAML 2.0 SP Transform SAML assertions into ID and access tokens
OIDC SP Transform OIDC tokens into ID and access tokens
OAuth 2.0 SP Transform ID tokens from Apple, Facebook, Amazon, or Google to your own ID and access tokens
Authentication frontend service Sign up, manage, and authenticate users with the hosted UI
API support for your own UI Create, manage and authenticate users through API requests in supported AWS SDKs¹
MFA Use SMS messages, TOTPs, or your user's device as an additional authentication factor¹
Security monitoring & response Secure against malicious activity and insecure passwords¹
Customize authentication flows Build your own authentication mechanism, or add custom steps to existing flows¹
Groups Create logical groupings of users, and a hierarchy of IAM role claims when you pass tokens to identity pools
Customize ID tokens Customize your ID tokens with new, modified, and suppressed claims
Customize user attributes Assign values to user attributes and add your own custom attributes

¹ この機能はローカルユーザーのみが使用できます。

ユーザープールの詳細については、「ユーザープールの開始方法」とAmazon Cognito ユーザープール API リファレンスを参照してください。

アイデンティティプール

アイデンティティプールは、ユーザーまたはゲストに割り当てて一時的な AWS 認証情報を受け取ることを許可する一意の識別子 (ID) の集まりです。SAML 2.0、OpenID Connect (OIDC)、または OAuth 2.0 ソーシャル ID プロバイダー (IdP) からの信頼できるクレームという形でアイデンティティプールに認証証明書を提示すると、ユーザーをアイデンティティプールの ID に関連付けます。アイデンティティプールがアイデンティティ用に作成するトークンは、AWS Security Token Service (AWS STS) から一時的なセッション認証情報を取得できます。

認証されたアイデンティティを補完するために、IdP 認証なしで AWS  アクセスを許可するようにアイデンティティプールを設定することもできます。独自の認証証明を提供することも、認証なしで提供することもできます。一時的な AWS 認証情報をリクエストしたすべてのアプリユーザーに、認証されていないアイデンティティで付与できます。アイデンティティプールでは、開発者が認証したアイデンティティを使用して、独自のカスタムスキーマに基づいてクレームを受け付けて認証情報を発行することもできます。

Amazon Cognito アイデンティティプールでは、AWS アカウント 内の IAM ポリシーと統合する方法が 2 つあります。これら 2 つの機能は一緒に使用することも、個別に使用することもできます。

ロールベースアクセスコントロール

ユーザーがアイデンティティプールにクレームを渡すと、Amazon Cognito はリクエストする IAM ロールを選択します。ロールの権限をニーズに合わせてカスタマイズするには、各ロールに IAM ポリシーを適用します。たとえば、ユーザーがマーケティング部門に所属していることを証明すると、マーケティング部門のアクセスニーズに合わせたポリシーが設定されたロールの認証情報を受け取ります。Amazon Cognito では、デフォルトロール、ユーザーのクレームをクエリするルールに基づくロール、またはユーザープール内のユーザーのグループメンバーシップに基づくロールをリクエストできます。IAM がユーザーのアイデンティティプールのみを信頼して一時的なセッションを生成するようにロールの信頼ポリシーを設定することもできます。

アクセスコントロールの属性

アイデンティティプールはユーザーのクレームから属性を読み取り、ユーザーの一時セッションのプリンシパルタグにマッピングします。次に、アイデンティティプールからセッションタグを伝達する IAM プリンシパルに基づいてリソースへのアクセスを許可または拒否するように IAM リソースベースのポリシーを設定できます。たとえば、ユーザーがマーケティング部門に所属していることを証明したら、セッション Department: marketing に AWS STS タグを付けます。Amazon S3 バケットでは、Department タグの marketing の値が必要な aws: PrincipalTag 条件に基づく読み取りオペレーションが許可されます。

Amazon Cognito アイデンティティプールの機能
機能 説明
Amazon Cognito user pool SP Exchange an ID token from your user pool for web identity credentials from AWS STS
SAML 2.0 SP Exchange SAML assertions for web identity credentials from AWS STS
OIDC SP Exchange OIDC tokens for web identity credentials from AWS STS
OAuth 2.0 SP Exchange OAuth tokens from Amazon, Facebook, Google, Apple, and Twitter for web identity credentials from AWS STS
Custom SP With AWS credentials, exchange claims in any format for web identity credentials from AWS STS
Unauthenticated access Issue limited-access web identity credentials from AWS STS without authentication
Role-based access control Choose an IAM role for your authenticated user based on their claims, and configure your roles to only be assumed in the context of your identity pool
Attribute-based access control Convert claims into principal tags for your AWS STS temporary session, and use IAM policies to filter resource access based on principal tags

アイデンティティプールの詳細については、「Amazon Cognito ID プール (フェデレーティッド ID) の使用開始方法」と「Amazon Cognito ID プール API リファレンス」を参照してください。

Amazon Cognito ユーザープールとアイデンティティプールの比較

機能 説明 ユーザープール ID プール
OIDC IdP Issue OIDC ID tokens to authenticate app users
API authorization server Issue access tokens to authorize user access to APIs, databases, and other resources that accept OAuth 2.0 authorization scopes
IAM web identity authorization server Generate tokens that you can exchange with AWS STS for temporary AWS credentials
SAML 2.0 SP & OIDC IdP Issue customized OIDC tokens based on claims from a SAML 2.0 IdP
OIDC SP & OIDC IdP Issue customized OIDC tokens based on claims from an OIDC IdP
OAuth 2.0 SP & OIDC IdP Issue customized OIDC tokens based on scopes from OAuth 2.0 social providers like Apple and Google
SAML 2.0 SP & credentials broker Issue temporary AWS credentials based on claims from a SAML 2.0 IdP
OIDC SP & credentials broker Issue temporary AWS credentials based on claims from an OIDC IdP
OAuth 2.0 SP & credentials broker Issue temporary AWS credentials based on scopes from OAuth 2.0 social providers like Apple and Google
Amazon Cognito user pool SP & credentials broker Issue temporary AWS credentials based on OIDC claims from an Amazon Cognito user pool
Custom SP & credentials broker Issue temporary AWS credentials based on developer IAM authorization
Authentication frontend service Sign up, manage, and authenticate users with the hosted UI
API support for your own authentication UI Create, manage and authenticate users through API requests in supported AWS SDKs¹
MFA Use SMS messages, TOTPs, or your user's device as an additional authentication factor¹
Security monitoring & response Protect against malicious activity and insecure passwords¹
Customize authentication flows Build your own authentication mechanism, or add custom steps to existing flows¹
Groups Create logical groupings of users, and a hierarchy of IAM role claims when you pass tokens to identity pools
Customize ID tokens Customize your ID tokens with new, modified, and suppressed claims
AWS WAF web ACLs Monitor and control requests to your authentication environment with AWS WAF
Customize user attributes Assign values to user attributes and add your own custom attributes
Unauthenticated access Issue limited-access web identity credentials from AWS STS without authentication
Role-based access control Choose an IAM role for your authenticated user based on their claims, and configure your roles to only be assumed in the context of your identity pool
Attribute-based access control Transform user claims into principal tags for your AWS STS temporary session, and use IAM policies to filter resource access based on principal tags

¹ この機能はローカルユーザーのみが使用できます。

Amazon Cognito の使用開始方法

タスクを停止するガイドとタスクを開始する場所については、「Amazon Cognito の使用開始方法」を参照してください。

動画、記事、ドキュメント、およびサンプルアプリケーションについては、Amazon Cognito デベロッパーリソースを参照してください。

Amazon Cognito を使用するには、AWS アカウントが必要です。詳細については、「Amazon Cognito コンソールの使用」を参照してください。

リージョナルな可用性

Amazon Cognito は世界中にある複数の AWS リージョンで利用できます。各リージョンで、Amazon Cognito は複数のアベイラビリティーゾーンに分散されています。これらのアベイラビリティーゾーンは物理的に相互に分離されていますが、低レイテンシーで高スループットの冗長性に優れたプライベートネットワーク接続で統合されています。これらのアベイラビリティーゾーンは、AWS が、レイテンシーを最小限に抑えながら、きわめて高レベルの可用性と冗長性で Amazon Cognito などのサービスを提供することを可能にします。

現在 Amazon Cognito を利用できるすべてのリージョンのリストについては、「Amazon Web Services 全般のリファレンス」の「AWS のリージョンとエンドポイント」を参照してください。各リージョンで利用できるアベイラビリティーゾーンの数の詳細については、「AWS グローバルインフラストラクチャ」を参照してください。

Amazon Cognito の料金

Amazon Cognitoの料金については、「Amazon Cognito の料金」を参照してください。