Amazon Cognito とは - Amazon Cognito

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

Amazon Cognito とは

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

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

ユーザープール

Amazon Cognito user pool authentication flow with app, identity provider, and API/Database.

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

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

アイデンティティプール

Diagram showing Amazon Cognito federated identities flow between app, identity pool, provider, and STS.

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

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

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

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

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

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

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

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

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

Amazon Cognito の機能

ユーザープール

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

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

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

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

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

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

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

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

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

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

Amazon Cognito ユーザープールが発行する OAuth2.0 トークンと OpenID Connect (OIDC) トークンを使用すると、

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

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

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

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

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

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

アイデンティティプール

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

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

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

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

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

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

アイデンティティプールはユーザーのクレームから属性を読み取り、ユーザーの一時セッションのプリンシパルタグにマッピングします。その後、ID プールからセッションタグを渡す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ポリシーを使用してプリンシパルタグに基づいてリソースアクセスをフィルタリングする

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

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

機能 説明 ユーザープール ID プール
OIDC IdP アプリユーザーを認証するための OIDC ID トークンを発行する
API 認証サーバー アクセストークンを発行して、2.0 認証スコープを受け入れる OAuth APIs、データベース、およびその他のリソースへのユーザーアクセスを許可する
IAM ウェブ ID 認証サーバー 一時的な AWS 認証情報 AWS STS と交換できるトークンを生成する
SAML 2.0 SP と OIDC IdP 2.0 IdP SAML からのクレームに基づいてカスタマイズされたOIDCトークンを発行する
OIDC SP と OIDC IdP IdP OIDC からのクレームに基づいてカスタマイズされたOIDCトークンを発行する
OAuth 2.0 SP と OIDC IdP Apple や Google などの 2.0 OAuth ソーシャルプロバイダーのスコープに基づいてカスタマイズされたOIDCトークンを発行する
SAML 2.0 SP と認証情報ブローカー 2.0 IdP SAML からのクレームに基づいて一時的な AWS 認証情報を発行する
OIDC SP と認証情報ブローカー IdP OIDC からのクレームに基づいて一時的な AWS 認証情報を発行する
OAuth 2.0 SP および認証情報ブローカー Apple や Google などの 2.0 OAuth ソーシャルプロバイダーの範囲に基づいて一時的な AWS 認証情報を発行する
Amazon Cognito ユーザープール SP と認証情報ブローカー Amazon Cognito ユーザープールからのOIDCクレームに基づいて一時的な AWS 認証情報を発行する
カスタム SP と認証情報ブローカー デベロッパーIAMの認可に基づいて一時的な AWS 認証情報を発行する
認証フロントエンドサービス ホストされた UI でユーザーをサインアップ、管理、認証する
API 独自の認証 UI のサポート サポートされている AWS SDKs1 の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 の料金」を参照してください。