第9章 Identity Management のバックアップと復元

Red Hat Enterprise Linux Identity Management は、たとえばサーバーが正常に稼働しなくなった場合やデータを損失した場合などのために、IdM システムのバックアップと復元を手動で行うソリューションを提供しています。バックアップ時には、システムは IdM セットアップに関する情報を含むディレクトリを作成して保存します。復元時には、このバックアップディレクトリを使って元の IdM セットアップに戻すことができます。

重要

失われたレプリカを残りのサーバーのレプリカとして再インストールして、デプロイメントの残りのサーバーから IdM サーバーグループの損失部分を再構築できない場合にのみ、本章に記載のバックアップおよび復元の手順を使用するようにしてください。
"Backup and Restore in IdM/IPA" Knowledgebase solution では、複数のサーバーレプリカを維持することで損失を避ける方法について説明しています。既存のレプリカから同一データを使って再構築する方法が望ましいやり方です。バックアップバージョンには通常古い情報が含まれるので、無効になっている可能性があるからです。
バックアップと復元で回避できる脅威のシナリオには、以下のようなものがあります。
  • マシン上で致命的なハードゥエア障害が発生し、マシンが動作しなくなった場合は、次の操作を実行します。
    1. 最初からオペレーティングシステムを再インストールします。
    2. 同じホスト名、完全修飾ドメイン名 (FQDN)、IP アドレスでマシンを設定します。
    3. 元のシステム上に存在していた IdM に関連した IdM パッケージと同様、その他のオプションのパッケージをインストールします。
    4. IdM サーバーの完全なバックアップを復元します。
  • 分離されているマシンでのアップグレードが失敗した場合。オペレーティングシステムは機能しているものの、IdM データが破損しているため、IdM システムを正常起動時構成に戻す場合です。

    重要

    上記の 2 例のようにハードウェアの障害やアップグレードで失敗した際に、唯一の証明局 (CA) など、特別なロールが割り当てられたレプリカがなくなった場合や、すべてのレプリカがなくなった場合にのみバックアップから復元するようにしてください。同一データを持つ別のレプリカがまだある場合は、失われたレプリカを削除して、残りのレプリカから再構成することが推奨されます。
  • エントリーが削除されてしまい、それらを戻す場合など、LDAP コンテナーに望ましくない変更がされた場合。バックアップされた LDAP データを復元すると、IdM システム自体には影響せずに LDAP エントリーを元の状態に戻すことができます。
復元されたサーバーは、IdM の唯一の情報ソースになります。他のマスターサーバーは復元されたサーバーから再度初期化されます。最後のバックアップが実行された後に作成されたデータは失われます。このため、通常のシステムメンテナンスには、バックアップと復元の方法を使用すべきではありません。可能な場合は常に失われたサーバーをレプリカとして再インストールすることで再構成を行ってください。
バックアップおよび復元機能はコマンドラインからのみ操作が可能で、IdM Web UI では操作できません。

9.1. 完全なサーバーバックアップおよびデータのみのバックアップ

IdM は以下の 2 つのバックアップオプションを提供しています。
完全な IdM サーバーバックアップ
完全なサーバーバックアップでは、スタンドアローンバックアップとなる LDAP データのほかに、すべての IdM サーバーファイルのバックアップコピーが作成されます。IdM は数百のファイルに影響を及ぼします。バックアッププロセスでコピーされるファイルはディレクトリ全体と設定ファイルやログファイルなどの特定ファイルを合わせたもので、IdM に直接関連するものと、IdM が依存する様々なサービスに関連します。完全なサーバーバックアップは生ファイルのバックアップなので、これはオフラインで実行されます。完全なサーバーバックアップを実行するスクリプトは、IdM サービスすべてを停止して、バックアッププロセスの安全な実行を確保します。
完全なサーバーバックアップでコピーされるファイルとディレクトリの全一覧は、「バックアップ中にコピーされるディレクトリおよびファイル一覧」 を参照してください。
データのみのバックアップ
データのみのバックアップでは、LDAP データのバックアップコピーと changelog のみが作成されます。このプロセスでは IPA-REALM インスタンスのバックアップが作成され、さらに複数または単一のバックエンドをバックアップすることができます。バックエンドには、IPA バックエンドと CA Dogtag バックエンドが含まれます。このタイプのバックエンドは、LDIF (LDAP データ交換形式) で保存されている LDAP コンテンツのレコードもバックアップします。データのみのバックアップは、オフラインでもオンラインでも実行できます。
デフォルトでは、IdM は作成されたバックアップを /var/lib/ipa/backup/ ディレクトリに保存します。バックアップを含んでいるサブディレクトリの命名規則は以下のとおりです。
  • 完全なサーバーバックアップの場合は、GMT のタイムゾーンで ipa-full-YEAR-MM-DD-HH-MM-SS となります。
  • データのみのバックアップの場合は、GMT のタイムゾーンで ipa-data-YEAR-MM-DD-HH-MM-SS となります。

