5.4. キャッシングの有効化


セキュリティーレルムには、認証とグループ読み込みの両方の LDAP クエリーの結果をキャッシュする機能もあります。この機能により、グループのグループメンバーシップ情報を反復的にクエリーする場合など、特定の状況で異なるユーザーが複数の検索で複数のクエリーの結果を再利用できます。3 つの異なるキャッシュが利用でき、それぞれが個別に設定され、独立して動作します。

  • authentication
  • group-to-principal
  • username-to-dn

5.4.1. キャッシュ設定

キャッシュは相互に独立していますが、上記 3 つともすべて、同じ方法で設定されます。キャッシュごとに、以下の設定オプションがあります。

属性説明

type

この属性は、キャッシュが準拠するエビクションストラテジーを定義します。オプションは by-access-time および by-search-time です。by-access-time は、最終アクセスから一定期間が経過すると、キャッシュからアイテムが退避されます。by-search-time は、最終アクセスのタイミングに関係なく、アイテムがキャッシュに保存されていた期間をもとに退避されます。

eviction-time

これは、ストラテジーに応じてエビクションに費やす時間 (秒単位) を定義します。

cache-failures

これは、失敗した検索のキャッシュを有効または無効にするブール値です。この設定により、検索に失敗しているにも拘らず、同じ検索が LDAP サーバーに反復的にアクセスしないようにできる可能性がありますが、存在しないユーザーの検索でキャッシュがいっぱいになってしまう可能性もあります。この設定は特に、認証キャッシュに重要です。

max-cache-size

この属性は、キャッシュの最大サイズ (アイテム数) を定義し、アイテムの退避を開始するタイミングを指定できます。必要に応じて新しい認証や検索で使用できるように、古いアイテムはキャッシュから退避されます。つまり max-cache-size を指定すると、新しい認証の試行や検索が行われないようになります。

5.4.2. 例

注記

この例では、LDAPRealm という名前のセキュリティーレルムが作成されていることを前提としています。このセキュリティーれルムは、既存の LDAP サーバーに接続して、認証および承認用に設定されます。現在の設定を表示するコマンドの詳細は 現在のャッシュ設定の読み取り を参照してください。LDAP を使用するセキュリティーレルムの作成に関する詳細は、レガシーコア管理認証の使用 を参照してください。

ベース設定の例

Copy to Clipboard Toggle word wrap
"core-service" : { 
  "management" : { 
    "security-realm" : { 
      "LDAPRealm" : { 
        "authentication" : {
          "ldap" : {
            "allow-empty-passwords" : false,
            "base-dn" : "...", 
            "connection" : "MyLdapConnection", 
            "recursive" : false, 
            "user-dn" : "dn", 
            "username-attribute" : "uid", 
            "cache" : null
          }
        },
        "authorization" : {
          "ldap" : {
            "connection" : "MyLdapConnection", 
            "group-search" : {
              "group-to-principal" : { 
                "base-dn" : "...", 
                "group-dn-attribute" : "dn", 
                "group-name" : "SIMPLE", 
                "group-name-attribute" : "uid", 
                "iterative" : true, 
                "principal-attribute" : "uniqueMember", 
                "search-by" : "DISTINGUISHED_NAME", 
                "cache" : null 
              }
            }, 
            "username-to-dn" : {
              "username-filter" : { 
                "attribute" : "uid", 
                "base-dn" : "...", 
                "force" : false, 
                "recursive" : false, 
                "user-dn-attribute" : "dn", 
                "cache" : null 
                }
              } 
            }
          }, 
        } 
      } 
  }
}

"cache" : null が指定されているエリアはすべて、キャッシュを設定できます。

認証
認証時に、この定義を使用してユーザーの識別名を検出し、LDAP サーバーへの接続を試行し、この認証情報を使用してアイデンティティーが作成されたことを確認します。
group-search 定義
グループ検索の定義です。今回は上記の設定例で iterativetrue に指定されているので反復検索になっています。まず、ユーザーが直接所属するグループをすべて検索します。その後、これらのグループごとに検索が実行され、他のグループに所属しているかどうかを特定します。このプロセスは、循環参照が検出されるか、最後のグループが所属するグループがなくなるまで継続されます。
グループ検索の username-to-dn 定義
グループ検索は、ユーザーの識別名の有無に依存します。このセクションはすべての状況で使用されるわけではありませんが、ユーザーの識別名の検出を 2 回目に試行する時などに使用できます。これは、ローカル認証など、2 つ目の認証形式がサポートされる場合に便利で、必要になる場合さえもあります。

5.4.2.1. 現在のキャッシュ設定の読み取り

注記

