第23章 クラスタートラフィックのセキュリティー


23.1. ノードセキュリティーの設定 (ライブラリーモード)

ライブラリーモードでは、ノード認証は JGroups 設定で直接設定されます。JGroups を設定してノードがクラスターへの参加またはマージの際に相互に認証できるようにします。認証は SASL を使用し、SASL プロトコルを JGroups XML 設定に追加して有効にします。

SASL は、CallbackHandlers などの JAAS の概念に基づいて認証ハンドシェイクに必要な特定の情報を取得します。ユーザーはクライアント側とサーバー側の両方に CallbackHandlers を指定する必要があります。

重要

JAAS API はユーザー認証および承認の設定時にのみ利用でき、ノードのセキュリティーには利用できません。

以下の例は CallbackHandler クラスの実装方法を示しています。この例では、ログインとパスワードは、JBoss Data Grid の起動時に Java プロパティー経由で提供される値と照合してチェックされます。承認は、クラス ("test_user") で定義された role と照合してチェックされます。

コールバックハンドラークラス

public class SaslPropAuthUserCallbackHandler implements CallbackHandler {

   private static final String APPROVED_USER = "test_user";

   private final String name;
   private final char[] password;
   private final String realm;

   public SaslPropAuthUserCallbackHandler() {
      this.name = System.getProperty("sasl.username");
      this.password = System.getProperty("sasl.password").toCharArray();
      this.realm = System.getProperty("sasl.realm");
   }

   @Override
   public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
      for (Callback callback : callbacks) {
         if (callback instanceof PasswordCallback) {
            ((PasswordCallback) callback).setPassword(password);
         } else if (callback instanceof NameCallback) {
            ((NameCallback) callback).setName(name);
         } else if (callback instanceof AuthorizeCallback) {
            AuthorizeCallback authorizeCallback = (AuthorizeCallback) callback;
            if (APPROVED_USER.equals(authorizeCallback.getAuthorizationID())) {
               authorizeCallback.setAuthorized(true);
            } else {
               authorizeCallback.setAuthorized(false);
            }
         } else if (callback instanceof RealmCallback) {
            RealmCallback realmCallback = (RealmCallback) callback;
            realmCallback.setText(realm);
         } else {
            throw new UnsupportedCallbackException(callback);
         }
      }
   }

}
Copy to Clipboard Toggle word wrap

認証では、javax.security.auth.callback.NameCallback および javax.security.auth.callback.PasswordCallback コールバックを指定します。

承認では、認証に必要なコールバックと javax.security.sasl.AuthorizeCallback コールバックを指定します。

23.2. ライブラリーモードのノード承認

J Groups の SASL は認証プロセスでのみ関係します。ノードの承認を実装するには、例外を発生させ、サーバーコールバックハンドラー内で行います。

以下の例を示します。

ノード承認の実装

public class AuthorizingServerCallbackHandler implements CallbackHandler {

@Override
public void handle(Callback[] callbacks) throws IOException,
UnsupportedCallbackException {
        for (Callback callback : callbacks) {
            <!-- Additional configuration information here -->
            if (callback instanceof AuthorizeCallback) {
                AuthorizeCallback acb = (AuthorizeCallback) callback;
                if (!"myclusterrole".equals(acb.getAuthenticationID()))) {
                    throw new SecurityException("Unauthorized node " +user);
            }
            <!-- Additional configuration information here -->
        }
    }
}
Copy to Clipboard Toggle word wrap

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat