第15章 データベースのインポートおよびエクスポート
Red Hat Single Sign-On には、データベース全体をエクスポートおよびインポートする機能があります。
Red Hat Single Sign-On データベース内の別の環境に移行するか、別のデータベースに移行することができます。エクスポート/ インポートはサーバーの起動時にトリガーされ、そのパラメーターは Java プロパティーを通過します。
サーバーの起動時にインポートおよびエクスポートトリガーがあるため、エクスポート/インポート時にサーバーまたはデータベースでアクションを実行しないでください。
データベースをエクスポート/インポートして、以下を行うことができます。
- ファイルシステムのディレクトリー。
- ファイルシステムの単一 JSON ファイル。
ディレクトリーからのインポート時には、ファイル名はこの命名規則に従う必要があります。
- <REALM_NAME>-realm.json.たとえば、acme-roadrunner-affairs という名前のレルムの場合は acme-roadrunner-affairs-realm.json などです。
- <REALM_NAME>-users-<INDEX>.json.たとえば、acme-roadrunner-affairs という名前のレルムの最初のユーザーのファイルの場合は acme-roadrunner-affairs-users-0.json などです。
ディレクトリーにエクスポートする場合は、各 JSON ファイルに保存されているユーザーの数を指定できます。
単一ファイルにエクスポートすると大きなファイルが作成される可能性があるため、データベースに 500 ユーザーを超えるユーザーが含まれている場合は、1 つのファイルではなく、ディレクトリーにエクスポートしてください。多くのユーザーをディレクトリーにインポートすると、ディレクトリープロバイダーは各ページ (ユーザーのファイル) に個別のトランザクションを使用するため、最適に実行されます。
ファイルごとのユーザー数とトランザクションごとのユーザー数は 5 ですが、この値を上書きできます。詳細は、keycloak.migration.usersPerFile を参照してください。
1 つのファイルへのエクスポートまたはインポートは 1 つのトランザクションを使用します。
暗号化されていないディレクトリーにエクスポートするには、次のコマンドを実行します。
bin/standalone.sh -Dkeycloak.migration.action=export -Dkeycloak.migration.provider=dir -Dkeycloak.migration.dir=<DIR TO EXPORT TO>
単一の JSON ファイルにエクスポートするには、以下を実行します。
bin/standalone.sh -Dkeycloak.migration.action=export -Dkeycloak.migration.provider=singleFile -Dkeycloak.migration.file=<FILE TO EXPORT TO>
同様に、エクスポート
ではなく -Dkeycloak.migration.action=import
をインポートする場合。以下に例を示します。
bin/standalone.sh -Dkeycloak.migration.action=import -Dkeycloak.migration.provider=singleFile -Dkeycloak.migration.file=<FILE TO IMPORT> -Dkeycloak.migration.strategy=OVERWRITE_EXISTING
その他のコマンドラインオプションには以下が含まれます。
- -Dkeycloak.migration.realmName
- このプロパティーを使用して、特に realm という名前のものをエクスポートします。このパラメーターを指定しないと、すべてのレルムがエクスポートされます。
- -Dkeycloak.migration.usersExportStrategy
このプロパティーは、ユーザーのエクスポート先を指定します。使用できる値を以下に示します。
- DIFFERENT_FILES - ユーザーは、1 ファイルあたりのユーザーの最大数に基づいて 異なるファイルにエクスポートします。DIFFERENT_FILES はこのプロパティーのデフォルト値です。
- SKIP - Red Hat Single Sign-On はユーザーのエクスポートを省略します。
- REALM_FILE: レルム設定と同じファイルにエクスポートします。このファイルは、レルムデータおよびユーザーを含む foo-realm.json と似ています。
- SamE_FILE - ユーザーは同じファイルにエクスポートしますが、レルムファイルとは異なります。結果は、レルムデータを含む foo-realm.json と、ユーザー foo-users.json と似ています。
- -Dkeycloak.migration.usersPerFile
- このプロパティーは、ファイルおよびデータベーストランザクションごとのユーザー数を指定します。デフォルトでは、この値は 50 です。keycloak.migration.usersExportStrategy が DIFFERENT_FILES の場合には、Red Hat Single Sign-On はこのプロパティーを使用します。
- -Dkeycloak.migration.strategy
- Red Hat Single Sign-On は、インポート時にこのプロパティーを使用します。同じ名前のレルムがデータベースにすでに存在する場合に続行する方法を指定します。
以下の値が使用できます。
- IGNORE_EXISTING - 同じ名前のレルムがすでに存在する場合、レルムはインポートしないでください。
- OVERWRITE_EXISTING - 既存のレルムを削除し、JSON ファイルから新しいデータでレルムを再度インポートします。この値を使用して、ある環境から別の環境に完全に移行します。
Red Hat Single Sign-On エクスポートにないファイルをインポートする場合は、keycloak.import
オプションを使用します。複数のレルムファイルをインポートする場合は、ファイル名のコンマ区切りリストを指定します。ファイル名の一覧は、Red Hat Single Sign-On が master レルムを初期化した後に行われるため、以前のケースよりも適しています。
例 :
- -Dkeycloak.import=/tmp/realm1.json
- -Dkeycloak.import=/tmp/realm1.json,/tmp/realm2.json
keycloak.migration.X
パラメーターで keycloak.import
パラメーターを使用することはできません。これらのパラメーターを同時に使用すると、Red Hat Single Sign-On は keycloak.import
パラメーターを無視します。keycloak.import
メカニズムは、Red Hat Single Sign-On にすでに存在するレルムを無視します。keycloak.import
メカニズムは開発の目的で便利ですが、柔軟性がある場合は keycloak.migration.X
パラメーターを使用します。
15.1. 管理コンソールのエクスポート/インポート
Red Hat Single Sign-On は、管理コンソールからほとんどのリソースをインポートし、ほとんどのリソースをエクスポートします。Red Hat Single Sign-On は、ユーザーのエクスポートをサポートしません。
Red Hat Single Sign-On は、エクスポートファイルにシークレットまたはプライベート情報が含まれる属性をマスクします。管理コンソールからのファイルのエクスポートは、サーバー間のバックアップやデータ転送には適していません。サーバー間のバックアップまたはデータ転送には、ブート時のエクスポートのみを使用できます。
エクスポート中に作成されたファイルを使用して、管理コンソールからインポートできます。レルムからエクスポートして別のレルムにインポートするか、あるサーバーからエクスポートして別のサーバーにインポートできます。
管理コンソールのエクスポート/インポートは、ファイルごとに 1 つのレルムのみが許可されます。
管理コンソールのインポートはリソースを上書きできます。特に実稼働サーバーではこの機能を使用してください。管理コンソールのエクスポート操作から取得する JSON ファイルには、シークレットの無効な値が含まれるため、データのインポートには適していません。
管理コンソールを使用してクライアント、グループ、およびロールをエクスポートできます。レルムのデータベースに多くのクライアント、グループ、およびロールが含まれている場合は、エクスポートに時間がかかる場合があり、Red Hat Single Sign-On サーバーがユーザー要求に応答しない可能性があります。特に実稼働サーバーではこの機能を使用してください。