2.11. その他の変更点


2.11.1. Argon2 パスワードハッシュ

Argon2 は現在、非 FIPS 環境での Red Hat build of Keycloak で使用されるデフォルトのパスワードハッシュアルゴリズムです。

Argon2 は 2015 年のパスワードハッシュコンテスト で優勝し、OWASP によって推奨されるハッシュアルゴリズムです。

Red Hat build of Keycloak 24 では、PBKDF2 のデフォルトのハッシュイテレーションが 27.5K から 210K に増加し、パスワードハッシュの生成に必要な CPU 時間が 10 倍以上増加しました。Argon2 を使用すると、以前のリリースの Red Hat build of Keycloak とほぼ同じ CPU 時間で、より優れたセキュリティーを実現できます。1 つの欠点として、Argon2 ではメモリーがより多く必要になりますが、これは GPU 攻撃に耐えるためには必要です。Red Hat build of Keycloak の Argon2 のデフォルトでは、ハッシュ要求ごとに 7MB が必要です。

メモリーと CPU の過剰な使用を防ぐため、デフォルトでは、Argon2 によるハッシュの並列計算において、JVM で利用可能なコア数が上限となっています。Argon2 のメモリー集約型の性質をサポートするために、ヒープの使用率を向上させるために、デフォルトの GC を ParallelGC から G1GC に更新しました。

Argon2 は FIPS 140-2 に準拠していないことに注意してください。したがって、FIPS 環境の場合、デフォルトのアルゴリズムは引き続き PBKDF2 になります。また、FIPS 以外の環境で使用しており、FIPS 環境に移行する予定がある場合は、最初にパスワードポリシーを pbkdf2-sha512 などの FIPS 準拠アルゴリズムに変更することを検討してください。そうしないと、ユーザーは FIPS 環境に切り替えた後にログインできなくなります。

2.11.2. デフォルトの http-pool-max-threads が削減される

http-pool-max-threads が設定されていない場合、デフォルトで 50 または 4 x (使用可能なプロセッサー数) のいずれか大きい方に設定されます。以前は、200 または 8 x (使用可能なプロセッサー数) のいずれか大きい方にデフォルト設定されていました。ほとんどの使用シナリオでは、タスクスレッドの数を減らすと、アクティブなスレッド間のコンテキスト切り替えが少なくなるため、パフォーマンスがわずかに向上します。

2.11.3. findGrantedResources および findGrantedOwnerResources クエリーのパフォーマンスが向上する

RESOURCE_SERVER_RESOURCERESOURCE_SERVER_PERM_TICKET テーブルに 100,000 を超えるエントリーがあり、ユーザーに 1,000 を超えるリソースへのアクセスが許可されている場合、これらのクエリーのパフォーマンスは低下しました。クエリーが簡素化され、requester 列と owner 列の新しいインデックスが導入されました。

新しいインデックスは両方とも RESOURCE_SERVER_PERM_TICKET テーブルに適用されます。テーブルに現在 300,000 を超えるエントリーが含まれている場合、Red Hat build of Keycloak は、自動スキーマ移行中にデフォルトでインデックスの作成をスキップし、代わりに移行中にコンソールに SQL ステートメントを記録します。この場合、Red Hat build of Keycloak の起動後に、DB でステートメントを手動で実行する必要があります。

2.11.4. getExp メソッドが SingleUseObjectKeyModel に追加される

AccessTokenIDToken、および JsonWebToken から非推奨のメソッドが削除された結果、有効期限値に関連するメソッド名との一貫性を保つために SingleUseObjectKeyModel も変更されました。

以前の getExpiration メソッドは非推奨となり、2038 年以降のオーバーフローを回避するために、新しく導入された getExp メソッドを使用することを推奨します。

2.11.5. ブルートフォースが有効な場合、同時ログイン要求はデフォルトでブロックされる

攻撃者が多数のログイン試行を同時に実行した場合、ブルートフォース攻撃保護の設定で許可されている回数を超えてパスワードを推測できる可能性があります。これは、ブルートフォースプロテクターがユーザーをロックする前に、ブルートフォースチェックが実行されたことが原因です。この競合を防ぐために、ブルートフォースプロテクターは、同じサーバーで別のログインが進行中に発生するすべてのログイン試行を拒否するようになりました。

この機能を無効にしたい場合は、次のコマンドを使用します。

bin/kc.[sh|bat] start --spi-brute-force-protector-default-brute-force-detector-allow-concurrent-requests=true

2.11.6. ワイルドカード使用時のリダイレクト URI 検証の変更

セキュリティー上の懸念から、渡されたリダイレクト URI に userinfo 部分が含まれている場合、またはその path が親ディレクトリー (/../) にアクセスする場合、リダイレクト URI 検証では正確な文字列マッチング (ワイルドカードは使用しない) が実行されるようになりました。

