他の認証システムとの統合
Elasticsearchのセキュリティ機能でサポートされていない認証システムを使用している場合、ユーザーを認証するためにそれと対話するカスタムレルムを作成できます。カスタムレルムは、通常のElasticsearchプラグインの一部として読み込まれるSPI拡張として実装します。
カスタムレルムの実装
カスタムレルムの構造と実装を示すサンプルコードは、https://github.com/elastic/elasticsearch/tree/8.15/x-pack/qa/security-example-spi-extensionに提供されています。このコードを出発点として、自分のレルムを作成できます。
カスタムレルムを作成するには、次の手順が必要です:
- 1.
org.elasticsearch.xpack.security.authc.Realm
を拡張して、ユーザーを認証するために認証システムと通信します。 - 2. カスタムレルムを作成するために使用されるクラスで
org.elasticsearch.xpack.security.authc.Realm.Factory
インターフェースを実装します。 - 3. カスタムレルムを使用する際の認証失敗を処理するために
org.elasticsearch.xpack.security.authc.DefaultAuthenticationFailureHandler
を拡張します。
カスタムレルムをプラグインとしてパッケージ化するには:
- 1.
org.elasticsearch.xpack.core.security.SecurityExtension
を拡張するレルムの拡張クラスを実装します。そこで、次のメソッドの1つ以上をオーバーライドする必要があります:
Java
@Override
public Map<String, Factory> getRealms() {
...
}
#### Java
``````java
@Override
public AuthenticationFailureHandler getAuthenticationFailureHandler() {
...
}
`
#### Java
``````java
@Override
public List<String> getSettingsFilter() {
...
}
`
- 2*.* プラグインのビルド構成ファイルを作成します。Gradleを推奨します。
- 3*.* `````META-INF/services/org.elasticsearch.xpack.core.security.SecurityExtension`````拡張のための記述子ファイルを作成し、`````org.elasticsearch.xpack.core.security.SecurityExtension`````実装の完全修飾クラス名を含めます。
- 4*.* すべてを単一のzipファイルにまとめます。
## ユーザーを認証するためのカスタムレルムの使用
カスタムレルムを使用するには:
- 1*.* クラスター内の各ノードにレルム拡張をインストールします。`````bin/elasticsearch-plugin`````を`````install`````サブコマンドで実行し、拡張を含むzipファイルを指すURLを指定します。例えば:
#### Shell
``````shell
bin/elasticsearch-plugin install file:///<path>/my-realm-1.0.zip
`
- 2.
xpack.security.authc.realms
名前空間の下でelasticsearch.yml
に適切なレルムタイプのレルム構成を追加します。拡張によって定義されたタイプに一致する名前空間内でレルムを定義する必要があります。設定できるオプションは、カスタムレルムによって公開される設定に依存します。最低限、認証中にレルムが参照される順序を制御するためにorder
属性を明示的に設定する必要があります。また、各構成されたレルムが異なるorder
設定を持つことを確認する必要があります。2つ以上のレルムが同じorder
を持つ場合、ノードは起動に失敗します。elasticsearch.yml
でレルムを構成する場合、指定したレルムのみが認証に使用されます。native
またはfile
レルムも使用したい場合は、それらをレルムチェーンに含める必要があります。 - 3. Elasticsearchを再起動します。