これ以降のセクションで使用する CLI コマンドでは、セキュリティーレルム の名前に LDAPRealm を使用します。これは、実際に設定するレルムの名前に置き換える必要があります。

現在のキャッシュ設定を読み取る CLI コマンド

Copy to Clipboard Toggle word wrap
/core-service=management/security-realm=LDAPRealm:read-resource(recursive=true)

出力

Copy to Clipboard Toggle word wrap
{ 
  "outcome" => "success", 
  "result" => { 
    "map-groups-to-roles" => true, 
    "authentication" => {
      "ldap" => { 
        "advanced-filter" => undefined, 
        "allow-empty-passwords" => false, 
        "base-dn" => "dc=example,dc=com", 
         "connection" => "ldapConnection", 
         "recursive" => true, 
         "user-dn" => "dn", 
         "username-attribute" => "uid",
         "cache" => undefined 
        }
      }, 
      "authorization" => {
        "ldap" => { 
          "connection" => "ldapConnection", 
          "group-search" => {
            "principal-to-group" => { 
              "group-attribute" => "description", 
              "group-dn-attribute" => "dn", 
              "group-name" => "SIMPLE", 
              "group-name-attribute" => "cn", 
              "iterative" => false, 
              "prefer-original-connection" => true, 
              "skip-missing-groups" => false, 
              "cache" => undefined 
            }
          }, 
          "username-to-dn" => {
            "username-filter" => { 
              "attribute" => "uid", 
              "base-dn" => "ou=Users,dc=jboss,dc=org", 
              "force" => true, 
              "recursive" => false, 
              "user-dn-attribute" => "dn", 
              "cache" => undefined 
            }
          } 
        }
      }, 
      "plug-in" => undefined, 
      "server-identity" => undefined 
    }
  }

5.4.2.2. キャッシュの有効化

注記

このセクション以降で使用される管理 CLI コマンドは、セキュリティーレルムの authentication セクション (authentication=ldap/) でキャッシュを設定します。また、承認セクションのキャッシュは、コマンドのパスの更新と同様の方法で設定できます。

キャッシュを有効化する管理 CLI コマンド

Copy to Clipboard Toggle word wrap
/core-service=management/security-realm=LDAPRealm/authentication=ldap/cache=by-access-time:add(eviction-time=300, cache-failures=true, max-cache-size=100)

このコマンドでは、退避時間 300 秒 (5 分)、最大キャッシュサイズ 100 個で、認証用の by-access-time キャッシュを追加します。さらに、検索に失敗した検索がキャッシュされます。または、by-search-time キャッシュを設定することもできます。

Copy to Clipboard Toggle word wrap
/core-service=management/security-realm=LDAPRealm/authentication=ldap/cache=by-search-time:add(eviction-time=300, cache-failures=true, max-cache-size=100)

5.4.2.3. 既存のキャッシュ検証

既存のキャッシュを確認する管理 CLI コマンド

Copy to Clipboard Toggle word wrap
/core-service=management/security-realm=LDAPRealm/authentication=ldap/cache=by-access-time:read-resource(include-runtime=true)

{
  "outcome" => "success",
  "result" => {
    "cache-failures" => true,
    "cache-size" => 1,
    "eviction-time" => 300,
    "max-cache-size" => 100
  }
}

include-runtime 属性は cache-size を追加し、これでキャッシュの現在のアイテム数が表示されます。上記の出力では、このアイテム数は 1 です。

5.4.2.4. 既存のキャッシュの内容のテスト

既存のキャッシュの内容をテストする管理 CLI コマンド

Copy to Clipboard Toggle word wrap
/core-service=management/security-realm=LDAPRealm/authentication=ldap/cache=by-access-time:contains(name=TestUserOne)

{
  "outcome" => "success",
  "result" => true
}

これは、TestUserOne のエントリーがキャッシュに存在することを示しています。

5.4.2.5. キャッシュのフラッシュ

キャッシュから 1 つの項目をフラッシュしたり、キャッシュ全体をフラッシュしたりすることができます。

アイテム 1 つをフラッシュする管理 CLI コマンド

Copy to Clipboard Toggle word wrap
/core-service=management/security-realm=LDAPRealm/authentication=ldap/cache=by-access-time:flush-cache(name=TestUserOne)

全キャッシュをフラッシュする管理 CLI コマンド

Copy to Clipboard Toggle word wrap
/core-service=management/security-realm=LDAPRealm/authentication=ldap/cache=by-access-time:flush-cache()

5.4.2.6. キャッシュの削除

キャッシュを削除する管理 CLI コマンド

Copy to Clipboard Toggle word wrap
/core-service=management/security-realm=LDAPRealm/authentication=ldap/cache=by-access-time:remove()

reload

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat, Inc.