第8章 認証の設定
この章では、複数の認証トピックを説明します。以下のトピックを以下に示します。
- 厳密なパスワードおよびワンタイムパスワード (OTP) ポリシーを強制します。
- 異なる認証情報タイプの管理
- Kerberos でログインします。
- ビルトイン認証情報タイプを無効にして有効化します。
8.1. パスワードポリシー
Red Hat build of Keycloak は、レルム作成時にパスワードポリシーをレルムに関連付けません。長さ、セキュリティー、または複雑性に制限のない簡単なパスワードを設定できます。実稼働環境では、シンプルなパスワードは受け入れられません。Red Hat build of Keycloak には、管理コンソールから利用できるパスワードポリシーのセットが含まれています。
手順
- メニューで Authentication をクリックします。
- Policies タブをクリックします。
- Add policy ドロップダウンボックスで、追加するポリシーを選択します。
- 選択したポリシーに適用する値を入力します。
Save をクリックします。
パスワードポリシー
ポリシーを保存すると、Red Hat build of Keycloak が新規ユーザーにそのポリシーを適用します。
新しいポリシーは既存のユーザーには無効になります。したがって、レルム作成の最初からパスワードポリシーを設定するか、既存のユーザーに "パスワードの更新" を追加するか、"パスワードの有効期限" を使用してユーザーが次の "N" 日以内にパスワードを更新するようにしてください。これにより、実際には新しいパスワードポリシーに合わせて調整します。
8.1.1. パスワードポリシータイプ
8.1.1.1. HashAlgorithm
パスワードは平文で保存されません。Red Hat build of Keycloak は、保存または検証の前に、標準のハッシュアルゴリズムを使用してパスワードをハッシュ化します。PBKDF2 は、利用可能な唯一の組み込みのデフォルトアルゴリズムです。独自のハッシュアルゴリズムを追加する方法については、サーバー開発者ガイド を参照してください。
ハッシュアルゴリズムを変更した場合、ストレージ内のパスワードハッシュは、ユーザーがログインするまで変更されません。
8.1.1.2. ハッシュの反復
Red Hat build of Keycloak が、保存または検証前にパスワードをハッシュ化する回数を指定します。ハッシュアルゴリズムとしてデフォルトの pbkdf2-sha512
が使用される場合、デフォルト値は 210,000 です。`HashAlgorithm` ポリシーを使用して他のハッシュアルゴリズムが明示的に設定されている場合、デフォルトのハッシュの反復回数が異なる可能性があります。たとえば、`pbkdf2-sha256` アルゴリズムを使用する場合、デフォルトは 600,000 です。また、pbkdf2
アルゴリズムを使用する場合は 1,300,000 です (pbkdf2
アルゴリズムは、HMAC-SHA1 を使用した PBKDF2 に対応します)。
Red Hat build of Keycloak はパスワードをハッシュ化し、パスワードデータベースへのアクセスを持つ敵対者がリバースエンジニアリングを通じてパスワードを読み取ることができないようにします。
ハッシュの反復値が高いと、CPU のべき乗を増やす必要があるため、パフォーマンスに影響する可能性があります。
8.1.1.3. 数字
パスワード文字列に必要な数字の数。
8.1.1.4. 小文字
パスワード文字列に必要な小文字の数。
8.1.1.5. 大文字
パスワード文字列に必要な大文字の数。
8.1.1.6. 特殊文字
パスワード文字列で必要な特殊文字の数。
8.1.1.7. ユーザー名なし
パスワードはユーザー名と同じにすることはできません。
8.1.1.8. メールなし
パスワードは、ユーザーのメールアドレスと同じにすることはできません。
8.1.1.9. 正規表現
パスワードは、定義された 1 つ以上の Java 正規表現パターンと一致する必要があります。正規表現の構文は、Java 正規表現のドキュメント を参照してください。
8.1.1.10. パスワードが失効する
パスワードが有効な日数。有効期限が切れた日数が経過したら、パスワードを変更する必要があります。
8.1.1.11. 最近使用されていない
ユーザーがパスワードを使用できない。Red Hat build of Keycloak は、使用されたパスワードの履歴を保存します。保存される古いパスワードの数は、Red Hat build of Keycloak で設定できます。
8.1.1.12. パスワードのブラックリスト
パスワードをブラックリストファイルに含めることはできません。
- ブラックリストファイルは、Unix 行で終わる UTF-8 プレーンテキストファイルです。すべての行は、ブラックリストに指定されたパスワードを表します。
- Red Hat build of Keycloak は、大文字と小文字を区別せずにパスワードを比較します。ブラックリストのすべてのパスワードは小文字でなければなりません。
-
ブラックリストファイルの値は、ブラックリストファイルの名前 (たとえば、
100k_passwords.txt
) である必要があります。 ブラックリストファイルは、デフォルトでは
${kc.home.dir}/data/password-blacklists/
に対して解決されます。以下を使用して、このパスをカスタマイズします。-
keycloak.password.blacklists.path
システムプロパティー。 -
passwordBlacklist
ポリシー SPI 設定のblacklistsPath
プロパティー。CLI を使用してブラックリストフォルダーを設定するには、--spi-password-policy-password-blacklist-blacklists-path=/path/to/blacklistsFolder
を使用します。
-
誤検知に関する注意事項
現在の実装では、特定のパスワードがブラックリストに含まれているかどうかなど、誤検知の可能性がある封じ込めチェックを高速かつメモリー効率よく行うために BloomFilter を使用しています。
-
デフォルトでは、
0.01%
の誤検知確率が使用されます。 -
CLI 設定によって誤検知確率を変更するには、
--spi-password-policy-password-blacklist-false-positive-probability=0.00001
を使用します。
8.1.1.13. 認証の最大有効期間
ユーザーが再認証なしでパスワードを更新できるユーザー認証の最大有効期間を秒単位で指定します。値が 0
の場合、ユーザーはパスワードを更新する前に常に現在のパスワードで再認証する必要があることを示します。このポリシーに関する詳細は、AIA セクション を参照してください。