Solaris のシステム管理 (セキュリティサービス)

Kerberos データベースの管理

Kerberos データベースは、Kerberos の最も重要な構成要素であるため、適切に管理する必要があります。この節では、データベースのバックアップと復元、並列伝播の設定、stash ファイルの管理など、Kerberos データベースの管理についていくつかの手順を説明します。データベースを初期設定する手順については、マスター KDC を構成する方法 を参照してください。

Kerberos データベースのバックアップと伝播

マスター KDC の Kerberos データベースをスレーブ KDC に伝播する処理は、構成処理の中で最も重要なものの 1 つです。伝播の頻度が少ないと、マスター KDC とスレーブ KDC が同期しなくなります。マスター KDC に障害が発生した場合、スレーブ KDC は最新のデータベース情報を取得できません。また、負荷を分散するためにスレーブ KDC がマスター KDC として構成されている場合も、そのスレーブ KDC をマスター KDC として使用するクライアントは最新情報を取得できません。このため、Kerberos データベースの変更頻度に基づいて、伝播頻度を適切に設定する必要があります。

マスター KDC を構成するときは、cron ジョブ内に kprop_script コマンドを設定して、Kerberos データベースを /var/krb5/slave_datatrans ダンプファイルに自動的にバックアップし、それをスレーブ KDC に伝播します。ただし、他のファイルと同様に、Kerberos データベースは壊れることがあります。スレーブ KDC のデータが壊れた場合でも、次回のデータベース自動伝播によって最新のコピーがインストールされるため、影響が発生しないこともあります。ただし、マスター KDC のデータが壊れた場合は、壊れたデータベースが次回の伝播ですべてのスレーブ KDC に伝播されます。また、壊れたデータがバックアップされると、マスター KDC 上の壊れていない前回のバックアップファイルが上書きされます。

この場合、安全なバックアップコピーが存在しないため、cron ジョブを設定して slave_datatrans ダンプファイルを定期的に別の場所にコピーするか、kdb5_utildump コマンドを使用して別のバックアップコピーを作成することも必要です。これにより、データベースが壊れても、kdb5_util load コマンドを使用して、マスター KDC の最新のバックアップを復元することができます。

次の点も重要です。データベースダンプファイルには主体鍵が含まれているため、許可されないユーザーがアクセスできないように、ファイルを保護する必要があります。デフォルトでは、データベースダンプファイルの読み取り権および書き込み権は、root にだけ与えられます。許可されないアクセスから保護するには、 kprop コマンドだけを使用して、データベースダンプファイルを伝播します。この場合、転送するデータが暗号化されます。また、kprop はデータをスレーブ KDC だけに伝播するため、データベースダンプファイルが間違って許可されないホストに送信される可能性が最小限になります。


注意 – 注意 –

Kerberos データベースが伝播されたあとに更新され、次の伝播の前にデータベースが壊れた場合は、スレーブ KDC には更新が反映されません。この更新は失われます。このため、定期的に実行される伝播の前に重要な更新を追加した場合は、データの損失を回避するために手動でデータベースを伝播する必要があります。


kpropd.acl ファイル

KDC の kpropd.acl ファイルの各行には、ホスト主体名と、伝播された最新のデータベースの受信元となるシステムが指定されています。マスター KDC を使用してすべてのスレーブ KDC に伝播する場合は、各スレーブ KDC の kpropd.acl ファイルに対してマスター KDC の主体名だけを指定する必要があります。

ただし、このマニュアルの SEAM のインストールおよびインストール後の構成手順では、マスター KDC とスレーブ KDC に対して同じkpropd.acl ファイルを追加するように説明しています。このファイルには、すべての KDC ホスト主体名が含まれます。この構成を使用すると、伝播元の KDC が一時的に使用できなくなったときでも、任意の KDC から伝播することができます。また、すべての KDC に同一のコピーを保持すると、構成の管理が容易になります。

kprop_script コマンド

kprop_script コマンドは、kprop コマンドを使用して Kerberos データベースをほかの KDC に伝播します。 kprop_script コマンドをスレーブ KDC 上で実行すると、そのスレーブ KDC の Kerberos データベースのコピーがほかの KDC に伝播されます。kprop_script には、ホスト名のリストを引数として指定します。区切り文字は空白です。指定したホスト名は、伝播先の KDC になります。

