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 およびユーザープールOIDC IdPs を使用して、組織のワークフォース ID のアプリケーションにシングルサインオン (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 プールは、ユーザーにリソースを提供するためにアプリの 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 では、 責任共有モデルのクラウド義務のセキュリティは SOC 1-3、、27001 PCI DSS 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」を参照してください

アイデンティティプール

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

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

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

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

ユーザーが ID プールにクレームを渡すと、Amazon Cognito はリクエストするIAMロールを選択します。ロールのアクセス許可をニーズに合わせてカスタマイズするには、各ロールにIAMポリシーを適用します。たとえば、ユーザーがマーケティング部門に所属していることを証明すると、マーケティング部門のアクセスニーズに合わせたポリシーが設定されたロールの認証情報を受け取ります。Amazon Cognito では、デフォルトロール、ユーザーのクレームをクエリするルールに基づくロール、またはユーザープール内のユーザーのグループメンバーシップに基づくロールをリクエストできます。が ID プールのみを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 からウェブ ID 認証情報にOIDCトークンを交換する AWS STS
OAuth 2.0 SP Amazon、Facebook、Google、Apple、および Twitter からのOAuthトークンを からのウェブ ID 認証情報と交換する AWS STS
カスタム SP AWS 認証情報を使用して、任意の形式のクレームを からのウェブ ID 認証情報と交換します。 AWS STS
非認証アクセス 認証なしで から AWS STS アクセス制限されたウェブ ID 認証情報を発行する
ロールベースアクセスコントロール クレームに基づいて認証されたユーザーのIAMロールを選択し、アイデンティティプールのコンテキストでのみ引き受けるようにロールを設定します。
単一ドメイン内の属性ベースの クレームを AWS STS 一時セッションのプリンシパルタグに変換し、IAMポリシーを使用してプリンシパルタグに基づいてリソースアクセスをフィルタリングする

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

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

機能 説明 ユーザープール ID プール
OIDC IdP アプリケーションユーザーを認証するための OIDC ID トークンを発行する
API 認証サーバー アクセストークンを発行して、OAuth2.0 認証スコープを受け入れる 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ロールを選択し、アイデンティティプールのコンテキストでのみ引き受けるようにロールを設定します。
単一ドメイン内の属性ベースの ユーザークレームを一時セッションのプリンシパルタグに変換し、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 が現在どの でも利用できるかどうかを確認するには AWS リージョン、AWS 「リージョン別のサービス」を参照してください。

リージョンAPI別サービスエンドポイントの詳細については、「」のAWS 「リージョンとエンドポイント」を参照してくださいAmazon Web Services 全般のリファレンス

各リージョンで利用できるアベイラビリティーゾーンの数の詳細については、「AWS グローバルインフラストラクチャ」を参照してください。

Amazon Cognito の料金

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