完全なワイルドカード * は、これらの特性を持つ http (s) URI の開発において有効なリダイレクトとして引き続き使用できます。実稼働環境では、そのタイプの URI に対してワイルドカードを必要としない正確で有効なリダイレクト URI を設定します。

ワイルドカードが有効なリダイレクト URI は実稼働環境では推奨されておらず、OAuth 2.0 仕様ではカバーされていないことに注意してください。

2.11.7. Infinispan マーシャリングの変更

マーシャリングは、Java オブジェクトをバイトに変換し、Red Hat build of Keycloak サーバー間でネットワーク経由で送信するプロセスです。Red Hat build of Keycloak 26 では、マーシャリングライブラリーが JBoss Marshalling から Infinispan Protostream に変更されました。ライブラリーは相互に互換性がないため、セッションデータが失われないようにするにはいくつかの手順が必要です。

警告

JBoss Marshalling と Infinispan Protostream は相互に互換性がないため、誤って使用するとデータが損失する可能性があります。したがって、このバージョンにアップグレードすると、すべてのキャッシュがクリアされます。既存のオンラインユーザーおよびクライアントセッションはすべてクリアされます。オフラインユーザーおよびクライアントセッションは影響を受けません。

2.11.8. ルートから相対パスへの自動リダイレクト

http-relative-path プロパティーが指定されている場合、ユーザーは Red Hat build of Keycloak がホストされているパスに自動的にリダイレクトされます。つまり、相対パスが /auth に設定され、ユーザーが localhost:8080/ にアクセスすると、ページは localhost:8080/auth にリダイレクトされます。

http-management-relative-path または http-relative-path プロパティーが指定されている場合、同じ変更が管理インターフェイスに適用されます。この変更により、ユーザーエクスペリエンスが向上します。ユーザーは URL への相対パスを明示的に設定する必要がなくなりました。

2.11.9. URL エンコードに UTF-8 charset を一貫して使用する

org.keycloak.common.util.Encode は、file.encoding システムプロパティーに暗黙的に依存するのではなく、URL エンコードに常に UTF-8 charset を使用するようになりました。

2.11.10. LDAP 接続プールの設定

このリリースでは、LDAP 接続プールの設定はシステムプロパティーのみに依存します。主な理由は、LDAP 接続プールの設定が、個々のレルムまたは LDAP プロバイダーインスタンスに固有のものではなく、JVM レベルの設定であるためです。

以前のリリースと比較して、LDAP 接続プールに関連するすべてのレルム設定は無視されます。次のいずれかの設定が LDAP プロバイダーに設定されている以前のバージョンから移行する場合は、代わりにシステムプロパティーを使用することを検討してください。

  • connectionPoolingAuthentication
  • connectionPoolingInitSize
  • connectionPoolingMaxSize
  • connectionPoolingPrefSize
  • connectionPoolingTimeout
  • connectionPoolingProtocol
  • connectionPoolingDebug

詳細は、接続プールの設定 を参照してください。

2.11.11. 再起動後も取り消されたアクセストークンが保持される

このリリースでは、埋め込みキャッシュを使用する場合、取り消されたアクセストークンはデータベースに書き込まれ、クラスターが再起動されたときにデフォルトで再ロードされます。

この動作を無効にするには、すべてのプロバイダー設定 で説明されているように、SPI オプション spi-single-use-object-infinispan-persist-revoked-tokens を使用します。

SingleUseObjectProvider の SPI 動作が変更され、取り消されたトークンに対しては put メソッドと contains メソッドのみを使用する必要があります。これはデフォルトで強制され、SPI オプション spi-single-use-object-infinispan-persist-revoked-tokens を使用して無効にできます。

2.11.12. 可用性の高いマルチサイトデプロイメント

Red Hat build of Keycloak 26 では、推奨される高可用性マルチサイトアーキテクチャーが大幅に改善されました。主な改善点は次のとおりです。

  • Red Hat build of Keycloak デプロイメントでは、両方のサイトで同時にユーザー要求を処理できるようになりました。一度に 1 つのサイトのみでリクエストを処理する以前のロードバランサー設定は、引き続き機能します。
  • 障害が発生した場合にサイト間のレプリケーションを再設定するには、サイト間の接続をアクティブにモニタリングする必要があります。ブループリントでは、Alertmanager と AWS Lambda を使用したセットアップを説明します。
  • ロードバランサーのブループリントは、AWS Global Accelerator を使用するように更新されました。これにより、クライアントによる DNS キャッシュによって発生するフェイルオーバー時間の延長を回避できます。
  • アーキテクチャーの要件としてユーザーセッションが永続化されました。その結果、Red Hat build of Keycloak または Data Grid のアップグレードでもユーザーセッションは保持されます。
  • 外部 Data Grid リクエスト処理が改善され、メモリー使用量とリクエストの待ち時間が削減されました。