kprop_script を実行すると、Kerberos データベースのバックアップが /var/krb5/slave_datatrans ファイルに作成され、指定した KDC にそのファイルがコピーされます。Kerberos データベースは、伝播が完了するまでロックされます。

Kerberos データベースをバックアップする方法

  1. マスター KDC 上でスーパーユーザーになります。

  2. kdb5_utildump コマンドを使用して、Kerberos データベースをバックアップします。


    # /usr/sbin/kdb5_util dump [-verbose] [-d dbname] [filename [principals...]]

    -verbose

    バックアップする各主体とポリシー名を出力する 

    dbname

    バックアップするデータベース名を定義する。指定したデータベース名には、.db が付加される。ファイルの絶対パスを指定できる。-d オプションを指定しない場合、デフォルトのデータベース名は /var/krb5/principal となる。実際には、/var/krb5/principal.db という名前に変換される

    filename

    データベースのバックアップに使用するファイルを定義する。ファイルの絶対パスを指定できる。ファイルを指定しなかった場合、データベースは標準出力にダンプされる 

    principal

    バックアップする主体を 1 つ以上定義する (区切り文字は空白)。主体名は完全指定形式にする必要がある。主体を指定しなかった場合、データベース全体がバックアップされる 

例 — Kerberos データベースのバックアップ

次の例では、Kerberos データベースは dumpfile と呼ばれるファイルにバックアップされます。-verbose オプションが指定されているため、各主体はバックアップされるときに出力されます。


# kdb5_util dump -verbose dumpfile 
kadmin/kdc1.eng.example.com@ENG.EXAMPLE.COM 
krbtgt/eng.example.com@ENG.EXAMPLE.COM 
kadmin/history@ENG.EXAMPLE.COM 
pak/admin@ENG.EXAMPLE.COM 
pak@ENG.EXAMPLE.COM
changepw/kdc1.eng.example.com@ENG.EXAMPLE.COM

次の例では、pak および pak/admin 主体が Kerberos データベースからバックアップされます。


# kdb5_util dump -verbose dumpfile pak/admin@ENG.EXAMPLE.COM pak@ENG.EXAMPLE.COM
pak/admin@ENG.EXAMPLE.COM
pak@ENG.EXAMPLE.COM

Kerberos データベースを復元する方法

  1. マスター KDC 上でスーパーユーザーになります。

  2. kdb_utilload コマンドを使用して、Kerberos データベースを復元します。


    # /usr/sbin/kdb5_util load [-verbose] [-d dbname] [-update] [filename] 

    -verbose

    復元する各主体とポリシー名を出力する 

    dbname

    復元するデータベース名を定義する。指定したデータベース名には、.db が付加される。ファイルの絶対パスを指定できる。-d オプションを指定しない場合、デフォルトのデータベース名は /var/krb5/principal となる。実際には、/var/krb5/principal.db という名前に変換される

    -update

    既存のデータベースを更新する。指定しない場合、新しいデータベースが作成されるか、既存のデータベースが上書きされる 

    filename

    データベースの復元に使用するファイルを定義する。ファイルの絶対パスを指定できる 

例 — Kerberos データベースの復元

次の例では、database1.db というデータベースが、dumpfile ファイルから現在のディレクトリに復元されます。-update オプションが指定されていないため、復元によって新しいデータベースが作成されます。


# kdb5_util load -d database1 dumpfile

Kerberos データベースをスレーブ KDC に手動で伝播する方法

この手順では、kprop コマンドを使用して、Kerberos データベースを伝播します。定期的に実行する cron ジョブ以外に、スレーブ KDC とマスター KDC を同期化する必要がある場合は、この手順を行います。また、kprop_script と異なり、kprop を使用した場合は、現在のデータベースバックアップだけを伝播できます。伝播する前に、Kerberos データベースの新しいバックアップは作成されません。

  1. マスター KDC 上でスーパーユーザーになります。

  2. (省略可能) kdb5_util コマンドを使用して、データベースをバックアップします。


    # /usr/sbin/kdb5_util dump /var/krb5/slave_datatrans
    
  3. kprop コマンドを使用して、データベースをスレーブ KDC に伝播します。


    # /usr/lib/krb5/kprop -f /var/krb5/slave_datatrans slave_KDC
    

