第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 サーバーがユーザー要求に応答しない可能性があります。特に実稼働サーバーではこの機能を使用してください。