顧客 ID 管理 - AWS 規範ガイダンス

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

顧客 ID 管理

Customer Identity and Access Management (CIAM) は、組織が顧客 ID を管理できるようにするテクノロジーです。組織が提供するコンシューマーアプリケーション、ウェブポータル、またはデジタルサービスへのサインアップ、サインイン、アクセスのためのセキュリティと強化されたユーザーエクスペリエンスを提供します。CIAM は、顧客を特定し、パーソナライズされたエクスペリエンスを作成し、顧客向けのアプリケーションやサービスに必要な正しいアクセスを決定するのに役立ちます。CIAM ソリューションは、組織が業界の規制基準やフレームワーク全体のコンプライアンス要件を満たすのにも役立ちます。詳細については、AWS ウェブサイトの「CIAM とは」を参照してください。

Amazon Cognito は、あらゆる規模のビジネスに CIAM 機能を提供するウェブおよびモバイルアプリケーション用の ID サービスです。Amazon Cognito には、ユーザーディレクトリ、認証サーバー、OAuth 2.0 アクセストークンの認証サービスが含まれており、一時的な AWS 認証情報を提供することもできます。Amazon Cognito を使用して、組み込みユーザーディレクトリ、エンタープライズディレクトリなどのフェデレーティッド ID プロバイダー、または Google や Facebook などのソーシャル ID プロバイダーからのユーザーを認証および承認できます。

Amazon Cognito の主な 2 つのコンポーネントは、ユーザープールと ID プールです。ユーザープールは、ウェブおよびモバイルアプリケーションユーザーにサインアップおよびサインインオプションを提供するユーザーディレクトリです。ID プールは一時的な AWS 認証情報を提供し、ユーザーに他の AWS サービスへのアクセスを許可します。

Amazon Cognito を使用するタイミング

Amazon Cognito は、ウェブおよびモバイルアプリケーションに安全で費用対効果の高いユーザー管理ソリューションが必要な場合に適しています。Amazon Cognito の使用を決定するシナリオを次に示します。

  • 認証。アプリケーションをプロトタイプ化する場合や、ユーザーログイン機能をすばやく実装する場合は、Amazon Cognito のユーザープールとホストされた UI を使用して開発を高速化できます。Amazon Cognito がユーザーのサインアップ、サインイン、セキュリティを処理する間、アプリケーションのコア機能に集中できます。

    Amazon Cognito は、ユーザー名とパスワード、ソーシャル ID プロバイダー、SAML および OpenID Connect (OIDC) によるエンタープライズ ID プロバイダーなど、さまざまな認証方法をサポートしています。

  • ユーザー管理。Amazon Cognito は、ユーザー登録、検証、アカウント復旧などのユーザー管理をサポートします。ユーザーは希望する ID プロバイダーでサインアップしてサインインでき、アプリケーションの要件に応じて登録プロセスをカスタマイズできます。

  • AWS リソースへの安全なアクセス。Amazon Cognito は IAM と統合して、AWS リソースへのきめ細かなアクセスコントロールを提供します。IAM ロールとポリシーを定義して、ユーザー ID とグループメンバーシップに基づいて AWS サービスへのアクセスを制御できます。

  • フェデレーティッド ID。Amazon Cognito はフェデレーティッド ID をサポートしています。これにより、ユーザーは既存のソーシャル ID またはエンタープライズ ID を使用してサインインできます。これにより、ユーザーがアプリケーションの新しい認証情報を作成する必要がなくなるため、ユーザーエクスペリエンスが向上し、サインアッププロセス中の摩擦が軽減されます。

  • モバイルアプリケーションとウェブアプリケーション。Amazon Cognito は、モバイルアプリケーションとウェブアプリケーションの両方に適しています。さまざまなプラットフォーム用の SDKs を提供し、認証とアクセスコントロールをアプリケーションコードに簡単に統合できます。モバイルアプリケーションのオフラインアクセスと同期をサポートしているため、ユーザーはオフラインでもデータにアクセスできます。

  • スケーラビリティ。Amazon Cognito は、数百万のユーザーに拡張できる可用性が高くフルマネージド型のサービスです。1 か月あたり 1,000 億を超える認証を処理します。

  • セキュリティ。Amazon Cognito には、機密データの暗号化、多要素認証 (MFA)、クロスサイトスクリプティング (XSS) やクロスサイトリクエスト偽造 (CSRF) などの一般的なウェブ攻撃に対する保護など、いくつかのセキュリティ機能が組み込まれています。Amazon Cognito は、アダプティブ認証、侵害された認証情報の使用の確認、アクセストークンのカスタマイズなどの高度なセキュリティ機能も提供します。

  • 既存の AWS サービスとの統合。Amazon Cognito は AWS サービスとシームレスに統合されます。これにより、AWS リソースに依存する機能の開発を簡素化し、ユーザー管理を合理化できます。