9.1.1. バックアップの作成

完全なサーバーバックアップもデータのみのバックアップも、ipa-backup ユーティリティーを使用して作成されます。これは常に root で実行する必要があります。
完全なサーバーバックアップを作成するには、ipa-backup を実行します。

重要

完全なサーバーバックアップのプロセスはオフラインで実行する必要があるため、すべての IdM サービスが停止されます。バックアップが終了すると、IdM サービスは再開します。
データのみのバックアップを作成するには、ipa-backup --data コマンドを実行します。
ipa-backup には以下のオプションを追加することができます。
  • --online は、オンラインでのバックアップを実行します。これはデータ専用のバックアップでのみ利用可能となります。
  • --logs は、バックアップに IdM サービスログファイルを含めます。
ipa-backup の使用に関する詳細情報は、ipa-backup(1) man ページを参照してください。

9.1.1.1. バックアップ中に関与したボリュームの容量不足の回避策

本項では、IdM バックアッププロセスに関与したディレクトリが、空き容量が不足しているボリュームに保存されている場合の問題の対処方法について説明します。

/var/lib/ipa/backup/ を含むボリューム上の空き容量不足

/var/lib/ipa/backup/ ディレクトリが空き容量が不足しているボリュームに保存され他場合は、バックアップを作成できません。問題に対処するには、以下のいずれかのワークアラウンドをお試しください。
  • 別のボリューム上でディレクトリを作成し、/var/lib/ipa/backup/ にリンクします。例えば、/home が、空き容量が十分にある別のボリュームに保存されている場合:
    1. /home/idm/backup/ などのディレクトリを作成します。
      # mkdir -p /home/idm/backup/
    2. 以下のパーミッションをディレクトリに設定します。
      # chown root:root /home/idm/backup/
      # chmod 700 /home/idm/backup/
    3. /var/lib/ipa/backup/ に既存のバックアップがある場合は、そのバックアップを新しいディレクトリに移動します。
      # mv /var/lib/ipa/backup/* /home/idm/backup/
    4. /var/lib/ipa/backup/ ディレクトリを削除します。
      # rm -rf /var/lib/ipa/backup/
    5. /home/idm/backup/ ディレクトリへの /var/lib/ipa/backup/ リンクを作成します。
      # ln -s /home/idm/backup/ /var/lib/ipa/backup/
  • 別のボリューム上に保存されているディレクトリを/var/lib/ipa/backup/ にマウントします。例えば、/home が、空き容量が十分にある別のボリュームに保存されている場合は、/home/idm/backup/ を作成し、/var/lib/ipa/backup/ にマウントします。
    1. /home/idm/backup/ ディレクトリを作成します。
      # mkdir -p /home/idm/backup/
    2. 以下のパーミッションをディレクトリに設定します。
      # chown root:root /home/idm/backup/
      # chmod 700 /home/idm/backup/
    3. /var/lib/ipa/backup/ に既存のバックアップがある場合は、そのバックアップを新しいディレクトリに移動します。
      # mv /var/lib/ipa/backup/* /home/idm/backup/
    4. /home/idm/backup//var/lib/ipa/backup/ にマウントします。
      # mount -o bind /home/idm/backup/ /var/lib/ipa/backup/
    5. システムのブート時に /home/idm/backup//var/lib/ipa/backup/ に自動的にマウントするには、/etc/fstab ファイルに以下を追加します。
      /home/idm/backup/     /var/lib/ipa/backup/     none     bind     0 0

/tmp を含むボリューム上の空き容量不足

/tmp ディレクトリの空き容量不足によりバックアップが失敗する場合は、 TMPDIR 環境変数を使用してバックアップ中に作成するステージされているファイルの場所を変更します。
# TMPDIR=/path/to/backup ipa-backup
詳細は、ipa-backup command fails to finishを参照してください。

9.1.2. バックアップの暗号化

IdM バックアップは、GNU Privacy Guard (GPG) を使って暗号化することができます。
GPG キーを作成するには、以下を実行します。
  1. たとえば、cat >keygen <<EOF を実行して、キーの詳細を含む keygen ファイルを作成します。そして、コマンドラインから必要となる暗号化詳細をファイルに提供します。
    [root@server ~]# cat >keygen <<EOF
    > %echo Generating a standard key
    > Key-Type: RSA
    > Key-Length:2048
    > Name-Real: IPA Backup
    > Name-Comment: IPA Backup
    > Name-Email: root@example.com
    > Expire-Date: 0
    > %pubring /root/backup.pub
    > %secring /root/backup.sec
    > %commit
    > %echo done
    > EOF
    [root@server ~]#
  2. backup という名前のキーペアを新規生成し、コマンド keygen のコンテンツを提供します。以下のコマンドでは、/root/backup.sec および /root/backup.pub というパス名のキーペアが生成されます。
    [root@server ~]# gpg --batch --gen-key keygen
    [root@server ~]# gpg --no-default-keyring --secret-keyring /root/backup.sec \
    		     --keyring /root/backup.pub --list-secret-keys
