18.3.3. Tang サーバーのキー変更
以下の手順では、例として一意のキーが割り当てられた 3 つの Tang サーバーセットを使用します。
冗長な Tang サーバーを使用すると、ノードの自動起動に失敗する可能性が低減します。
Tang サーバーおよび関連付けられたすべての NBDE 暗号化ノードのキーは 3 つの手順を使用して、再生成します。
前提条件
- 1 つ以上のノードで機能する Network-Bound Disk Encryption(NBDE) をインストールしておく。
手順
- 新しい Tang サーバーキーを生成します。
- NBDE で暗号化された全ノードに新規キーを使用するようにキーを再生成します。
古い Tang サーバーキーを削除します。
注記NBDE で暗号化されたすべてのノードがキーの再生成を完了する前に古いキーを削除すると、それらのノードは他の設定済みの Tang サーバーに過度に依存するようになります。
図18.2 Tang サーバーのキー再生成のワークフロー例
18.3.3.1. 新しい Tang サーバーキーの生成 リンクのコピーリンクがクリップボードにコピーされました!
前提条件
- Tang サーバーを実行する Linux マシンのルートシェル。
Tang サーバーキーのローテーションを容易に検証するには、古いキーで小規模なテストファイルを暗号化します。
# echo plaintext | clevis encrypt tang '{"url":"http://localhost:7500”}' -y >/tmp/encrypted.oldkey暗号化が正常に完了し、ファイルを復号化して同じ文字列
plaintextを生成できることを確認します。# clevis decrypt </tmp/encrypted.oldkey
手順
Tang サーバーキーの保存先のディレクトリーを見つけてアクセスします。通常、これは
/var/db/tangディレクトリーです。現在公開されているキーのサムプリントを確認します。# tang-show-keys 7500出力例
36AHjNH3NZDSnlONLz1-V4ie6t8Tang サーバーのキーディレクトリーを入力します。
# cd /var/db/tang/現在の Tang サーバーキーをリスト表示します。
# ls -A1出力例
36AHjNH3NZDSnlONLz1-V4ie6t8.jwk gJZiNPMLRBnyo_ZKfK4_5SrnHYo.jwk通常の Tang サーバーの操作時に、このディレクトリーには、署名および検証用とキー派生用の 2 つの
.jwkファイルがあります。古いキーのアドバタイズを無効にします。
# for key in *.jwk; do \ mv -- "$key" ".$key"; \ doneNetwork-Bound Disk Encryption(NBDE) を使用する新規クライアント、またはキーを要求する新規クライアントには古いキーは表示されなくなりました。既存のクライアントは、削除されるまで以前のキーにアクセスして使用できます。Tang サーバーは、
.文字で始まる、UNIX の非表示ファイルに保存されているキーを読み取りますがアドバタイズはしません。新しいキーを生成します。
# /usr/libexec/tangd-keygen /var/db/tangこれらのファイルは非表示になり、新しいキーが存在するので、現在の Tang サーバーキーをリスト表示して古いキーがアドバタイズされなくなったことを確認します。
# ls -A1出力例
.36AHjNH3NZDSnlONLz1-V4ie6t8.jwk .gJZiNPMLRBnyo_ZKfK4_5SrnHYo.jwk Bp8XjITceWSN_7XFfW7WfJDTomE.jwk WOjQYkyK7DxY_T5pMncMO5w0f6E.jwkTang は、新しいキーを自動的にアドバタイズします。
注記より新しい Tang サーバーのインストールには、アドバタイズを無効にして新規キーを同時に生成するヘルパー
/usr/libexec/tangd-rotate-keysディレクトリーが含まれます。- 同じキー情報を共有するロードバランサーの背後で複数の Tang サーバーを実行している場合は、続行する前に、ここで加えた変更が一連のサーバー全体に適切に同期されていることを確認します。
検証
Tang サーバーが、古いキーではなく、新しいキーをアドバタイズすることを確認します。
# tang-show-keys 7500出力例
WOjQYkyK7DxY_T5pMncMO5w0f6Eアドバタイズされていない古いキーがまだ復号化要求に使用できることを確認します。
# clevis decrypt </tmp/encrypted.oldkey