Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

19.3. 規模の大きな組織での volume_key の使用

大規模な組織では、システム管理者の誰もが知っている単一のパスワードを使ってシステムごとに異なるパスワードを管理していくのは非現実的であるばかりでなく、セキュリティー上の危険も伴います。こうした状況に対応するため、volume_key では非対称暗号を使用します。これにより、コンピューター上の暗号化されたデータへのアクセスに必要なパスワードを知り得る人の人数を最小限に抑えることができます。
本セクションでは、暗号キーを保存する前の準備として必要な手順や、暗号キーを保存する方法、ボリュームへのアクセスを取り戻す方法、および緊急時のパスフレーズを設定する方法について説明します。

19.3.1. 暗号キーを保存するための準備

暗号キーを保存する前に、準備しておく必要のあることがいくつかあります。

手順19.3 準備

  1. X509 証明書とプライベートキーのペアを作成します。
  2. プライベートキーを他人に漏らしたりしない信頼できるユーザーを指定します。これらのユーザーはエスクローパケットを解読できるようになります。
  3. エスクローパケットの解読に使用するシステムを選択します。これらのシステムでプライベートキーを含む NSS データベースのセットアップを行います。
    プライベートキーが NSS データベースに作成されていない場合は、次の手順に従います。
    • 証明書とプライベートキーを PKCS#12 ファイルに保存します。
    • 次を実行します。
      certutil -d /the/nss/directory -N
      これで NSS データベースのパスワードを選択できるようになりました。各 NSS データベースには別々のパスワードを持たせることができるため、指定したユーザーがそれぞれ別々の NSS データベースを使用する場合はユーザー間で 1 つのパスワードを共有する必要はありません。
    • 次を実行します。
      pk12util -d /the/nss/directory -i the-pkcs12-file
  4. システムをインストールしているユーザーか、または既存のシステムにキーを保存しているユーザー全員に証明書を配信します。
  5. 保存したプライベートキー用にマシンおよびボリュームからそのキーの検索が可能なストレージを用意します。たとえば、マシン 1 台に対して 1 つのサブディレクトリーを持つ単純なディレクトリーでも、他のシステム管理タスクにも使用されるデータベースであっても構いません。

19.3.2. 暗号キーの保存

必要な準備が整ったら (「暗号キーを保存するための準備」 を参照)、次の手順で暗号キーを保存することができるようになります。

注記

このファイル内の全サンプルで /path/to/volume は LUKS デバイスになり、その中に含まれるプレーンテキストデバイスにはなりません。blkid -s type /path/to/volume を使用すると type="crypto_LUKS" が表示されるはずです。

手順19.4 暗号キーの保存

  1. 次を実行します。
    volume_key --save /path/to/volume -c /path/to/cert escrow-packet
  2. 生成した escrow-packet ファイルを準備したストレージに保存し、システムおよびボリュームに関連付けます。
この手順は手作業で行うこともできますが、システムインストールの一部としてスクリプト化して実行することもできます。

19.3.3. ボリュームへのアクセスの復元

暗号キーの保存 (「暗号キーを保存するための準備」 および 「暗号キーの保存」 を参照) が完了したら、必要に応じてドライバーへのアクセスを取り戻すことができます。

手順19.5 ボリュームへのアクセスの復元

  1. パケットのストレージからそのボリュームのエスクローパケットを取得して、指定ユーザーの 1 人が解読できるようにそのエスクローパケットを送信します。
  2. 指定ユーザーは次を実行します。
    volume_key --reencrypt -d /the/nss/directory escrow-packet-in -o escrow-packet-out
    NSS データベースのパスワードを入力した後に、指定ユーザーは暗号化する escrow-packet-out のパスフレーズを選択します。パスフレーズは毎回異なるものになっても構いません。このパスフレーズは、暗号キーが指定ユーザーから目的のシステムに移動する間のみ暗号キーを保護します。
  3. 指定ユーザーから escrow-packet-out ファイルとパスフレーズを受け取ります。
  4. レスキューモードなど、volume_key の実行が可能で、escrow-packet-out ファイルが利用可能な環境で目的のシステムを起動します。
  5. 次を実行します。
    volume_key --restore /path/to/volume escrow-packet-out
    指定ユーザーによって選択されたパケットのパスフレーズの入力と、ボリューム用の新しいパスフレーズの入力を求めるプロンプトが表示されます。
  6. 選択したボリュームパスフレーズでボリュームをマウントします。
忘れてしまった古いパスフレーズは cryptsetup luksKillSlot で削除し、暗号化しているボリュームの LUKS ヘッダー内のパスフレーズスロットを解放することができます。これは、cryptsetup luksKillSlot device key-slot を使って実行します。詳細とサンプルについては、cryptsetup --help でご覧ください。

19.3.4. 緊急時のパスフレーズの設定

状況によって (たとえば、出張中などの場合)、システム管理者が影響を受けたシステムを直接操作できないことがありますが、そのような場合でもユーザーはデータにアクセスしなければならないことがあります。その場合、volume_key をパスフレーズや暗号キーで動作させることができます。
システムのインストール時に次を実行します。
volume_key --save /path/to/volume -c /path/to/ert --create-random-passphrase passphrase-packet
ランダムなパスフレーズが生成され、指定したボリュームに追加されてから passphrase-packet に保存されます。--create-random-passphrase-o オプションを組み合わせるとパケットを同時に生成することが可能です。
ユーザーがパスワードを忘れてしまった場合、指定ユーザーは次を実行します。
volume_key --secrets -d /your/nss/directory passphrase-packet
ランダムなパスフレーズを表示します。このパスフレーズをエンドユーザーに渡します。