GPG 暗号化されたバックアップを作成するには、以下のオプションを使って生成されたbackup キーを ipa-backup に渡します。
  • --gpg は、ipa-backup に暗号化バックアップを実行するよう指示します。
  • --gpg-keyring=GPG_KEYRING は、ファイル拡張子なしで GPG keyring への完全パスを提供します。
以下に例を示します。
[root@server ~]# ipa-backup --gpg --gpg-keyring=/root/backup

注記

使用中のシステムが gpg2 ユーティリティーを使って GPG キーを生成している場合、問題が発生する可能性があります。これは、gpg2 が機能するには外部のプログラムを必要とするためです。この状況でコンソールのみからキーを生成するには、キーの生成前に pinentry-program /usr/bin/pinentry-curses の行を .gnupg/gpg-agent.conf ファイルに追加します。

9.1.3. バックアップ中にコピーされるディレクトリおよびファイル一覧

ディレクトリ
/usr/share/ipa/html
/root/.pki
/etc/pki-ca
/etc/pki/pki-tomcat
/etc/sysconfig/pki
/etc/httpd/alias
/var/lib/pki
/var/lib/pki-ca
/var/lib/ipa/sysrestore
/var/lib/ipa-client/sysrestore
/var/lib/ipa/dnssec
/var/lib/sss/pubconf/krb5.include.d/
/var/lib/authconfig/last
/var/lib/certmonger
/var/lib/ipa
/var/run/dirsrv
/var/lock/dirsrv
ファイル
/etc/named.conf
/etc/named.keytab
/etc/resolv.conf
/etc/sysconfig/pki-ca
/etc/sysconfig/pki-tomcat
/etc/sysconfig/dirsrv
/etc/sysconfig/ntpd
/etc/sysconfig/krb5kdc
/etc/sysconfig/pki/ca/pki-ca
/etc/sysconfig/ipa-dnskeysyncd
/etc/sysconfig/ipa-ods-exporter
/etc/sysconfig/named
/etc/sysconfig/ods
/etc/sysconfig/authconfig
/etc/ipa/nssdb/pwdfile.txt
/etc/pki/ca-trust/source/ipa.p11-kit
/etc/pki/ca-trust/source/anchors/ipa-ca.crt
/etc/nsswitch.conf
/etc/krb5.keytab
/etc/sssd/sssd.conf
/etc/openldap/ldap.conf
/etc/security/limits.conf
/etc/httpd/conf/password.conf
/etc/httpd/conf/ipa.keytab
/etc/httpd/conf.d/ipa-pki-proxy.conf
/etc/httpd/conf.d/ipa-rewrite.conf
/etc/httpd/conf.d/nss.conf
/etc/httpd/conf.d/ipa.conf
/etc/ssh/sshd_config
/etc/ssh/ssh_config
/etc/krb5.conf
/etc/ipa/ca.crt
/etc/ipa/default.conf
/etc/dirsrv/ds.keytab
/etc/ntp.conf
/etc/samba/smb.conf
/etc/samba/samba.keytab
/root/ca-agent.p12
/root/cacert.p12
/var/kerberos/krb5kdc/kdc.conf
/etc/systemd/system/multi-user.target.wants/ipa.service
/etc/systemd/system/multi-user.target.wants/sssd.service
/etc/systemd/system/multi-user.target.wants/certmonger.service
/etc/systemd/system/pki-tomcatd.target.wants/pki-tomcatd@pki-tomcat.service
/var/run/ipa/services.list
/etc/opendnssec/conf.xml
/etc/opendnssec/kasp.xml
/etc/ipa/dnssec/softhsm2.conf
/etc/ipa/dnssec/softhsm_pin_so
/etc/ipa/dnssec/ipa-ods-exporter.keytab
/etc/ipa/dnssec/ipa-dnskeysyncd.keytab
/etc/idm/nssdb/cert8.db
/etc/idm/nssdb/key3.db
/etc/idm/nssdb/secmod.db
/etc/ipa/nssdb/cert8.db
/etc/ipa/nssdb/key3.db
/etc/ipa/nssdb/secmod.db
ログファイルおよびディレクトリ
/var/log/pki-ca
/var/log/pki/
/var/log/dirsrv/slapd-PKI-IPA
/var/log/httpd
/var/log/ipaserver-install.log
/var/log/kadmind.log
/var/log/pki-ca-install.log
/var/log/messages
/var/log/ipaclient-install.log
/var/log/secure
/var/log/ipaserver-uninstall.log
/var/log/pki-ca-uninstall.log
/var/log/ipaclient-uninstall.log
/var/named/data/named.run