パスワード、パスワード復旧、パスワードポリシー - Amazon Cognito

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

パスワード、パスワード復旧、パスワードポリシー

ユーザープールにサインインするすべてのユーザー、フェデレーティッドユーザー にも、ユーザープロファイルにパスワードが割り当てられます。ローカルユーザーリンクされたユーザーは、サインイン時にパスワードを指定する必要があります。フェデレーティッドユーザーはユーザープールのパスワードを使用しませんが、ID プロバイダー (IdP ) でサインインします。ユーザーに独自のパスワードのリセット、管理者としてのパスワードのリセットまたは変更、パスワードの複雑さと履歴に関するポリシーの設定を許可できます。

Amazon Cognito はユーザーパスワードをプレーンテキストで保存しません。代わりに、各ユーザーのパスワードのハッシュをユーザー固有のソルトとともに保存します。このため、ユーザープールのユーザープロファイルから既存のパスワードを取得することはできません。ベストプラクティスとして、プレーンテキストのユーザーパスワードはどこにも保存しないでください。ユーザーがパスワードを忘れたときにパスワードリセットを実行します。

パスワードのリセットと復旧

ユーザーはパスワードを忘れます。パスワードを自分でリセットしたり、管理者にパスワードのリセットを要求したりできます。Amazon Cognito ユーザープールには、両方のモデルのオプションがあります。このガイドのこのパートでは、ユーザープールの設定とパスワードリセットAPIの操作について説明します。

ForgotPassword API オペレーションとホストされた UI オプションパスワードを忘れた場合? は、正しいコードがあることを確認したときに、 で新しいパスワードを設定する機会を提供するコードをユーザーに送信しますConfirmForgotPassword。これはセルフサービスのパスワード復旧モデルです。

AdminSetUserPassword および AdminResetUserPasswordAPIオペレーションは、管理者が開始するパスワードリセット方法です。 は、一時的または永続的なパスワードAdminSetUserPasswordを設定し、 と同じ方法でパスワードリセットコードをユーザーAdminResetUserPasswordに送信しますForgotPassword

AccountRecoverySetting パラメータは、ユーザーが を呼び出すときにパスワードを回復するために使用できる方法を設定するユーザープールパラメータAPIです。 は、検証済みの E ForgotPassword メールまたは検証済みの電話番号に復旧コードForgotPasswordを送信します。回復用コードは 1 時間有効です。ユーザープールに AccountRecoverySetting を指定した場合、Amazon Cognito は、設定した優先度に基づいてコードの配信先を選択します。

を定義AccountRecoverySettingし、ユーザーが SMSMFAを設定している場合、 SMS をアカウント復旧メカニズムとして使用することはできません。この設定の優先度は、1 が最も高いと優先度となります。Cognito は、指定された方法の 1 つだけに検証を送信します。

たとえば admin_only は、管理者がユーザー自身でアカウントを復旧することを望まず、その代わりに管理者に連絡してアカウントをリセットするようリクエストする場合に使用される値です。他のアカウント復旧メカニズムでは admin_only を使用できません。

AccountRecoverySetting を指定しない場合、Amazon Cognito はレガシーメカニズムを使用してパスワード復旧方法を決定します。この場合、Cognito は最初に確認済みの電話番号を使用します。ユーザーの確認済み電話番号が見つからない場合、Cognito はフォールバックし、次に確認済みの E メールを使用します。

の詳細についてはAccountRecoverySettingAmazon Cognito Identity Provider APIリファレンスUpdateUserPool」のCreateUserPool「」および「」を参照してください。

パスワードを忘れた場合の対応

1 時間に、ユーザーがパスワードを忘れた場合や confirm-forgot-password アクションの一部としてパスワードリセットコードをリクエストまたは入力するまでに 5~20 回試行できます。正確な回数は、リクエストに関連付けられたリスクパラメータによって異なります。この対応は変更される場合があることに注意してください。

ユーザープールのパスワードの追加要件

