12.10. Identity Management
Red Hat Enterprise Linux 10.2 の Identity Management (IdM) で修正された問題点を確認してください。
- Directory Server ツールは、LMDB データベースの最大サイズを設定する際に、ユニットサフィックスを一貫して受け入れます。
このアップデート以前は、
dscreateとdsconf は異なる関数を使用して LMDB データベースの最大サイズ (nsslapd-mdb-max-size) を解析および表示していました。その結果、dscreate create-template では値がバイト単位の生の浮動小数点数として表示されるのに対し、dsconf backend config set --mdb-max-sizeではバイト単位の値しか受け付けないため、2 つのツール間で一貫した値を設定することが困難になります。今回のアップデートにより、両方のツールは同じ解析関数を使用し、単位接尾辞 (
k、m、g、t) が付いた値を受け入れ、結果を自動的に最も近いページ境界に揃えるようになりました。その結果、管理者は LMDB データベースの最大サイズを設定する際に、dscreateとdsconf の両方で一貫して人間が読みやすいサイズ値を使用できるようになります。
- Directory Server ウェブコンソールは、親サフィックスが通常のエントリーであるサブサフィックスを表示します。
今回のアップデート以前は、Directory ServerWeb コンソールは
、nsslapd-parent-suffix属性が既存のバックエンドサフィックスと完全に一致するサブサフィックスのみを表示していました。その結果、親サフィックスが (バックエンドサフィックスではなく) 通常の LDAP エントリーを指しているサブサフィックスは、dsconf バックエンドサフィックスリストの出力には正しく表示されていたにもかかわらず、コンソールのサフィックスツリーには表示されませんでした。今回のアップデートにより、Web コンソールは、親サフィックス自体がバックエンドサフィックスであるかどうかに関わらず、バックエンドサフィックスの下位にあるサブサフィックスを正しく識別できるようになりました。その結果、設定されたすべてのサブサフィックスが Web コンソールサフィックスツリーに表示されます。
- Directory Server は、レトロチェンジログのトリミングスレッドがアクティブな場合でも、シャットダウン時に失敗しなくなりました。
今回のアップデート以前は、
ns-slapd がシャットダウンを開始した時点で、レトロチェンジログプラグインの内部ロックオブジェクトが解放されていましたが、トリミングスレッドはまだそのオブジェクトへの参照を保持していました。その結果、サーバーはセグメンテーション違反で停止する可能性がある。今回のアップデートにより、サーバーはシャットダウン時にプラグインのリソースを解放する前に、すべてのアクティブなプラグインスレッドが終了するまで待機するようになりました。その結果、
ns-slapd は、過去の変更ログのトリミング処理が進行中であっても、正常にシャットダウンします。
- 複合フィルターで単一のコンポーネントを使用した LDAP 検索は正しい結果を返します
このアップデート以前は、Directory Server は
、(&(cn:dn:=groups))のように単一のフィルターコンポーネントのみを含む複合 LDAP フィルターを正しく評価していませんでした。その結果、これらのフィルターを使用したグループ検索クエリーでは結果が返されず、グループ検索が失敗し、アクセス制御が正しく行われない可能性が生じました。今回のアップデートにより、フィルター評価ロジックが更新され、単一のコンポーネントを持つ複合フィルターを正しく処理できるようになりました。その結果、(&(cn:dn:=groups))のような既存のグループ検索フィルターは期待どおりのエントリーを返し、アプリケーションやスクリプトの LDAP 動作を予測可能なものに回復します。
- IdM AD ユーザーに対して
nameID ユーザーオーバーライドが存在する場合でも、ユーザー解決は失敗しなくなりました 今回のアップデート以前は、IdM AD の信頼済みユーザーに対して
nameID ユーザーオーバーライドが存在する場合、自動プライベートグループを解決できなかったため、ユーザー解決が失敗していました。今回のアップデートにより、グループのオーバーライドが見つからない場合、IdM プロバイダーはユーザーオブジェクトの取得を再試行するようになりました。その結果、<overwritten_name>@ad.domain の自動プライベートグループを解決できるようになり、ユーザーの解決が成功します。Jira:RHEL-94545[1]
- Directory Server は LMDB を使用するインスタンスで
memberOfDeferredUpdate設定を無視します このアップデート以前は、Berkeley DB (BDB) バックエンドでのみ有効な設定属性である
memberOfDeferredUpdateが、Lightning Memory-Mapped Database Manager (LMDB) バックエンドを持つインスタンスでは無視されていませんでした。その結果、LMDB インスタンスでmemberOfDeferredUpdate が有効になっている場合、大規模または複雑なグループの MemberOf プラグイン処理中に Directory Server が応答しなくなる可能性があります。今回のアップデートにより、Directory Server は LMDB を使用するインスタンスにおいて、
memberOfDeferredUpdate設定を無視するようになります。その結果、大規模または複雑なグループを処理しても、サーバーが応答しなくなることはなくなりました。
dsctl db2index は、特定の属性が要求された場合、すべての属性を再インデックスしなくなりました。このアップデート以前は、
--attrオプションを指定してdsctl db2index を実行してもバックエンド名を指定しなかった場合、--attrオプションは警告なしに無視されていました。その結果、指定された属性だけでなく、すべてのバックエンドのすべての属性が再インデックス化され、大規模なデータベースではかなりの時間を要する可能性があった。今回のアップデートにより、
dsctl db2index は位置引数としてバックエンド名を必要とするようになり、--attrオプションは指定されたバックエンドに対して、再インデックスの対象を指定された属性に正しく制限するようになりました。その結果、バックエンド名と--attrオプションの両方が指定されている場合、要求された属性のみが再インデックスされます。Jira:RHEL-111220[1]
- MemberOf 修正タスク完了メッセージには、メンバーシップ属性名が正しく表示されます。
今回のアップデート以前は、MemberOf プラグインがグローバルな修正タスクを完了すると、完了メッセージをログに記録する前に、プラグインは設定構造を解放していました。その結果、完了ログメッセージにはメンバーシップ属性名の代わりに (
null) が表示されました。今回のアップデートにより、MemberOf プラグインは設定構造を解放する前に修正タスクの完了メッセージをログに記録するようになり、メッセージが書き込まれる際に属性名が確実に利用できるようになります。その結果、完了ログメッセージに正しいメンバーシップ属性名が表示されるため、管理者は修正操作の確認や問題のトラブルシューティングを容易に行うことができます。
Jira:RHEL-117520[1]
- Directory Server Web コンソールは、コンシューマーでレプリケーションを有効にした際にエラーで失敗しなくなりました。
このアップデート以前は、コンシューマーでレプリケーションを有効にすると、
dsconfユーティリティーは変更ログに関する警告をstderrではなくstdoutストリームに出力していました。その結果、テキスト警告によって、標準出力に純粋な JSON を期待する Directory Server の Web コンソールでの JSON 解析が壊れてしまいました。今回のアップデートにより、
dsconfユーティリティーが更新され、コンシューマーレプリカの変更ログに関する警告がstderrに書き込まれるようになりました。その結果、Directory ServerWeb コンソールは、コンシューマーでレプリケーションを有効にした後、またはロールをコンシューマーに変更した後、レプリケーション タブを正常にロードします。
- Directory Server のアクセスログにおいて、非同期操作を識別するための新しい検索インジケーター (
notes=Nおよびnotes=B) が導入されました 今回のアップデート以前は、接続あたりの最大スレッド数を超える非同期リクエストが発生した際、Directory Server のアクセスログにその記録が残らず、サーバーが応答不能になる問題がありました。その結果、サーバーの応答不能状態を診断することが困難でした。
今回のリリースでは、Directory Server はアクセスログ内の新しい検索インジケーターを使用して、このような要求を識別します。
notes=Nは、操作が同期ではないことを示します。notes=Bは、その操作が他の新しい受信操作をブロックしている状態を定義します。具体的には、読み取り操作ではなく、保留中の操作の処理が遅延します。どちらの場合も、1 つの接続でより多くのスレッドを使用できるようにするために、
nsslapd-maxthreadsperconn属性の値を増やす必要があるかもしれません。
- Directory Server コンシューマーのオンライン初期化が、
LDAP_BUSYエラーで失敗しなくなりました。 今回のアップデート以前は、レプリカ合意はオンライン初期化中に、コンシューマーがインポートできる速度よりも速くエントリーを送信することができました。その場合、コンシューマーは
LDAP_BUSYエラーで応答しました。その結果、レプリカ合意はこのエラーを処理できず、オンライン初期化を終了した。今回のアップデートにより、レプリカ合意は、受信した
LDAP_BUSY応答に対して、一定時間後に操作を再試行することで対処するようになりました。その結果、コンシューマーが一時的に受信エントリーの速度に追いつけない場合でも、オンライン初期化は正常に完了する。Jira:RHEL-123663[1]
- DN フィルター値にスペースを含む LDAP 検索で、誤った結果が返されることがなくなりました。
このアップデート以前は、識別名 (DN) を含むフィルターの処理におけるリグレッションにより、フィルター内の DN 値にスペースが含まれる LDAP 検索 (例:
(member=uid=user、ou=people,dc=example,dc=com))が正しく評価されませんでした。その結果、申請者には不完全なグループメンバーシップ情報と検索結果が表示された。今回のアップデートにより、Directory Server はフィルター内の DN 値を正規化して正しく比較し、DN コンポーネントにスペースが含まれている場合と含まれていない場合の両方のフィルターを受け入れるようになりました。その結果、DN 値にスペースが含まれる LDAP 検索でも、以前の RHDS バージョンと同様に完全な結果が返され、期待されるアプリケーションの動作が回復します。
Jira:RHEL-123664[1]
- Directory Server は、想定どおりアクセスログを削除します。
このアップデート以前は、アクセスログの圧縮が有効になっている場合、内部ローテーション情報を再構築する際に、ログローテーションロジックが
.gzサフィックスが付いたローテーション済みアクセスログファイル名を正しく認識できなかったため、圧縮されたログが対応するローテーションエントリーに関連付けられませんでした。その結果、nsslapd-accesslog-list にはディスク上の実際のファイルが含まれていず、アクセスログが蓄積され続け、ディスクがいっぱいになるのを防ぐために手動でクリーンアップする必要が生じた。今回のアップデートにより、ログローテーションのロジックが更新され、ローテーションされたアクセスログファイル名が圧縮されているか (拡張子が
.gzか) に関わらず、正しく解析および照合されるようになりました。これにより、ローテーション情報の再構築時や以前のログファイルの検証時に、圧縮されたログが確実に含まれるようになります。その結果、圧縮されたローテーションアクセスログは、設定されたローテーション設定に従って適切に追跡および削除されます。
- 大規模データベースのオンライン初期化は予想通りに進行しています
このアップデート以前は、特にメジャーサブツリーの移動後など、非常に大規模なデータベースでレプリケーションを初期化する場合、初期サフィックスエントリーを送信した後、初期化が停止したように見えることがありました。これは、大規模な内部 ID リストの構築とチェックに過剰な時間が費やされていたためです。その結果、サーバーの CPU 使用率が長時間にわたって急上昇し、初期化が遅延または不完全になり、レプリカが長期間にわたって古い状態のままになった。
今回のアップデートにより、オンライン初期化時に使用される内部 ID リスト検索ロジックが最適化され、非常に大規模なデータセットでも拡張性が向上しました。その結果、大規模データベースにおけるレプリケーションのオンライン初期化は、想定どおりに進行する。
- オフラインインポート後、レプリケーションが
CSN が見つかりませんというエラーで失敗しなくなりました。 このアップデート以前は、オフラインインポートを使用してレプリカが再初期化された場合、レプリカが他のサプライヤーと同期する前に、レプリケーションのキープアライブ更新がトリガーされていました。その結果、
CSN(変更シーケンス番号) が見つかりませんというエラーがログに記録され、一部の変更がコンシューマーに反映されませんでした。今回のアップデートにより、最初のキープアライブアップデートまでの初期遅延時間は、
nsds5ReplicaKeepAliveUpdateInterval属性の値 (デフォルト値は 1 時間) と一致するようになり、この間隔が最大バックオフタイマーよりも短い場合は警告が表示されます。その結果、レプリカは再初期化後に他のサプライヤーから同期するのに十分な時間を確保でき、CSN エラーなしでレプリケーションが進行する。Jira:RHEL-129675[1]
- Directory Server データベースの初期化が
MDB_BAD_VALSIZEエラーで失敗しなくなりました。 このアップデート以前は、属性のインデックスを作成する際に、Directory Server がインデックスキーのプレフィックスを誤って拡張していました。インデックス付けされる値が増えるほど、接頭辞は長くなった。大きな値を持つエントリーを追加すると、サーバーがキーにハッシュ値も追加するため、問題が加速しました。たとえば、多数の証明書を含む FreeIPA デプロイメントで、エントリーが
MDB_BAD_VALSIZEエラーを引き起こしました。その結果、キーのサイズが LMDB の最大キーサイズを超える可能性があり、データセットにそのようなエントリーが含まれている場合、Directory Server はインポートまたはレプリケーション中にデータベースを初期化できない可能性があります。今回のアップデートにより、Directory Server はインデックスキーの処理を修正し、
MDB_BAD_VALSIZE状態の発生を防ぎます。その結果、多数の長いインデックス付き属性値を含むデータセットをインポートまたは複製する場合でも、データベースの初期化は成功します。
- Directory Server は、NDN キャッシュに関連する高負荷な操作下でも障害を起こさなくなりました。
今回のアップデート以前は、名前付きデータネットワーク (NDN) キャッシュで使用される concread 依存関係の不具合により、同じチェーンへの参照が複数存在する場合に、LinCowCell チェーンのドロップ時に共有リンクが誤って解放されるという問題が発生していました。その結果、NDN キャッシュに関わる負荷の高い処理中に、サーバーは解放済みメモリー使用 (use-after-free) 状態に陥り、
atomic_compare_exchange()でセグメンテーション違反が発生して、不規則なダウンタイムにつながる可能性があります。今回のアップデートにより、
389-ds-baseパッケージは concread バージョン 0.5.10 を使用するようになり、共有キャッシュリンクが検出された際にデータの解放を正しく停止するようになりました。その結果、NDN キャッシュ操作は安全に処理され、セグメンテーション違反が防止される。
- 逆引きゾーンがない場合に発生する DNS レコード作成エラーを解決しました。
今回のアップデート以前は、
ansible-freeipaのipadnsrecordモジュールはcreate_reverseパラメーターを無視していました。その結果、ユーザーがA レコードまたはAAAAレコードを追加しようとした際、モジュールは誤って常に既存の逆引き DNS ゾーンを要求し、DNS ゾーンが見つかりませんというエラーでタスクが失敗しました。今回のリリースでは、モジュールのロジックが、リバースゾーンの検証や検索を試みる前に
create_reverseフラグの状態を確認し、falseに設定されている場合はチェックを完全にスキップします。その結果、create_reverseがfalseに設定されている場合、ipadnsrecordモジュールは既存の逆引きゾーンを必要とせずに、IdM 管理ゾーンにA レコードとAAAAレコードを正常に追加します。