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 およびユーザープール IdPs を持つ OIDC の組織のワークフォース ID に対して、アプリケーションで Single Sign-On (SSO) を提供できます。また、パブリック OAuth 2.0 アイデンティティストア (Amazon、Google、Apple、および Facebook) 内の組織のカスタマーアイデンティティに対して、アプリで SSO を提供することもできます。カスタマー ID およびアクセス管理 (CIAM) の詳細については、「CIAM とは何ですか?」を参照してください。

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

アイデンティティプール

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

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

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

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

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

  2. アプリケーションは、ユーザープールトークンを ID プールと交換して、 AWS APIs および AWS Command Line Interface () で使用できる一時的な AWS 認証情報と交換しますAWS CLI。

  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 SDK AWS Management Console、または AWS Command Line Interface () で管理およびカスタマイズできますAWS CLI。

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

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

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

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

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

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

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

Amazon Cognito ユーザープールは、 へのサービスプロバイダー (SP) としてのデュアルロールと IdPs、アプリへの IdP を果たすこともできます。Amazon Cognito ユーザープールは、Facebook や Google IdPs などのコンシューマー、または Okta や Active Directory フェデレーションサービス (ADFS) IdPs などのワークフォースに接続できます。

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

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

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

  • Amazon Cognito ID プールから AWS 認証情報を取得します。

Amazon Cognito ユーザープールの機能
機能 説明
OIDC IdP ユーザーを認証するための ID トークンを発行する
認証サーバー API へのユーザーアクセスを許可するアクセスAPIs
SAML 2.0 SP SAML アサーションを ID トークンとアクセストークンに変換する
OIDC SP OIDC トークンを ID トークンとアクセストークンに変換する
OAuth 2.0 SP Apple、Facebook、Amazon、Google の ID トークンを独自の ID トークンとアクセストークンに変換する
認証フロントエンドサービス ホストされた UI でユーザーをサインアップ、管理、認証する
独自の UI の API サポート サポートされている AWS SDKs 1 で API リクエストを使用してユーザーを作成、管理、認証する
MFA 追加の認証要素として SMS メッセージ、TOTPs、またはユーザーのデバイスを使用する1
セキュリティのモニタリングと対応 悪意のあるアクティビティや安全でないパスワードからの保護1
認証フローをカスタマイズする 独自の認証メカニズムを構築するか、既存のフローにカスタムステップを追加する1
グループ トークンを ID プールに渡すときに、ユーザーの論理グループと IAM ロールクレームの階層を作成する
ID トークンをカスタマイズする 新規、変更、抑制されたクレームで ID トークンをカスタマイズする
ユーザー属性をカスタマイズする ユーザー属性に値を割り当て、独自のカスタム属性を追加する

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

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

アイデンティティプール

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

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

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

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

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

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

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

Amazon Cognito アイデンティティプールの機能
機能 説明
Amazon Cognito ユーザープール SP ユーザープールの ID トークンを のウェブ ID 認証情報と交換する AWS STS
SAML 2.0 SP からのウェブ ID 認証情報に SAML アサーションを交換する AWS STS
OIDC SP OIDC トークンを からのウェブ ID 認証情報と交換する AWS STS
OAuth 2.0 SP Amazon、Facebook、Google、Apple、および Twitter の OAuth トークンを のウェブ ID 認証情報と交換する AWS STS
カスタム SP AWS 認証情報を使用して、任意の形式のクレームを のウェブ ID 認証情報と交換します。 AWS STS
非認証アクセス 認証なしで から AWS STS アクセスが制限されたウェブ ID 認証情報を発行する
ロールベースアクセスコントロール クレームに基づいて認証されたユーザーの IAM ロールを選択し、ID プールのコンテキストでのみ引き受けるようにロールを設定します。
単一ドメイン内の属性ベースの クレームを AWS STS 一時セッションのプリンシパルタグに変換し、IAM ポリシーを使用してプリンシパルタグに基づいてリソースアクセスをフィルタリングする

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

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

機能 説明 ユーザープール ID プール
OIDC IdP OIDC ID トークンを発行してアプリユーザーを認証する
API 認証サーバー OAuth 2.0 APIs、データベース、その他のリソースへのユーザーアクセスを許可するアクセストークンを発行する
IAM ウェブ ID 認証サーバー 一時的な AWS 認証情報 AWS STS と交換できるトークンを生成する
SAML 2.0 SP と OIDC IdP SAML 2.0 IdP からのクレームに基づいてカスタマイズされた OIDC トークンを発行する
OIDC SP と OIDC IdP OIDC IdP からのクレームに基づいてカスタマイズされた OIDC トークンを発行する
OAuth 2.0 SP と OIDC IdP Apple や Google などの OAuth 2.0 ソーシャルプロバイダーのスコープに基づいてカスタマイズされた OIDC トークンを発行する
SAML 2.0 SP および認証情報ブローカー SAML 2.0 IdP からのクレームに基づいて一時的な AWS 認証情報を発行する
OIDC SP と認証情報ブローカー OIDC IdP からのクレームに基づいて一時的な AWS 認証情報を発行する
OAuth 2.0 SP および認証情報ブローカー Apple や Google などの OAuth 2.0 ソーシャルプロバイダーのスコープに基づいて一時的な AWS 認証情報を発行する
Amazon Cognito ユーザープール SP と認証情報ブローカー Amazon Cognito ユーザープールからの OIDC クレームに基づいて一時的な AWS 認証情報を発行する
カスタム SP および認証情報ブローカー デベロッパーの IAM 認証に基づいて一時的な AWS 認証情報を発行する
認証フロントエンドサービス ホストされた UI でユーザーをサインアップ、管理、認証する
独自の認証 UI の API サポート サポートされている AWS SDKs 1 で API リクエストを使用してユーザーを作成、管理、認証する
MFA 追加の認証要素として SMS メッセージ、TOTPs、またはユーザーのデバイスを使用する1
セキュリティのモニタリングと対応 悪意のあるアクティビティや安全でないパスワードからの保護1
認証フローをカスタマイズする 独自の認証メカニズムを構築するか、既存のフローにカスタムステップを追加する1
グループ トークンを ID プールに渡すときに、ユーザーの論理グループと IAM ロールクレームの階層を作成する
ID トークンをカスタマイズする 新規、変更、抑制されたクレームで ID トークンをカスタマイズする
AWS WAF ウェブ ACLs による認証環境へのリクエストのモニタリングと制御 AWS WAF
ユーザー属性をカスタマイズする ユーザー属性に値を割り当て、独自のカスタム属性を追加する
非認証アクセス 認証なしで から AWS STS アクセスが制限されたウェブ ID 認証情報を発行する
ロールベースアクセスコントロール クレームに基づいて認証されたユーザーの IAM ロールを選択し、ID プールのコンテキストでのみ引き受けるようにロールを設定します。
単一ドメイン内の属性ベースの ユーザークレームを一時セッションのプリンシパルタグに変換し、IAM ポリシーを使用してプリンシパルタグに基づいてリソースアクセスをフィルタリングする AWS STS

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

Amazon Cognito の使用開始方法

ユーザープールアプリケーションの例については、「」を参照してくださいユーザープールの開始方法

ID プールの概要については、「」を参照してくださいAmazon Cognito ID プールの開始方法

ユーザープールと ID プールを使用したガイド付きセットアップエクスペリエンスへのリンクについては、「」を参照してくださいAmazon Cognito のガイド付きセットアップオプション

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

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

リージョナルな可用性

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

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

Amazon Cognito の料金

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