Amazon Cognito user pools
Amazon Cognito ユーザープールは、ウェブおよびモバイルアプリケーションの認証と認可のためのユーザーディレクトリです。アプリケーションの観点から見ると、Amazon Cognito ユーザープールは OpenID Connect (OIDC) ID プロバイダー (OIDC) です。ユーザープールには、セキュリティ、ID フェデレーション、アプリ統合、ユーザーエクスペリエンスのカスタマイズなどの機能が何層も追加されます。
例えば、ユーザーのセッションが信頼できるソースからのものであることを確認できます。Amazon Cognito ディレクトリを外部 ID プロバイダーと組み合わせることができます。お好みの AWS SDK を使用して、アプリケーションに最適な API 認証モデルを選択できます。また、Amazon Cognito のデフォルトの動作を変更またはオーバーホールする AWS Lambda 関数を追加することもできます。
トピック
機能
Amazon Cognito ユーザープには次の機能があります。
サインアップ
Amazon Cognito ユーザープールには、ユーザープールにユーザープロファイルを追加するためのユーザー主導型、管理者主導型、およびプログラムによる方法があります。Amazon Cognito ユーザープールは、以下のサインアップモデルをサポートしています。アプリでは、これらのモデルを任意に組み合わせて、アプリで使用できます。
重要
ユーザープールでユーザーサインアップを有効にすると、インターネット上のすべてのユーザーがアカウントにサインアップしてアプリケーションにサインインできるようになります。アプリケーションをパブリックサインアップで開く場合を除き、ユーザープールで自己登録を有効にしないでください。この設定を変更するには、ユーザープールコンソールの [認証] の下にある [サインアップ] メニューで [セルフサービスのサインアップ] を更新するか、CreateUserPool または UpdateUserPool API リクエストで AllowAdminCreateUserOnly の値を更新します。
ユーザープールに設定できるセキュリティ機能については、「Amazon Cognito ユーザープールのセキュリティ機能を使用する」を参照してください。
-
ユーザーはアプリに情報を入力し、ユーザープールにネイティブなユーザープロファイルを作成できます。API サインアップオペレーションを呼び出して、ユーザープールにユーザーを登録できます。これらのサインアップ操作は誰にでも公開することも、クライアントシークレットまたは AWS 認証情報を使用して認可することもできます。
-
ユーザーを Amazon Cognito への情報の受け渡しを許可できるサードパーティーの IdP にリダイレクトできます。Amazon Cognito は、OIDC ID トークン、OAuth 2.0
userInfoデータ、および SAML 2.0 アサーションを処理して、ユーザープールのユーザープロファイルに入れます。Amazon Cognito に受信させる属性は、属性マッピングルールに基づいて制御します。 -
パブリックサインアップやフェデレーションサインアップをスキップして、独自のデータソースとスキーマに基づいてユーザーを作成できます。Amazon Cognito コンソールまたは API でユーザーを直接追加できます。CSV ファイルからのユーザーをインポートします。既存のディレクトリで新しいユーザーを検索し、既存のデータからユーザープロファイルを入力する just-in-time AWS Lambda 関数を実行します。
ユーザーがサインアップしたら、Amazon Cognito がアクセストークンと ID トークンにリストするグループにユーザーを追加できます。ID トークンをアイデンティティプールに渡すときに、ユーザープールグループを IAM ロールにリンクすることもできます。
関連トピック
サインイン
Amazon Cognito は、スタンドアロンのユーザーディレクトリおよび ID プロバイダー (IdP) として使用し、アプリケーションの ID プロバイダー (IdP) として使用できます。ユーザーは、Amazon Cognito がホストするマネージドログインページを使用するか、Amazon Cognito ユーザープール API を介してカスタム構築されたユーザー認証サービスを使用してサインインできます。カスタム構築されたフロントエンドの背後にあるアプリケーション層は、正当なリクエストであることを確認する複数の方法のいずれかを使用して、リクエストをバックエンドで承認できます。
ユーザーは、ユーザー名とパスワード、パスキー、E メールおよび SMS メッセージのワンタイムパスワードを設定してサインインできます。外部ユーザーディレクトリとの統合サインイン、サインイン後の多要素認証 (MFA)、記憶されているデバイスの信頼、独自に設計したカスタム認証フローを提供できます。
外部ディレクトリ (オプションで Amazon Cognito に組み込まれたユーザーディレクトリと組み合わせる) を使用してユーザーをサインインさせるには、次の統合を追加できます。
-
OAuth 2.0 ソーシャルサインインを使用してサインインし、顧客ユーザーデータをインポートします。Amazon Cognito は、OAuth 2.0 による Google、Facebook、Amazon、および Apple へのサインインをサポートしています。
-
SAML および OIDC サインインを使用してサインインし、職場および学校のユーザーデータをインポートします。Amazon Cognito は、任意の SAMID Connect (OIDC) ID プロバイダー (IdP) からのクレームを受け入れるように設定することもできます。
-
外部ユーザープロファイルをネイティブユーザープロファイルにリンクします。リンクされたユーザーは、サードパーティーのユーザー ID を使用してサインインし、組み込みディレクトリのユーザーに割り当てたアクセス権を受け取ることができます。
マシンツーマシン認可
一部のセッションは、人間からマシンへのインタラクションではありません。自動プロセスによって API へのリクエストを承認できるサービスアカウントが必要になる場合があります。OAuth 2.0 スコープを使用して Machine to Machine 認証用のアクセストークンを生成するには、クライアント認証情報の付与
マネージドログイン
ユーザーインターフェイスを構築しない場合は、カスタマイズしたマネージドログインパージをユーザーに提供できます。マネージドログインとは、サインアップ、サインイン、多要素認証 (MFA)、パスワードリセットのための一連のウェブページです。マネージドログインは、既存のドメインに追加できます。または、AWS サブドメインでプレフィックス識別子を使用できます。
セキュリティ
ローカルユーザーは、SMS メッセージや Eメールメッセージのコード、または多要素認証 (MFA) コードを生成するアプリケーションを使用して、追加の認証要素を提供できます。アプリケーション内で MFA を設定および処理するメカニズムを構築することも、マネージドログインで MFA を管理することも可能です。Amazon Cognito ユーザープールは、ユーザーが信頼できるデバイスからサインインするときに MFA をバイパスできます。
最初にユーザーに MFA を要求しない場合は、条件付きで要求できます。アダプティブ認証を使用すると、Amazon Cognito は悪意のある可能性があるアクティビティを検出し、ユーザーに MFA の設定を要求したり、サインインをブロックしたりすることができます。
ユーザープールへのネットワークトラフィックが悪質なものである可能性がある場合、これをモニタリングして AWS WAF ウェブ ACL で対処できます。
カスタマーユーザーエクスペリエンス
ユーザーのサインアップ、サインイン、またはプロファイル更新のほとんどの段階で、Amazon Cognito がリクエストを処理する方法をカスタマイズできます。Lambda トリガーを使用すると、ID トークンを変更したり、カスタム条件に基づいてサインアップリクエストを拒否したりできます。自分のカスタム認証フローを作成できます。
カスタム CSS とロゴをアップロードして、マネージドログインの外観と操作感をユーザーが使い慣れたものにすることができます。
モニタリングと分析
Amazon Cognito ユーザープールは、マネージドログインへのリクエストなどの API リクエストを AWS CloudTrail に記録します。パフォーマンスメトリクスを Amazon CloudWatch Logs で確認し、Lambda トリガーを使用してカスタムログを CloudWatch にプッシュできます。また、E メールメッセージと SMS メッセージの配信状況をモニタリングし、Service Quotas コンソールで API リクエストの量をモニタリングできます。
プラス機能プランでは、自動学習テクノロジーでユーザーの認証試行をモニタリングして漏えいの兆候がないか確認し、リスクを即座に修復できます。また、これらの高度なセキュリティ機能では、ユーザーアクティビティをユーザープールに記録します。必要に応じて Amazon S3、CloudWatch Logs、または Amazon Data Firehose にも記録します。
API リクエストのデバイスおよびセッションデータを Amazon Pinpoint キャンペーンに記録することもできます。Amazon Pinpoint では、ユーザーアクティビティの分析に基づいて、アプリからプッシュ通知を送信できます。
関連トピック
Amazon Cognito アイデンティティプール統合
Amazon Cognito のもう半分はアイデンティティプールです。アイデンティティプールは、ユーザーからの Amazon DynamoDB や Amazon S3 など、AWS のサービス に対して API リクエストを認可およびモニタリングするための認証情報を提供します。ユーザープール内のユーザーをどのように分類したかに基づいてデータを保護する ID ベースのアクセスポリシーを構築できます。アイデンティティプールは、ユーザープールの認証とは無関係に、さまざまな ID プロバイダーからのトークンや SAML 2.0 アサーションを受け入れることもできます。