強力で複雑なパスワードは、ユーザープールのセキュリティのベストプラクティスです。特にインターネットに公開されているアプリケーションでは、パスワードが弱いと、ユーザーの認証情報がパスワードを推測してデータにアクセスしようとするシステムに公開される可能性があります。パスワードが複雑であればあるほど、推測が難しくなります。Amazon Cognito には、高度なセキュリティ機能AWS WAF ウェブ ACLsなどのセキュリティ意識の高い管理者向けの追加のツールがありますが、パスワードポリシーはユーザーディレクトリのセキュリティの中心的な要素です。

Amazon Cognito ユーザープールのローカルユーザーのパスワードは、自動的に期限切れになることはありません。ベストプラクティスとして、ユーザーパスワードのリセットの時刻、日付、メタデータを外部システムでログに記録します。パスワードの有効期間の外部ログを使用すると、アプリケーションまたは Lambda トリガーはユーザーのパスワードの有効期間を検索し、特定の期間後にリセットを要求できます。

ユーザープールは、セキュリティ標準に準拠する最小限のパスワード複雑さを要求するように設定できます。複雑なパスワードの長さは 8 文字以上です。また、大文字、数字、特殊文字の組み合わせも含まれます。

高度なセキュリティ機能を使用すると、パスワードの再利用ポリシーを設定することもできます。ユーザーが現在のパスワード、または最大 23 個の追加の以前のパスワードに一致する新しいパスワードに、最大合計 24 個リセットできないようにすることができます。

ユーザープールのパスワードポリシーを設定するには
  1. ユーザープールを作成して [セキュリティ要件を設定] ステップに移動するか、既存のユーザープールにアクセスして [サインインエクスペリエンス] タブに移動します。

  2. [パスワードポリシー] に移動します。

  3. [パスワードポリシーモード] を選択します。[Cognito のデフォルト] では、推奨最小設定でユーザープールを設定します。[カスタム] パスワードポリシーを選択することもできます。

  4. [パスワードの最小文字数] を設定します。すべてのユーザーは、この値以上の長さのパスワードでサインアップまたは作成する必要があります。この最小値は 99 まで設定できますが、ユーザーは最大 256 文字のパスワードを設定できます。

  5. [パスワードの要件] でパスワードの複雑さのルールを設定します。各ユーザーのパスワードで少なくとも 1 つは必須とする文字タイプ (数字、特殊文字、大文字、小文字) を選択します。

    パスワードには、次の文字の少なくとも 1 つを要求できます。Amazon Cognito がパスワードに最小必須文字が含まれていることを確認した後、ユーザーのパスワードには、最大パスワード長までの任意のタイプの追加の文字を含めることができます。

    • 大文字と小文字の基本的なラテン文字

    • 数字

    • 以下の特殊文字。

      ^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~ ` = + -
    • 先頭でも末尾にもない空白文字。

  6. [管理者が設定した一時パスワードの有効期限] に値を設定します。この期間が過ぎると、Amazon Cognito コンソールまたは AdminCreateUser で作成した新しいユーザーは、サインインして新しいパスワードを設定できなくなります。一時パスワードでサインインすると、ユーザーアカウントが期限切れになることはありません。Amazon Cognito ユーザープール のパスワード期間を更新するにはAPI、 CreateUserPoolまたは UpdateUserPoolAPIリクエストTemporaryPasswordValidityDays で の値を設定します。

  7. 可能な場合は、以前のパスワードの使用を防止する の値を設定します。この機能を使用するには、ユーザープールで高度なセキュリティ機能を有効にします。このパラメータの値は、ユーザーがパスワードをリセットしたときに新しいパスワードが照合できない以前のパスワードの数です。

期限切れのユーザーアカウントのアクセスをリセットするには、次のいずれかを実行します。

  • ユーザープロファイルを削除し、新しいものを作成します。

  • AdminSetUserPassword API リクエストで新しい永続的パスワードを設定します。

  • AdminResetUserPassword API リクエストで新しい確認コードを生成します。