第3章 サーバーのユーザーと管理インターフェイスのセキュア化


3.1. Elytron でのユーザー認証

3.1.1. デフォルト設定

デフォルトでは、JBoss EAP 管理インターフェイスはレガシーコア管理認証によってセキュア化されます。

例: デフォルト設定

/core-service=management/management-interface=http-interface:read-resource()
{
    "outcome" => "success",
    "result" => {
        "allowed-origins" => undefined,
        "console-enabled" => true,
        "http-authentication-factory" => undefined,
        "http-upgrade" => {"enabled" => true},
        "http-upgrade-enabled" => true,
        "sasl-protocol" => "remote",
        "secure-socket-binding" => undefined,
        "security-realm" => "ManagementRealm",
        "server-name" => undefined,
        "socket-binding" => "management-http",
        "ssl-context" => undefined
    }

JBoss EAP では、管理インターフェイスをセキュアにするために、elytron サブシステムで management-http-authentication および management-sasl-authentication を利用できます。

JBoss EAP をデフォルトの Elytron コンポーネントを使用するように更新するには、以下の手順に従います。

  1. management-http-authentication を使用するように、http-authentication-factory を設定します。

    /core-service=management/management-interface=http-interface:write-attribute(name=http-authentication-factory, value=management-http-authentication)
  2. management-sasl-authentication を使用するように sasl-authentication-factory を設定します。

    /core-service=management/management-interface=http-interface:write-attribute(name=http-upgrade.sasl-authentication-factory, value=management-sasl-authentication)
  3. security-realm の定義を解除します。

    /core-service=management/management-interface=http-interface:undefine-attribute(name=security-realm)
  4. 変更を有効にするには、JBoss EAP をリロードします。
reload

管理インターフェイスのセキュリティーは、elytron サブシステムによって提供されるデフォルトのコンポーネントを使用して保護されるようになりました。

3.1.1.1. Elytron HTTP 認証のデフォルト設定

http で管理インターフェイスにアクセスする場合 (Web ベースの管理コンソールを使用する場合など)、JBoss EAP は management-http-authentication http-authentication-factory を使用します。

/subsystem=elytron/http-authentication-factory=management-http-authentication:read-resource()
{
    "outcome" => "success",
    "result" => {
        "http-server-mechanism-factory" => "global",
        "mechanism-configurations" => [{
            "mechanism-name" => "DIGEST",
            "mechanism-realm-configurations" => [{"realm-name" => "ManagementRealm"}]
        }],
        "security-domain" => "ManagementDomain"
    }
}

management-http-authentication http-authentication-factory は ManagementDomain セキュリティードメインを使用するよう設定されます。

/subsystem=elytron/security-domain=ManagementDomain:read-resource()
{
    "outcome" => "success",
    "result" => {
        "default-realm" => "ManagementRealm",
        "permission-mapper" => "default-permission-mapper",
        "post-realm-principal-transformer" => undefined,
        "pre-realm-principal-transformer" => undefined,
        "principal-decoder" => undefined,
        "realm-mapper" => undefined,
        "realms" => [
            {
                "realm" => "ManagementRealm",
                "role-decoder" => "groups-to-roles"
            },
            {
                "realm" => "local",
                "role-mapper" => "super-user-mapper"
            }
        ],
        "role-mapper" => undefined,
        "trusted-security-domains" => undefined
    }
}

ManagementDomain セキュリティードメインは、プロパティーベースのレルムである ManagementRealm Elytron セキュリティーレルムによってサポートされます。

重要

プロパティーベースのレルムは、サーバーの起動時にのみ読み取られます。サーバーの起動後に、手動または add-user スクリプトを使用して追加したユーザーは、サーバーをリロードする必要があります。このリロードは、管理 CLI から reload コマンドを実行すると実行できます。

reload
/subsystem=elytron/properties-realm=ManagementRealm:read-resource()
{
    "outcome" => "success",
    "result" => {
        "groups-attribute" => "groups",
        "groups-properties" => {
            "path" => "mgmt-groups.properties",
            "relative-to" => "jboss.server.config.dir"
        },
        "plain-text" => false,
        "users-properties" => {
            "path" => "mgmt-users.properties",
            "relative-to" => "jboss.server.config.dir"
        }
    }
}

3.1.1.2. デフォルトの Elytron 管理 CLI 認証

デフォルトでは、管理 CLI (jboss-cli.sh) は remote+http で接続するように設定されます。

例: デフォルトの jboss-cli.xml

<jboss-cli xmlns="urn:jboss:cli:3.1">

    <default-protocol use-legacy-override="true">remote+http</default-protocol>

    <!-- The default controller to connect to when 'connect' command is executed w/o arguments -->
    <default-controller>
        <protocol>remote+http</protocol>
        <host>localhost</host>
        <port>9990</port>
    </default-controller>

これにより、HTTP 経由で接続が確立され、HTTP アップグレードを使用して通信プロトコルが Remoting に変更されます。HTTP アップグレード接続は、sasl-authentication-factory を使用して http-interfacehttp-upgrade セクションでセキュア化されます。

例: デフォルトコンポーネントの設定

/core-service=management/management-interface=http-interface:read-resource()
{
    "outcome" => "success",
    "result" => {
        "allowed-origins" => undefined,
        "console-enabled" => true,
        "http-authentication-factory" => "management-http-authentication",
        "http-upgrade" => {
            "enabled" => true,
            "sasl-authentication-factory" => "management-sasl-authentication"
        },
        "http-upgrade-enabled" => true,
        "sasl-protocol" => "remote",
        "secure-socket-binding" => undefined,
        "security-realm" => undefined,
        "server-name" => undefined,
        "socket-binding" => "management-http",
        "ssl-context" => undefined
    }
}

デフォルトの sasl-authentication-factory は management-sasl-authentication です。

/subsystem=elytron/sasl-authentication-factory=management-sasl-authentication:read-resource()
{
    "outcome" => "success",
    "result" => {
        "mechanism-configurations" => [
            {
                "mechanism-name" => "JBOSS-LOCAL-USER",
                "realm-mapper" => "local"
            },
            {
                "mechanism-name" => "DIGEST-MD5",
                "mechanism-realm-configurations" => [{"realm-name" => "ManagementRealm"}]
            }
        ],
        "sasl-server-factory" => "configured",
        "security-domain" => "ManagementDomain"
    }
}

management-sasl-authentication sasl-authentication-factory は、JBOSS-LOCAL-USERDIGEST-MD5 メカニズムを指定します。

DIGEST-MD5 で使用される ManagementRealm Elytron セキュリティーレルムは management-http-authentication http-authentication-factory で使用されるレルムと同じです。

例: JBOSS-LOCAL-USER レルム

/subsystem=elytron/identity-realm=local:read-resource()
{
    "outcome" => "success",
    "result" => {
        "attribute-name" => undefined,
        "attribute-values" => undefined,
        "identity" => "$local"
    }
}

local Elytron セキュリティーレリムは、ローカルユーザーに対するサイレント認証を処理します。

3.1.2. 新規アイデンティティーストアでの管理インターフェイスのセキュア化

  1. アイデンティティーストアのセキュリティードメインおよびサポートするセキュリティーレルム、デコーダー、またはマッパーを作成します。

    このプロセスについては、JBoss EAP アイデンティティー管理の設定方法Elytron サブシステム を参照してください。たとえば、ファイルシステムベースのアイデンティティーストアを使用して管理インターフェイスのセキュリティーを保護する場合は、ファイルシステムベースのアイデンティティーストアでの認証設定 の手順に従います。

  2. http-authentication-factory または masasl-authentication-factory を作成します。

    例: http-authentication-factory

    /subsystem=elytron/http-authentication-factory=example-http-auth:add(http-server-mechanism-factory=global, security-domain=exampleSD, mechanism-configurations=[{mechanism-name=DIGEST, mechanism-realm-configurations=[{realm-name=exampleManagementRealm}]}])

    例: sasl-authentication-factory

    /subsystem=elytron/sasl-authentication-factory=example-sasl-auth:add(sasl-server-factory=configured, security-domain=exampleSD, mechanism-configurations=[{mechanism-name=DIGEST-MD5, mechanism-realm-configurations=[{realm-name=exampleManagementRealm}]}])

  3. Pattern-filter を configured configurable-sasl-server-factory に追加します。

    例: GSSAPI の Configured configurable-sasl-server-factory への追加

    /subsystem=elytron/configurable-sasl-server-factory=configured:list-add(name=filters, value={pattern-filter=GSSAPI})

    これは任意の手順です。クライアントが HTTP 管理インターフェイスへの接続を試みると、JBoss EAP は HTTP 応答とともに状態コード 401 Unauthorized と、ダイジェストや GSSAPI などのサポートされる認証をリストする一連のヘッダーを返信します。詳細は、JBoss EAPセキュリティーアーキテクチャーHTTP インターフェイスによるローカルおよびリモートクライアント認証 を参照してください。

  4. 管理インターフェイスを更新して、http-authentication-factory または sasl-authentication-factory を使用します。

    例: http-authentication-factory の更新

    /core-service=management/management-interface=http-interface:write-attribute(name=http-authentication-factory, value=example-http-auth)
    
    reload

    例: sasl-authentication-factory の更新

    /core-service=management/management-interface=http-interface:write-attribute(name=http-upgrade.sasl-authentication-factory, value=example-sasl-auth)
    
    reload

    注記

    レガシーのコア管理認証を使用する場合は、http 管理インターフェイスのみを単一のレガシーセキュリティーレルムでセキュアにすることができます。これにより、HTTP および SASL 設定が単一のレガシーセキュリティーレルムに強制的に表示されます。elytron サブシステムを使用する場合は、http-authentication-factorysasl-authentication-factory を別々に設定し、http 管理インターフェイスの HTTP および SASL メカニズムをセキュアにするために個別のセキュリティードメインを使用できます。

注記

レガシーセキュリティーと Elytron で同等の実装を持つ複数の異なる属性が管理インターフェイスで設定されている場合は、Elytron 関連設定のみが使用されます。たとえば、レガシーセキュリティーに security-realm、Elytron に http-authentication-factory が設定されている場合、認証は http-authentication-factory 設定で処理されます。

注記

管理インターフェイスに http-authentication-factory または HTTP インターフェイスの sasl-authentication-factorysecurity-realm の両方が含まれていて、ssl-context が使用されていない場合、認証は Elytron によって処理され、SSL はレガシーセキュリティーレルムによって処理されます。

管理インターフェイスに security-realmssl-context の両方が含まれ、HTTP インターフェイスの http-authentication-factory または sasl-authentication-factory が使用されていない場合、認証はレガシーセキュリティーレルムによって処理され、SSL は Elytron によって処理されます。

3.1.3. サイレント認証の追加

デフォルトでは、JBoss EAP は local セキュリティーレルム経由でのサイレント認証として知られるローカルユーザーの認証メカニズムを提供します。詳細は サイレント認証 の項を参照してください。

サイレント認証は sasl-authentication-factory に追加する必要があります。

サイレント認証を既存の sasl-authentication-factory に追加するには、以下を実行します。

/subsystem=elytron/sasl-authentication-factory=example-sasl-auth:list-add(name=mechanism-configurations, value={mechanism-name=JBOSS-LOCAL-USER, realm-mapper=local})

reload

サイレント認証で sasl-server-factory を新たに作成するには、以下を実行します。

/subsystem=elytron/sasl-authentication-factory=example-sasl-auth:add(sasl-server-factory=configured,security-domain=ManagementDomain,mechanism-configurations=[{mechanism-name=DIGEST-MD5,mechanism-realm-configurations=[{realm-name=exampleManagementRealm}]},{mechanism-name=JBOSS-LOCAL-USER, realm-mapper=local}])

reload
注記

上記の例では、既存の ManagementDomain セキュリティードメインを使用していますが、他のセキュリティードメインを作成して使用することも可能です。セキュリティードメインの作成例は、JBoss EAP アイデンティティー管理の設定方法Elytron サブシステム を参照してください。

重要

Elytron セキュリティーが使用され、実際のアイデンティティーに対応しない認証名で JBOSS-LOCAL-USER SASL メカニズムを使用して認証試行を行うと、認証は失敗します。

レガシー security サブシステムを使用すると、JBOSS-LOCAL-USER のカスタムユーザー名を選択できます。ユーザー名を特殊アイデンティティーにマッピングすることで、認証が続行されます。

3.1.4. 認証済み管理ユーザーのアイデンティティーマッピング

elytron サブシステムを使用して管理インターフェイスをセキュアにする場合は、認証されたユーザーのアイデンティティーマッピング用の管理インターフェイスにセキュリティードメインを提供できます。これにより、認証されたユーザーは、管理インターフェイスにログインする際に適切なアイデンティティーとともに表示されます。

アプリケーションサーバーは、複数の種類の管理インターフェイスを公開します。各タイプのインターフェイスは、独立した authentication-factory に関連付けて、そのインターフェイスの認証要件を処理できます。

承認の決定を行うために、現在のセキュリティーアイデンティティーがセキュリティードメインから取得されます。返されたセキュリティーアイデンティティーには、そのセキュリティードメイン内で定義されたルールに基づいたロールマッピングおよびパーミッション割り当てが設定されます。

注記

多くの場合、共通のセキュリティードメインはすべての管理に使用されます。管理インターフェイスの認証および承認決定に使用されるセキュリティーアイデンティティーの取得に使用されます。このような場合、セキュリティードメインは管理インターフェイスの認証ファクトリーと関連付けられ、特別な access=identity を定義する必要はありません。

場合によっては、承認決定のアイデンティティーを取得するために異なるセキュリティードメインが使用されることがあります。ここでは、access=identity リソースが定義されます。これには、承認のためにアイデンティティーを取得するためのセキュリティードメインへの参照が含まれます。

以下の例では、管理インターフェイスを exampleSD Elytron セキュリティードメインでセキュリティー保護し、exampleManagementRealm として公開していることを前提としています。

アイデンティティーマッピングを定義するには、identity リソースを管理インターフェイスに追加します。

例: identity リソースの追加

/core-service=management/access=identity:add(security-domain=exampleSD)

identity リソースを追加すると、管理インターフェイスにアクセスするときに認証済みユーザーのアイデンティティーが表示されます。identity リソースが追加されない場合は、認証に使用されるセキュリティードメインのアイデンティティーが使用されます。

たとえば、user1 として管理 CLI にログインすると、アイデンティティーが適切に表示されます。

例: 管理 CLI から認証されたユーザーの ID の表示

:whoami
{
    "outcome" => "success",
    "result" => {"identity" => {"username" => "user1"}}
}

重要

identity リソースが追加され、レガシーセキュリティーレルムを使用して管理インターフェイスをセキュアにする場合、認証されたユーザーは常に anonymous のアイデンティティーを持ちます。identity リソースが削除されると、レガシーセキュリティーレルムから認証されたユーザーが適切なアイデンティティーとともに表示されます。

管理操作の承認は、access=identity に指定されたドメインであるセキュリティードメインを常に使用します。指定されていない場合は、認証に使用されるドメインになります。ロールマッピングは常にセキュリティードメインのコンテキストで使用されます。

現在のリクエストの identity リソースは、Elytron 設定を使用してマップされたロールのセットを返します。RBAC ベースのロールマッピング定義が使用されている場合、identity リソースのロールはグループとして取得され、管理 RoleMapping にフィードされて現在のリクエストの管理ロールを取得します。

表3.1 各種シナリオで使用する ID
シナリオNo access=identity definitionElytron security-domain を参照する access=identity

レガシーの security-realm を使用する HTTP 管理インターフェイス

接続からのアイデンティティー

サポートされないか、匿名のアイデンティティー

security-domain が関係する elytron HTTP 認証ファクトリーを使用した HTTP 管理インターフェイス

接続からのアイデンティティー

正常にインフローされた場合は、参照される security-domain からのアイデンティティー

レガシー security-realm を使用した HTTP アップグレードを含むネイティブ管理インターフェイス

接続からのアイデンティティー

サポートされないか、匿名のアイデンティティー

security-domain が関係する elytron SASL 認証ファクトリーを使用した、ネイティブ管理 (HTTP アップグレードを含む) インターフェイス

接続からのアイデンティティー

正常にインフローされた場合は、参照される security-domain からのアイデンティティー

注記

identity リソースで使用されるセキュリティードメインが認証からセキュリティードメインを信頼しない場合は、匿名のアイデンティティーが使用されます。

両方が同一のセキュリティーレルムを使用している場合は、identity リソースで使用されるセキュリティードメインは認証からセキュリティードメインを信頼する必要はありません。

信頼されるセキュリティードメインは推移的ではありません。

access=identity リソースが定義されていない場合は、管理インターフェイスに対して認証している際に確立されるアイデンティティーが使用されます。この場合、remoting サブシステム経由の接続またはアプリケーションの使用して確立されたアイデンティティーは使用できなくなります。

access=identity リソースが定義されていても、管理インターフェイスが使用するセキュリティードメインが異なり、インフロー元のドメインリストに記載さレテいない場合、アイデンティティーは確立されません。インフローは、認証中に確立されたアイデンティティーを使用して試行されます。この場合、remoting サブシステム経由の接続またはアプリケーションの使用して確立されたアイデンティティーは、この方法でインフローできなくなります。

重要

管理インターフェイスがレガシーセキュリティーレルムを使用してセキュア化された場合、アイデンティティーは複数の異なるセキュリティードメイン間で共有できなくなります。この場合、access=identity リソースを定義することはできません。そのため、認証中に確立されたアイデンティティーを直接使用できます。したがって、PicketBox を使用してセキュア化されたアプリケーションは identity リソースではサポートされていません。

3.1.5. 管理 CLI での Elytron クライアントの使用

管理 CLI は、JBoss EAP に接続する際にセキュリティー情報を提供するために Elytron Client を使用するように設定できます。

  1. Elytron で管理インターフェイスを保護します。

    管理 CLI とともに Elytron クライアントを使用するには、管理インターフェイスを Elytron でセキュアにする必要があります。Elytron で管理インターフェイスをセキュア化する方法の詳細は、Elytron でのユーザー認証 を参照してください。

  2. Elytron クライアント設定ファイルを作成します。

    認証設定が含まれる Elytron クライアント設定ファイルと、その設定を使用するためのルールを作成する必要があります。認証設定の作成の詳細は、JBoss EAP アイデンティティー管理の設定方法設定ファイルのアプローチ を参照してください。

    例: custom-config.xml

    <configuration>
        <authentication-client xmlns="urn:elytron:client:1.2">
            <authentication-rules>
                <rule use-configuration="configuration1">
                    <match-host name="localhost" />
                </rule>
            </authentication-rules>
            <authentication-configurations>
                <configuration name="configuration1">
                    <sasl-mechanism-selector selector="DIGEST-MD5" />
                    <providers>
                      <use-service-loader />
                    </providers>
                    <set-user-name name="user1" />
                    <credentials>
                        <clear-password password="password123" />
                    </credentials>
                    <set-mechanism-realm name="exampleManagementRealm" />
                 </configuration>
            </authentication-configurations>
        </authentication-client>
    </configuration>

  3. 管理 CLI スクリプトで Elytron クライアント設定ファイルを使用します。

    $ ./jboss-cli.sh -c  -Dwildfly.config.url=/path/to/custom-config.xml
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.