定期的に実行する cron ジョブ以外に、データベースをバックアップし、そのファイルをスレーブ KDC に伝播する場合は、次のように kprop_script コマンドを使用することもできます。


# /usr/lib/krb5/kprop_script slave_KDC

並列伝播の設定

ほとんどの場合、マスター KDC は、Kerberos データベースをスレーブ KDC に伝播するときにだけ使用されます。使用するサイトに複数のスレーブ KDC が存在する場合は、伝播処理の負荷を分散させることもできます。この概念は、「並列伝播」と呼ばれます。

並列伝播を利用すると、複数のスレーブ KDC 間でマスター KDC の伝播処理を分散できます。処理を分散すると、伝播をより早く実行でき、マスター KDC の作業を軽減することができます。

たとえば、使用するサイトに 1 つのマスター KDC と 6 個のスレーブ KDC があるとします (図 9–2 参照)。 slave-1 から slave-3 で 1 つの論理グループを構成し、slave-4 から slave-6 で別の論理グループを構成しています。並列伝播を設定するには、マスター KDC がデータベースを slave-1slave-4 に伝播し、これらのスレーブ KDC がグループ内のスレーブ KDC にデータベースを伝播するようにします。

図 9–2 並列伝播の構成例

2 つの伝播スレーブを持つマスター KDC です。伝播スレーブはさらにそれぞれが持つ 2 つのスレーブに、マスター KDC データベースを伝播します。

並列伝播を設定する方法

ここでは、並列伝播の詳細な手順は説明しませんが、並列伝播を有効にする構成手順の概要を示します。

  1. マスター KDC 上で、cron ジョブ内の kprop_script エントリを変更して、次の伝播先のスレーブ KDC (伝播スレーブ) だけを引数に指定します。

  2. 伝播スレーブごとに、kprop_script エントリをその cron ジョブに追加し、伝播先のスレーブを引数に指定します。並列伝播を正しく行うには、伝播スレーブが新しい Kerberos データベースから伝播されたあとに、cron ジョブが実行されるように設定する必要があります。


    注 –

    伝播スレーブにかかる伝播時間は、ネットワークの帯域幅やデータベースのサイズなどの要因によって異なります。


  3. スレーブ KDC ごとに、伝播に必要なアクセス権を設定します。伝播元の KDC のホスト主体名を各スレーブ KDC の kpropd.acl ファイルに追加します。

例 — 並列伝播の設定

図 9–2 のマスター KDC の kprop_script エントリは、次のようになります。


0 3 * * * /usr/lib/krb5/kprop_script slave-1.example.com slave-4.example.com

slave-1kprop_script エントリは、次のようになります。


0 4 * * * /usr/lib/krb5/kprop_script slave-2.example.com slave-3.example.com

このスレーブの伝播は、マスターからの伝播が完了してから 1 時間後に開始します。

伝播スレーブの kpropd.acl ファイルには、次のエントリが含まれます。


host/master.example.com@EXAMPLE.COM

slave-1 から伝播されるスレーブ KDC の kpropd.acl ファイルには、次のエントリが含まれます。


host/slave-1.example.com@EXAMPLE.COM

stash ファイルの管理

stash ファイルには、Kerberos データベースのマスター鍵が含まれます。このファイルは、Kerberos データベースを作成すると自動的に作成されます。stash ファイルが壊れた場合は、 kdb5_util ユーティリティの stash コマンドを使用して、置き換えることができます。kdb5_utildestroy コマンドを使用して Kerberos データベースを削除したときは、stash ファイルも削除する必要があります。データベースを削除しても、stash ファイルは自動的に削除されないため、クリーンアップを完了するには、このファイルを削除する必要があります。

stash ファイルを削除する方法

  1. stash ファイルが配置されている KDC の上でスーパーユーザーになります。

  2. stash ファイルを削除します。


    # rm stash-file
    

    この例では、stash-file は stash ファイルのパスを示します。デフォルトでは、stash ファイルは /var/krb5/.k5.realm にあります。

stash ファイルを再作成する場合は、kdb5_util コマンドの -f オプションを使用します。