第19章 レルムのインポートとエクスポート
レルムを JSON ファイルとしてインポートおよびエクスポートします。
この章では、JSON ファイルを使用してレルムをインポートおよびエクスポートするさまざまな方法を説明します。
19.1. インポート/エクスポートコマンド リンクのコピーリンクがクリップボードにコピーされました!
単一のファイルへのエクスポートやインポートは、ファイルが非常に大きくなり、エクスポート/インポートのプロセス中にメモリー不足を引き起こす可能性があります。データベースに 50,000 人以上のユーザーが含まれている場合は、単一のファイルではなくディレクトリーにエクスポートします。ファイルあたりのユーザー数のデフォルトは 50 ですが、必要に応じてさらに大きな値を使用することもできます。
import および export コマンドは、実質的にはサーバーを完全に起動する前に終了する、サーバーの起動プロセスです。現在、実行中のサーバーインスタンスと同じマシンから実行するようには設計されていないため、ポートやその他の競合が発生する可能性があります。
kc.[sh|bat] export コマンドを使用する前に、すべての Red Hat build of Keycloak ノードを停止することを推奨します。これにより、エクスポート中にユーザーまたはレルムが変更されても、結果に一貫性の問題が発生しなくなります。
オーバーライドオプションを指定して kc.[sh|bat] import コマンドを実行する前に、すべての Red Hat build of Keycloak ノードを停止する必要があります。このコマンドはキャッシュクラスターにアタッチされないため、レルムを上書きするとクラスター内のキャッシュに不整合が生じます。その結果、不整合または古い情報が表示され、使用されることになります。インポートコマンドでレルムを上書きする代わりに、インポートを実行する前に、管理 API を使用して上書きする必要があるレルムを削除することを検討してください。
19.1.1. データベース接続パラメーターのオプションを指定する リンクのコピーリンクがクリップボードにコピーされました!
以下の export および import コマンドを使用する場合、Red Hat build of Keycloak は、レルム、クライアント、ユーザー、およびその他のエンティティーに関する情報が保存されているデータベースに接続する方法を認識している必要があります。Red Hat build of Keycloak の設定 で説明されているように、その情報はコマンドラインパラメーター、環境変数、または設定ファイルとして提供できます。使用可能なオプションを確認するには、各コマンドに対して --help コマンドラインオプションを使用します。
設定オプションの一部は、ビルド時の設定オプションです。デフォルトでは、Red Hat build of Keycloak は、ビルド時のパラメーターにおける変更を検出すると、export および import コマンドに対して自動的に再ビルドします。
Red Hat build of Keycloak の設定 で説明されているように、build コマンドを使用して Red Hat build of Keycloak の最適化バージョンをビルドした場合は、コマンドラインオプション --optimized を使用して、起動時間を短縮するために Red Hat build of Keycloak がビルドチェックをスキップするようにします。その際には、コマンドラインからビルド時オプションを削除し、実行時オプションのみを保持します。
--optimized を使用しない場合、import または export コマンドによって最適化されたビルドが暗黙的に作成または更新される可能性があることに注意してください。サーバーインスタンスと同じマシンからこれらのコマンドを実行している場合は、サーバーの次回の起動に影響する可能性があります。
19.1.2. レルムをディレクトリーにエクスポートする リンクのコピーリンクがクリップボードにコピーされました!
レルムをエクスポートするには、export コマンドを使用します。このコマンドを呼び出すときに、Red Hat build of Keycloak サーバーインスタンスを開始しないでください。
bin/kc.[sh|bat] export --help
レルムをディレクトリーにエクスポートするには、--dir <dir> オプションを使用できます。
bin/kc.[sh|bat] export --dir <dir>
レルムをディレクトリーにエクスポートすると、サーバーはエクスポートされるレルムごとに個別のファイルを作成します。
19.1.2.1. ユーザーのエクスポート方法を設定する リンクのコピーリンクがクリップボードにコピーされました!
--users <strategy> オプションを設定することで、ユーザーのエクスポート方法も設定できます。このオプションで使用できる値は次のとおりです。
different_files-
--users-per-fileで設定したファイルあたりの最大ユーザー数に応じて、ユーザーを別々の json ファイルにエクスポートします。これはデフォルト値です。 skip- ユーザーのエクスポートをスキップします。
realm_file- ユーザーをレルム設定と同じファイルにエクスポートします。"foo" という名前のレルムの場合、レルムデータとユーザーを含む "foo-realm.json" になります。
same_file- すべてのユーザーを 1 つの明示的なファイルにエクスポートします。したがって、1 つのレルムに対して 2 つの json ファイル (レルムデータを含むファイルとユーザーを含むファイルを 1 つずつ) を取得することになります。
different_files ストラテジーを使用してユーザーをエクスポートしている場合は、--users-per-file オプションを設定することで、ファイルごとに必要なユーザー数を設定できます。デフォルト値は 50 です。
bin/kc.[sh|bat] export --dir <dir> --users different_files --users-per-file 100
19.1.3. レルムをファイルにエクスポートする リンクのコピーリンクがクリップボードにコピーされました!
レルムをファイルにエクスポートするには、--file <file> オプションを使用できます。
bin/kc.[sh|bat] export --file <file>
レルムをファイルにエクスポートする場合、サーバーは同じファイルを使用して、エクスポートされるすべてのレルムの設定を保存します。
19.1.4. 特定のレルムをエクスポートする リンクのコピーリンクがクリップボードにコピーされました!
エクスポートする特定のレルムを指定しない場合、すべてのレルムがエクスポートされます。単一のレルムをエクスポートする場合、次のように --realm オプションを使用できます。
bin/kc.[sh|bat] export [--dir|--file] <path> --realm my-realm
19.1.5. インポートファイルの命名規則 リンクのコピーリンクがクリップボードにコピーされました!
レルムをエクスポートするときには、特定のファイル名規則が使用されます。これは、ディレクトリーからのインポートや起動時のインポートにも使用する必要があります。インポートするレルムファイルの名前は、<realm name>-realm.json にする必要があります。レルムに関連付けられた通常ユーザーファイルとフェデレーションユーザーファイルの名前は、<realm-name>-users-<file number>.json および <realm-name>-federated-users-<file number>.json にする必要があります。この規則を使用しないと、エラーが発生したり、ユーザーファイルがインポートされなかったりします。
19.1.6. ディレクトリーからレルムをインポートする リンクのコピーリンクがクリップボードにコピーされました!
レルムをインポートするには、import コマンドを使用できます。このコマンドを呼び出すときに、Red Hat build of Keycloak サーバーインスタンスを開始しないでください。
bin/kc.[sh|bat] import --help
レルムをディレクトリーにエクスポートした後、次のように --dir <dir> オプションを使用してレルムをサーバーにインポートし直すことができます。
bin/kc.[sh|bat] import --dir <dir>
import コマンドを使用してレルムをインポートする場合、既存のレルムをスキップするかどうか、または新しい設定で既存のレルムをオーバーライドするかどうかを設定できます。そのためには、次のように --override オプションを設定します。
bin/kc.[sh|bat] import --dir <dir> --override false
デフォルトでは、--override オプションは true に設定されているため、レルムは常に新しい設定でオーバーライドされます。
19.1.7. ファイルからレルムをインポートする リンクのコピーリンクがクリップボードにコピーされました!
以前に単一のファイルでエクスポートしたレルムをインポートするには、次のように --file <file> オプションを使用できます。
bin/kc.[sh|bat] import --file <file>
19.1.8. レルム設定ファイル内で環境変数を使用する リンクのコピーリンクがクリップボードにコピーされました!
プレースホルダーを使用して、任意のレルム設定の環境変数の値を解決できます。
プレースホルダーを使用したレルム設定
{
"realm": "${MY_REALM_NAME}",
"enabled": true,
...
}
上記の例では、MY_REALM_NAME 環境変数に設定された値が realm プロパティーの設定に使用されます。
現在、参照できる環境変数に制限はありません。環境変数を使用して機密情報を伝達する場合は、プレースホルダー参照によって機密性の高い環境変数の値が不適切に公開されないように注意してください。