bin/kc.[sh|bat] export --help
このガイドでは、JSONファイルを使用したレルムのインポートとエクスポートのさまざまなアプローチについて理解します。
単一ファイルへのエクスポートとインポートは、ファイルサイズが大きくなる可能性があります。そのため、データベースに500人以上のユーザーが含まれている場合は、単一のファイルではなく、ディレクトリにエクスポートしてください。ディレクトリプロバイダーは「ページ」(ユーザーのファイル)ごとに個別のトランザクションを使用するため、ディレクトリを使用する方がパフォーマンスが向上します。ファイルごとおよびトランザクションごとのユーザーのデフォルト数は50です。これを増やすと、実行時間が指数関数的に増加します。 |
kc.[sh|bat] import | export
コマンドを使用する前に、すべての Keycloak ノードを停止する必要があります。これにより、実行される操作に同時リクエストとの整合性の問題が発生しないことが保証されます。また、サーバーインスタンスと同じマシンからインポートまたはエクスポートコマンドを実行しても、ポートやその他の競合が発生しないことが保証されます。
以下の export
および import
コマンドを使用する場合、Keycloak はレルム、クライアント、ユーザー、およびその他のエンティティに関する情報が保存されているデータベースへの接続方法を知る必要があります。Keycloak の設定 で説明されているように、その情報はコマンドラインパラメータ、環境変数、または設定ファイルとして提供できます。各コマンドの利用可能なオプションについては、--help
コマンドラインオプションを使用してください。
構成オプションの一部は、ビルド時の構成オプションです。デフォルトでは、Keycloak はビルド時のパラメータの変更を検出した場合、export
および import
コマンドに対して自動的に再ビルドします。
Keycloak の設定 で概説されているように、build
コマンドを使用して最適化されたバージョンの Keycloak をビルドした場合、--optimized
コマンドラインオプションを使用して、Keycloak が起動時間の高速化のためにビルドチェックをスキップするようにします。これを行う場合は、コマンドラインからビルド時のオプションを削除し、ランタイムオプションのみを保持してください。
--optimized を使用しない場合は、import または export コマンドが暗黙的に最適化されたイメージを作成または更新することに注意してください。サーバーインスタンスと同じマシンからコマンドを実行している場合、これはサーバーの次回の起動に影響を与える可能性があります。 |
レルムをエクスポートするには、export
コマンドを使用できます。このコマンドを呼び出すときは、Keycloak サーバーインスタンスを起動しないでください。
bin/kc.[sh|bat] export --help
レルムをディレクトリにエクスポートするには、--dir <dir>
オプションを使用できます。
bin/kc.[sh|bat] export --dir <dir>
レルムをディレクトリにエクスポートすると、サーバーはエクスポートされるレルムごとに個別のファイルを作成します。
--users <strategy>
オプションを設定することで、ユーザーのエクスポート方法を設定することもできます。このオプションで使用できる値は次のとおりです。
different_files
ユーザーは、--users-per-file
で設定されたファイルあたりの最大ユーザー数に応じて、異なる JSON ファイルにエクスポートされます。これはデフォルト値です。
skip
ユーザーのエクスポートをスキップします。
realm_file
ユーザーはレルム設定と同じファイルにエクスポートされます。レルム名が「foo」の場合、これはレルムデータとユーザーを含む「foo-realm.json」になります。
same_file
すべてのユーザーが1つの明示的なファイルにエクスポートされます。そのため、レルムごとに2つの JSON ファイル(1つはレルムデータ、もう1つはユーザー)が生成されます。
different_files
戦略を使用してユーザーをエクスポートしている場合は、--users-per-file
オプションを設定することで、ファイルあたりのユーザー数を設定できます。デフォルト値は 50
です。
bin/kc.[sh|bat] export --dir <dir> --users different_files --users-per-file 100
レルムをファイルにエクスポートするには、--file <file>
オプションを使用できます。
bin/kc.[sh|bat] export --file <file>
レルムをファイルにエクスポートすると、サーバーは同じファイルを使用して、エクスポートされるすべてのレルムの構成を保存します。
エクスポートする特定のレルムを指定しない場合、すべてのレルムがエクスポートされます。単一のレルムをエクスポートするには、次のように --realm
オプションを使用できます。
bin/kc.[sh|bat] export [--dir|--file] <path> --realm my-realm
レルムをエクスポートすると、特定のファイル名規則が使用されます。これは、ディレクトリからのインポートまたは起動時のインポートでも使用する必要があります。インポートされるレルムファイルは、<レルム名>-realm.json という名前である必要があります。レルムに関連付けられた通常およびフェデレーションユーザーファイルは、<レルム名>-users-<ファイル番号>.json および <レルム名>-federated-users-<ファイル番号>.json という名前である必要があります。この規則を使用しないと、エラーが発生したり、ユーザーファイルがインポートされなかったりする可能性があります。
レルムをインポートするには、import
コマンドを使用できます。このコマンドを呼び出すときは、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
に設定されているため、レルムは常に新しい構成で上書きされます。
単一のファイルに以前にエクスポートされたレルムをインポートするには、次のように --file <file>
オプションを使用できます。
bin/kc.[sh|bat] import --file <file>
プレースホルダーを使用して、任意のレルム構成の環境変数から値を解決できます。
{
"realm": "${MY_REALM_NAME}",
"enabled": true,
...
}
上記の例では、MY_REALM_NAME
環境変数に設定された値が、realm
プロパティを設定するために使用されます。
--import-realm
オプションを使用すると、サーバーの起動時にレルムをインポートすることもできます。
bin/kc.[sh|bat] start --import-realm
--import-realm
オプションを設定すると、サーバーは data/import
ディレクトリからレルム構成ファイルをインポートしようとします。このディレクトリから読み取られるのは .json
拡張子を使用した通常のファイルのみで、サブディレクトリは無視されます。
Keycloak コンテナの場合、インポートディレクトリは /opt/keycloak/data/import です |
レルムがサーバーに既に存在する場合、インポート操作はスキップされます。この動作の主な理由は、レルムを再作成し、サーバーの再起動間で状態が失われる可能性を回避するためです。
レルムを再作成するには、サーバーを起動する前に明示的に import
コマンドを実行する必要があります。
管理コンソールを使用してレルムをインポートおよびエクスポートすることもできます。この機能は、管理コンソールがレルムの部分的なエクスポート機能のみを提供するため、前のセクションで説明した他の CLI オプションとは異なります。この場合、現在のレルム設定と、クライアント、ロール、グループなどの一部のリソースをエクスポートできます。この方法では、そのレルムのユーザーをエクスポートできません。
管理コンソールエクスポートを使用すると、レルムと選択されたリソースは常に realm-export.json という名前のファイルにエクスポートされます。また、パスワードやクライアントシークレットなどのすべての機密値は * 記号でマスクされます。 |
管理コンソールを使用してレルムをエクスポートするには、次の手順を実行します。
レルムを選択します。
メニューで レルム設定 をクリックします。
レルム設定画面の右上隅にある アクション メニューをポイントし、部分エクスポート を選択します。
レルム構成とともにリソースのリストが表示されます。
エクスポートするリソースを選択します。
エクスポート をクリックします。
管理コンソールからエクスポートされたレルムは、バックアップやサーバー間のデータ転送には適していません。バックアップまたはサーバー間のデータ転送に適しているのは CLI エクスポートのみです。 |
レルムに多数のグループ、ロール、およびクライアントが含まれている場合、操作によってサーバーがユーザーリクエストに応答しなくなる可能性があります。特に本番システムでは、この機能を慎重に使用してください。 |
同様の方法で、以前にエクスポートされたレルムをインポートできます。次の手順を実行します。
メニューで レルム設定 をクリックします。
レルム設定画面の右上隅にある アクション メニューをポイントし、部分インポート を選択します。
インポートするファイルを選択できるプロンプトが表示されます。このファイルに基づいて、レルム設定とともにインポートできるリソースが表示されます。
インポート をクリックします。
インポートされたリソースが既に存在する場合に Keycloak が行うべき処理を制御することもできます。これらのオプションが存在します。
インポートを中止します。
プロセスを中止せずに重複するリソースをスキップします
既存のリソースをインポートされるリソースに置き換えます。
管理コンソールの部分インポートは、CLI export コマンドによって作成されたファイルもインポートできます。言い換えれば、CLI によって作成されたフルエクスポートは、管理コンソールを使用してインポートできます。ファイルにユーザーが含まれている場合、それらのユーザーも現在のレルムにインポートするために利用可能になります。 |