上記の変更の結果として、既存の Red Hat build of Keycloak デプロイメントに次の変更が必要になります。

  1. multi-site 機能が有効になっている場合、キャッシュ設定ファイルによって提供される distributed-cache 定義は無視されるため、ブループリントで概説されているように、cache-remote-* コマンドライン引数または Keycloak CR を介して外部 Data Grid デプロイメントへの接続を設定する必要があります。すべての remote-store 設定をキャッシュ設定ファイルから削除する必要があります。
  2. 外部 Data Grid の現在のキャッシュ設定を確認し、最新バージョンの Red Hat build of Keycloak ドキュメントに記載されている設定に更新します。以前のバージョンのキャッシュ設定では、サイト間のバックアップレプリケーションが失敗した場合にのみ警告が記録されていましたが、新しい設定では、両方のサイトの状態が同期されたままになります。つまり、2 つのサイト間の転送が失敗すると、呼び出し元にエラーが表示されます。そのため、サイト障害が発生した場合に 2 つのサイトを切断するためのモニタリングをセットアップする必要があります。高可用性ガイド には、これをセットアップするためのブループリントが含まれています。
  3. 以前のロードバランサー設定は Red Hat build of Keycloak でも引き続き機能しますが、クライアント側の DNS キャッシュによるフェイルオーバー時間の延長を回避するために、既存の Route53 設定をアップグレードすることを検討してください。
  4. キャッシュ設定 XML ファイルをリモートストア設定で更新した場合、それらは機能しなくなります。代わりに、multi-site 機能を有効にして、cache-remove-* オプションを使用します。

2.11.13. 必須アクションの改善

アプリケーションによって開始された必須アクションの実行からリダイレクトされるときに、必要なアクションプロバイダー名が kc_action パラメーターを介して返されるようになりました。これにより、クライアントに対して実行された必要なアクションの検出が容易になります。実行の結果は、kc_action_status パラメーターによって決定できます。

注意: この機能では Keycloak JS アダプターへの変更が必要でした。そのため、この機能を利用する場合は、アダプターを最新バージョンにアップグレードすることを推奨します。

2.11.14. キーストアとトラストストアのデフォルト形式の変更

Red Hat build of Keycloak は、ファイル拡張子に基づいてキーストアとトラストストアの形式を決定するようになりました。ファイル拡張子が .p12.pkcs12、または .pfx の場合、形式は PKCS12 になります。ファイル拡張子が .jks.keystore、または .truststore の場合、形式は JKS になります。ファイル拡張子が .pem.crt、または .key の場合、形式は PEM になります。

https-key-store-typehttps-trust-store-type を明示的に指定することで、自動検出をオーバーライドすることもできます。同じことが管理インターフェイスとその https-management-key-store-type にも当てはまります。FIPS 厳密モードの制限は変更されません。

注記

spi-truststore-file-* オプションとトラストストア関連のオプション https-trust-store-* は非推奨となりました。システムトラストストアの使用を強く推奨します。詳細は、関連する ガイド を参照してください。

2.11.15. common テーマリソースのパスが変更される

keycloak テーマの common リソース、具体的にはサードパーティーライブラリーのリソースへのパスの一部が変更されました。それに応じてカスタムテーマを更新してください。

  • node_modules/patternfly/dist is now vendor/patternfly-v3
  • node_modules/@patternfly/patternfly is now vendor/patternfly-v4
  • node_modules/@patternfly-v5/patternfly is now vendor/patternfly-v5
  • node_modules/rfc4648/lib is now vendor/rfc4648

さらに、次のリソースが common テーマから削除されました。

  • node_modules/alpinejs
  • node_modules/jquery

削除されたリソースを以前にテーマで使用していた場合は、代わりに独自のテーマリソースに追加してください。

2.11.16. BouncyCastle FIPS が更新される

当社の FIPS 140-2 インテグレーションは現在、BouncyCastle FIPS ライブラリーのバージョン 2 でテストされ、サポートされています。このバージョンは Java 21 で認定されています。FIPS 140-2 インテグレーションを使用する場合は、BouncyCastle FIPS ライブラリーを最新のドキュメントに記載されているバージョンにアップグレードすることを推奨します。

BouncyCastle FIPS バージョン 2 は、FIPS 140-3 認定を受けています。したがって、Red Hat build of Keycloak は、FIPS 140-3 準拠システムで使用される限り、FIPS 140-3 に準拠できます。これは、FIPS 140-3 に準拠している RHEL 9 ベースのシステムである可能性があります。ただし、RHEL 8 ベースのシステムは FIPS 140-2 のみ認定されていることに注意してください。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.