次の図は、これらのシナリオの一部を示しています。

Amazon Cognito をカスタマー ID およびアクセス管理 (CIAM) として使用する
  1. アプリケーションは Amazon Cognito ユーザープールで認証し、トークンを取得します。

  2. アプリケーションは Amazon Cognito ID プールを使用してトークンを AWS 認証情報と交換します。

  3. アプリケーションは 認証情報を使用して AWS のサービスにアクセスします。

Amazon Cognito は、ウェブまたはモバイルアプリケーションにユーザー認証、認可、およびユーザー管理機能を追加する必要がある場合、特に複数の ID プロバイダーがあり、AWS リソースへの安全なアクセスが必要で、スケーラビリティ要件がある場合は、常に使用することをお勧めします。

設計上の考慮事項
  • 要件に基づいて Amazon Cognito ユーザープールまたは ID プールを作成します。

  • ユーザープロファイルを頻繁に更新しないでください (サインインリクエストのたびになど)。更新が必要な場合は、更新された属性を Amazon DynamoDB などの外部データベースに保存します。

  • Amazon Cognito ワークフォース ID 管理を使用しないでください。

  • アプリケーションは、署名と有効性を検証して JSON ウェブトークン (JWTsを信頼する前に、常に検証する必要があります。この検証は、ユーザープールに API コールを送信せずに、クライアント側で実行する必要があります。トークンが検証されたら、追加の getUser API コールを行う代わりに、トークン内のクレームを信頼して使用できます。詳細については、Amazon Cognito ドキュメントの「JSON ウェブトークンの検証」を参照してください。トークンの検証には追加の JWT ライブラリを使用することもできます。

  • CUSTOM_AUTH フロー、カスタム認証チャレンジの AWS Lambda トリガー、またはフェデレーションサインインを使用していない場合にのみ、Amazon Cognito の高度なセキュリティ機能を有効にします。 AWS Lambda 高度なセキュリティ機能に関する考慮事項と制限については、Amazon Cognito ドキュメントを参照してください。

  • AWS WAF を有効にして、レートベースのルールを使用し、複数のリクエストパラメータを組み合わせて Amazon Cognito ユーザープールを保護します。詳細については、AWS ブログ記事「AWS WAF で Amazon Cognito ユーザープールを保護する AWS WAF」を参照してください。

  • 追加の保護レイヤーが必要な場合は、AWS ブログ記事「Amazon CloudFront プロキシ を使用して Amazon Cognito のパブリッククライアントを保護する」で説明されているように、受信リクエストの追加処理と検証に Amazon CloudFront プロキシを使用します。

  • ユーザーサインイン後のすべての API コールは、バックエンドサービスから行う必要があります。例えば、AWS WAF を使用して への呼び出しを拒否しUpdateUserAttribute、代わりにアプリケーションのバックエンドAdminUpdateUserAttributeから を呼び出してユーザー属性を更新します。

  • ユーザープールを作成するときは、ユーザー名、E メールアドレス、電話番号などを使用してユーザーがサインインする方法を選択します。ユーザープールの作成後にこの設定を変更することはできません。同様に、カスタム属性をユーザープールに追加した後で変更または削除することはできません。

  • ユーザープールで多要素認証 (MFA) を有効にすることをお勧めします。

  • Amazon Cognito は現在、組み込みのバックアップまたはエクスポート機能を提供していません。ユーザーのデータをバックアップまたはエクスポートするには、Amazon Cognito Profiles エクスポートリファレンスアーキテクチャ を使用できます。

  • AWS リソースへの一般的なアクセスには IAM ロールを使用します。きめ細かな承認要件については、Amazon Verified Permissions を使用してください。このアクセス許可管理サービスは、Amazon Cognito とネイティブに統合されますアクセストークンのカスタマイズを使用してアプリケーション固有のクレームを強化し、ユーザーが利用できるアクセスレベルとコンテンツを決定することもできます。アプリケーションで Amazon API Gateway をエントリポイントとして使用する場合は、Amazon Cognito 機能を使用して、Amazon Verified Permissions を使用して Amazon API Gateway を保護します。このサービスは、ユーザー属性とグループを参照するきめ細かなセキュリティポリシーを管理および評価します。承認された Amazon Cognito グループのユーザーのみがアプリケーションの APIs にアクセスできるようにすることができます。詳細については、AWS コミュニティウェブサイトの記事「Amazon Verified Permissions で API Gateway を保護する」を参照してください。

  • AWS SDKs を使用して、ユーザー属性、ステータス、およびグループ情報を呼び出して取得することで、バックエンドからユーザーデータにアクセスします。カスタムアプリケーションデータを Amazon Cognito のユーザー属性に保存し、デバイス間で同期させることができます。

以下のセクションでは、Amazon Cognito を他の AWS サービスと統合するための 3 つのパターン、Application Load Balancer、Amazon API Gatewayについて説明します。 OpenSearch

Application Load Balancer との統合

次の図に示すように、Amazon Cognito で Application Load Balancer を設定して、アプリケーションユーザーを認証できます。

識別管理のための Amazon Cognito を使用した Application Load Balancer の設定

HTTPS リスナーのデフォルトルールを設定することで、ユーザー ID を Application Load Balancer にオフロードし、自動認証プロセスを作成できます。詳細については、AWS ナレッジセンターのAmazon Cognito ユーザープールを介してユーザーを認証するように Application Load Balancer を設定する方法」を参照してください。アプリケーションが Kubernetes でホストされている場合、AWS ブログ記事Application Load Balancer と Amazon Cognito を使用して Kubernetes ウェブアプリケーションのユーザーを認証する方法」を参照してください。 

Amazon API Gateway との統合

Amazon API Gateway は、フルマネージド型のクラウドベースの API ゲートウェイサービスで、APIsします。これは、バックエンドサービスへのユーザートラフィックのエントリポイントです。Amazon Cognito を API Gateway サービスと統合して、APIs を悪用から保護するため、またはその他のセキュリティやビジネスユースケースのために、認証とアクセスコントロールを実装できます。API Gateway へのアクセスを保護するには、Amazon Cognito オーソライザー (次の図を参照) を使用する方法と AWS Lambda オーソライザーを使用する方法の 2 つの方法があります。これらの実装の詳細については、AWS ナレッジベースの「API Gateway REST API で Amazon Cognito ユーザープールをオーソライザーとして設定する方法」を参照してください。

API Gateway での Amazon Cognito オーソライザーを使用した識別管理

Amazon OpenSearch Service との統合

Amazon Cognito を使用して Amazon OpenSearch Service ドメインを保護できます。例えば、次の図に示すように、ユーザーがインターネットから OpenSearch Dashboards にアクセスする必要がある場合です。このシナリオでは、Amazon Cognito グループとユーザーを内部 OpenSearch サービスアクセス許可にマッピングすることで、Amazon Cognitoめ細かなアクセス許可を含むアクセス許可を提供できます。詳細については、 OpenSearch サービスドキュメントの OpenSearch 「Dashboards の Amazon Cognito 認証の設定」を参照してください。

Amazon Cognito を使用して Amazon OpenSearch Service ドメインを保護する