16.14. ポリシーベースの複号を使用して暗号化ボリュームの自動アンロックの設定
ポリシーベースの複号 (PBD) は、物理マシンおよび仮想マシンにおいて、ハードドライブで暗号化した root ボリュームおよびセカンダリーボリュームのロックを解除できるようにする一連の技術です。PBD は、ユーザーパスワード、TPM (Trusted Platform Module) デバイス、システムに接続する PKCS #11 デバイス (たとえばスマートカード) などのさまざまなロックの解除方法、もくしは特殊なネットワークサーバーを使用します。
PBD を使用すると、ポリシーにさまざまなロックの解除方法を組み合わせて、さまざまな方法で同じボリュームのロックを解除できるようにすることができます。RHEL における PBD の現在の実装は、Clevis フレームワークと、ピン と呼ばれるプラグインで構成されます。各ピンは、個別のアンロック機能を提供します。現在利用できるピンは以下のとおりです。
-
tang
- ネットワークサーバーを使用してボリュームのロックを解除できます -
tpm2
- TPM2 ポリシーを使用してボリュームのロックを解除できます -
sss
- Shamir's Secret Sharing (SSS) 暗号方式を使用して高可用性システムをデプロイできます
16.14.1. NBDE (Network-Bound Disk Encryption)
Network Bound Disc Encryption (NBDE) は、ポリシーベースの復号 (PBD) のサブカテゴリーであり、暗号化されたボリュームを特別なネットワークサーバーにバインドできるようにします。NBDE の現在の実装には、Tang サーバー自体と、Tang サーバー用の Clevis ピンが含まれます。
RHEL では、NBDE は次のコンポーネントとテクノロジーによって実装されます。
図16.1 LUKS1 で暗号化したボリュームを使用する場合の NBDE スキーム(luksmeta パッケージは、LUKS2 ボリュームには使用されません)
Tang は、ネットワークのプレゼンスにデータをバインドするためのサーバーです。セキュリティーが保護された特定のネットワークにシステムをバインドする際に利用可能なデータを含めるようにします。Tang はステートレスで、TLS または認証は必要ありません。エスクローベースのソリューション (サーバーが暗号鍵をすべて保存し、使用されたことがあるすべての鍵に関する知識を有する) とは異なり、Tang はクライアントの鍵と相互作用することはないため、クライアントから識別情報を得ることがありません。
Clevis は、自動化された復号用のプラグイン可能なフレームワークです。NBDE では、Clevis は、LUKS ボリュームの自動アンロックを提供します。clevis
パッケージは、クライアントで使用される機能を提供します。
Clevis ピン は、Clevis フレームワークへのプラグインです。このようなピンの 1 つは、NBDE サーバー (Tang) との相互作用を実装するプラグインです。
Clevis および Tang は、一般的なクライアントおよびサーバーのコンポーネントで、ネットワークがバインドされた暗号化を提供します。RHEL では、LUKS と組み合わせて使用され、ルートおよび非ルートストレージボリュームを暗号化および復号して、ネットワークにバインドされたディスク暗号化を実現します。
クライアントおよびサーバーのコンポーネントはともに José ライブラリーを使用して、暗号化および複号の操作を実行します。
NBDE のプロビジョニングを開始すると、Tang サーバーの Clevis ピンは、Tang サーバーの、アドバタイズされている非対称鍵のリストを取得します。もしくは、鍵が非対称であるため、Tang の公開鍵のリストを帯域外に配布して、クライアントが Tang サーバーにアクセスしなくても動作できるようにします。このモードは オフラインプロビジョニング と呼ばれます。
Tang 用の Clevis ピンは、公開鍵のいずれかを使用して、固有で、暗号論的に強力な暗号鍵を生成します。この鍵を使用してデータを暗号化すると、この鍵は破棄されます。Clevis クライアントは、使いやすい場所に、このプロビジョニング操作で生成した状態を保存する必要があります。データを暗号化するこのプロセスは プロビジョニング手順 と呼ばれています。
LUKS バージョン 2 (LUKS2) は、RHEL のデフォルトのディスク暗号化形式であるため、NBDE のプロビジョニング状態は、LUKS2 ヘッダーにトークンとして保存されます。luksmeta
パッケージによる NBDE のプロビジョニング状態は、LUKS1 で暗号化したボリュームにのみ使用されます。
Tang 用の Clevis ピンは、規格を必要とせずに LUKS1 と LUKS2 の両方をサポートします。Clevis はプレーンテキストファイルを暗号化できますが、ブロックデバイスの暗号化には cryptsetup
ツールを使用する必要があります。詳細については、 Encrypting block devices using LUKS を参照してください。
クライアントがそのデータにアクセスする準備ができると、プロビジョニング手順で生成したメタデータを読み込み、応答して暗号鍵を戻します。このプロセスは 復旧手順 と呼ばれます。
Clevis は、NBDE ではピンを使用して LUKS ボリュームをバインドしているため、自動的にロックが解除されます。バインドプロセスが正常に終了すると、提供されている Dracut アンロックを使用してディスクをアンロックできます。
kdump
カーネルクラッシュのダンプメカニズムが、システムメモリーのコンテンツを LUKS で暗号化したデバイスに保存するように設定されている場合には、2 番目のカーネル起動時にパスワードを入力するように求められます。
関連情報
- NBDE (Network-Bound Disk Encryption) テクノロジーの ナレッジベース記事
-
tang(8)
、clevis(1)
、jose(1)
およびclevis-luks-unlockers(7)
の man ページ - ナレッジベースの記事 How to set up Network-Bound Disk Encryption with multiple LUKS devices(Clevis + Tang unlocking)
16.14.2. 暗号化クライアント (Clevis) のインストール
この手順に従って、システムに Clevis プラグ可能フレームワークを使用してデプロイと起動を行います。
手順
暗号化されたボリュームを持つシステムに Clevis とそのピンをインストールするには、次のコマンドを実行します。
# yum install clevis
データを複号するには、
clevis decrypt
コマンドを実行して、JWE (JSON Web Encryption) 形式で暗号文を指定します。以下に例を示します。$ clevis decrypt < secret.jwe
関連情報
-
clevis(1)
の man ページ 引数を指定せずに
clevis
コマンドを実行した後の組み込み CLI ヘルプ$ clevis Usage: clevis COMMAND [OPTIONS] clevis decrypt Decrypts using the policy defined at encryption time clevis encrypt sss Encrypts using a Shamir's Secret Sharing policy clevis encrypt tang Encrypts using a Tang binding server policy clevis encrypt tpm2 Encrypts using a TPM2.0 chip binding policy clevis luks bind Binds a LUKS device using the specified policy clevis luks edit Edit a binding from a clevis-bound slot in a LUKS device clevis luks list Lists pins bound to a LUKSv1 or LUKSv2 device clevis luks pass Returns the LUKS passphrase used for binding a particular slot. clevis luks regen Regenerate clevis binding clevis luks report Report tang keys' rotations clevis luks unbind Unbinds a pin bound to a LUKS volume clevis luks unlock Unlocks a LUKS volume
16.14.3. SELinux を Enforcing モードで有効にした Tang サーバーのデプロイメント
この手順では、Enforcing モードの SELinux で限定サービスとして、カスタムポートで実行する Tang サーバーをデプロイします。
前提条件
-
policycoreutils-python-utils
パッケージおよび依存関係がインストールされている。 -
firewalld
サービスが実行している。
手順
tang
パッケージとその依存関係をインストールするには、root
で以下のコマンドを実行します。# yum install tang
7500/tcp などの不要なポートを選択し、
tangd
サービスがそのポートにバインドできるようにします。# semanage port -a -t tangd_port_t -p tcp 7500
ポートは 1 つのサービスのみで一度に使用できるため、すでに使用しているポートを使用しようとすると、
ValueError:Port already defined
エラーが発生します。ファイアウォールのポートを開きます。
# firewall-cmd --add-port=7500/tcp # firewall-cmd --runtime-to-permanent
tangd
サービスを有効にします。# systemctl enable tangd.socket
オーバーライドファイルを作成します。
# systemctl edit tangd.socket
以下のエディター画面で、
/etc/systemd/system/tangd.socket.d/
ディレクトリーにある空のoverride.conf
ファイルを開き、次の行を追加して、Tang サーバーのデフォルトのポートを、80 から、以前取得した番号に変更します。[Socket] ListenStream= ListenStream=7500
ファイルを保存して、エディターを終了します。
変更した設定を再読み込みします。
# systemctl daemon-reload
設定が機能していることを確認します。
# systemctl show tangd.socket -p Listen Listen=[::]:7500 (Stream)
tangd
サービスを開始します。# systemctl restart tangd.socket
tangd
が、systemd
のソケットアクティベーションメカニズムを使用しているため、最初に接続するとすぐにサーバーが起動します。最初の起動時に、一組の暗号鍵が自動的に生成されます。鍵の手動生成などの暗号化操作を実行するには、jose
ユーティリティーを使用します。
関連情報
-
tang(8)
、semanage(8)
、firewall-cmd(1)
、jose(1)
、systemd.unit(5)
およびsystemd.socket(5)
の man ページ
16.14.4. Tang サーバーの鍵のローテーションおよびクライアントでのバインディングの更新
以下の手順に従って、Tang サーバーの鍵をローテーションし、クライアントの既存のバインディングを更新します。鍵をローテートするのに適した間隔は、アプリケーション、鍵のサイズ、および組織のポリシーにより異なります。
したがって、nbde_server
RHEL システムロールを使用して、Tang 鍵をローテーションできます。詳細は 複数の Tang サーバー設定での nbde_server システムロールの使用 を参照してください。
前提条件
- Tang サーバーが実行している。
-
clevis
パッケージおよびclevis-luks
パッケージがクライアントにインストールされている。 -
RHEL 8.2 に、
clevis luks list
、clevis luks report
、およびclevis luks regen
が追加されていることに注意してください。
手順
/var/db/tang
鍵データベースディレクトリーのすべての鍵の名前の前に.
を指定して、アドバタイズメントに対して非表示にします。以下の例のファイル名は、Tang サーバーの鍵データベースディレクトリーにある一意のファイル名とは異なります。# cd /var/db/tang # ls -l -rw-r--r--. 1 root root 349 Feb 7 14:55 UV6dqXSwe1bRKG3KbJmdiR020hY.jwk -rw-r--r--. 1 root root 354 Feb 7 14:55 y9hxLTQSiSB5jSEGWnjhY8fDTJU.jwk # mv UV6dqXSwe1bRKG3KbJmdiR020hY.jwk .UV6dqXSwe1bRKG3KbJmdiR020hY.jwk # mv y9hxLTQSiSB5jSEGWnjhY8fDTJU.jwk .y9hxLTQSiSB5jSEGWnjhY8fDTJU.jwk
名前が変更され、Tang サーバーのアドバタイズに対してすべての鍵が非表示になっていることを確認します。
# ls -l total 0
Tang サーバーの
/var/db/tang
で/usr/libexec/tangd-keygen
コマンドを使用して新しい鍵を生成します。# /usr/libexec/tangd-keygen /var/db/tang # ls /var/db/tang 3ZWS6-cDrCG61UPJS2BMmPU4I54.jwk zyLuX6hijUy_PSeUEFDi7hi38.jwk
Tang サーバーが、以下のように新規キーペアから署名キーを公開していることを確認します。
# tang-show-keys 7500 3ZWS6-cDrCG61UPJS2BMmPU4I54
NBDE クライアントで
clevis luks report
コマンドを使用して、Tang サーバーでアドバタイズされた鍵が同じままかどうかを確認します。clevis luks list
コマンドを使用すると、関連するバインディングのあるスロットを特定できます。以下に例を示します。# clevis luks list -d /dev/sda2 1: tang '{"url":"http://tang.srv"}' # clevis luks report -d /dev/sda2 -s 1 ... Report detected that some keys were rotated. Do you want to regenerate luks metadata with "clevis luks regen -d /dev/sda2 -s 1"? [ynYN]
新しい鍵の LUKS メタデータを再生成するには、直前のコマンドプロンプトで
y
を押すか、clevis luks regen
コマンドを使用します。# clevis luks regen -d /dev/sda2 -s 1
すべての古いクライアントが新しい鍵を使用することを確認したら、Tang サーバーから古い鍵を削除できます。次に例を示します。
# cd /var/db/tang # rm .*.jwk
クライアントが使用している最中に古い鍵を削除すると、データが失われる場合があります。このような鍵を誤って削除した場合は、クライアントで clevis luks regen
コマンドを実行し、LUKS パスワードを手動で提供します。
関連情報
-
tang-show-keys(1)
、clevis-luks-list(1)
、clevis-luks-report(1)
、およびclevis-luks-regen(1)
の man ページ
16.14.5. Web コンソールで Tang 鍵を使用した自動アンロックの設定
Tang サーバーが提供する鍵を使用して、LUKS で暗号化したストレージデバイスの自動ロック解除を設定します。
前提条件
RHEL 8 Web コンソールがインストールされている。
詳細は、Web コンソールのインストールおよび有効化 を参照してください。
-
cockpit-storaged
パッケージがシステムにインストールされている。 -
cockpit.socket
サービスがポート 9090 で実行されている。 -
clevis
パッケージ、tang
パッケージ、およびclevis-dracut
パッケージがインストールされている。 - Tang サーバーが実行している。
手順
Web ブラウザーに以下のアドレスを入力して、RHEL Web コンソールを開きます。
https://localhost:9090
リモートシステムに接続する際に、localhost の部分をリモートサーバーのホスト名または IP アドレスに置き換えます。
- 認証情報を指定して、 をクリックします。 をクリックして、Tang サーバーを使用してロックを解除する暗号化されたデバイスの詳細をデプロイメントし、 をクリックします。
Keys セクションの をクリックして Tang キーを追加します。
Tang サーバーのアドレスと、LUKS で暗号化したデバイスのロックを解除するパスワードを指定します。
をクリックして確定します。以下のダイアログウインドウは、鍵ハッシュが一致することを確認するコマンドを提供します。
Tang サーバーのターミナルで、
tang-show-keys
コマンドを使用して、比較のためにキーハッシュを表示します。この例では、Tang サーバーはポート 7500 で実行されています。# tang-show-keys 7500 fM-EwYeiTxS66X3s1UAywsGKGnxnpll8ig0KOQmr9CM
Web コンソールと前述のコマンドの出力のキーハッシュが同じ場合は、
をクリックします。初期ブートシステムでディスクバインディングを処理できるようにするには、左側のナビゲーションバーの下部にある
をクリックし、次のコマンドを入力します。# yum install clevis-dracut # grubby --update-kernel=ALL --args="rd.neednet=1" # dracut -fv --regenerate-all
検証
新規に追加された Tang キーが
Keyserver
タイプの Keys セクションにリスト表示されていることを確認します。バインディングが初期ブートで使用できることを確認します。次に例を示します。
# lsinitrd | grep clevis clevis clevis-pin-sss clevis-pin-tang clevis-pin-tpm2 -rwxr-xr-x 1 root root 1600 Feb 11 16:30 usr/bin/clevis -rwxr-xr-x 1 root root 1654 Feb 11 16:30 usr/bin/clevis-decrypt ... -rwxr-xr-x 2 root root 45 Feb 11 16:30 usr/lib/dracut/hooks/initqueue/settled/60-clevis-hook.sh -rwxr-xr-x 1 root root 2257 Feb 11 16:30 usr/libexec/clevis-luks-askpass
16.14.6. 基本的な NBDE および TPM2 暗号化クライアント操作
Clevis フレームワークは、プレーンテキストファイルを暗号化し、JSON Web Encryption (JWE) 形式の暗号化テキストと LUKS 暗号化ブロックデバイスの両方を復号できます。Clevis クライアントは、暗号化操作に Tang ネットワークサーバーまたは Trusted Platform Module 2.0(TPM 2.0) チップのいずれかを使用できます。
次のコマンドは、プレーンテキストファイルが含まれる例で Clevis が提供する基本的な機能を示しています。また、NBDE または Clevis + TPM のデプロイメントのトラブルシューティングにも使用できます。
Tang サーバーにバインドされた暗号化クライアント
Clevis 暗号化クライアントが Tang サーバーにバインドサれることを確認するには、
clevis encrypt tang
サブコマンドを使用します。$ clevis encrypt tang '{"url":"http://tang.srv:port"}' < input-plain.txt > secret.jwe The advertisement contains the following signing keys: _OsIk0T-E2l6qjfdDiwVmidoZjA Do you wish to trust these keys? [ynYN] y
この例の URL (http://tang.srv:port) を、
tang
がインストールされているサーバーの URL に変更します。secret.jwe 出力ファイルには、JWE 形式で暗号化した暗号文が含まれます。この暗号文は input-plain.txt 入力ファイルから読み込まれます。また、設定に SSH アクセスなしで Tang サーバーとの非対話型の通信が必要な場合は、アドバタイズメントをダウンロードしてファイルに保存できます。
$ curl -sfg http://tang.srv:port/adv -o adv.jws
ファイルやメッセージの暗号化など、次のタスクには adv.jws ファイルのアドバタイズメントを使用します。
$ echo 'hello' | clevis encrypt tang '{"url":"http://tang.srv:port","adv":"adv.jws"}'
データを複号するには、
clevis decrypt
コマンドを実行して、暗号文 (JWE) を提供します。$ clevis decrypt < secret.jwe > output-plain.txt
TPM2.0 を使用する暗号化クライアント
TPM 2.0 チップを使用して暗号化するには、JSON 設定オブジェクト形式の引数のみが使用されている
clevis encrypt tpm2
サブコマンドを使用します。$ clevis encrypt tpm2 '{}' < input-plain.txt > secret.jwe
別の階層、ハッシュ、および鍵アルゴリズムを選択するには、以下のように、設定プロパティーを指定します。
$ clevis encrypt tpm2 '{"hash":"sha256","key":"rsa"}' < input-plain.txt > secret.jwe
データを復号するには、JSON Web Encryption (JWE) 形式の暗号文を提供します。
$ clevis decrypt < secret.jwe > output-plain.txt
ピンは、PCR (Platform Configuration Registers) 状態へのデータのシーリングにも対応します。このように、PCP ハッシュ値が、シーリング時に使用したポリシーと一致する場合にのみ、データのシーリングを解除できます。
たとえば、SHA-256 バンクに対して、インデックス 0 および 7 の PCR にデータをシールするには、以下を行います。
$ clevis encrypt tpm2 '{"pcr_bank":"sha256","pcr_ids":"0,7"}' < input-plain.txt > secret.jwe
PCR のハッシュは書き換えることができ、暗号化されたボリュームのロックを解除することはできなくなりました。このため、PCR の値が変更された場合でも、暗号化されたボリュームのロックを手動で解除できる強力なパスフレーズを追加します。
shim-x64
パッケージのアップグレード後にシステムが暗号化されたボリュームのロックを自動的に解除できない場合は、KCS の記事Clevis TPM2 no longer decrypts LUKS devices after a restartの手順に従ってください。
関連情報
-
clevis-encrypt-tang(1)
、clevis-luks-unlockers(7)
、clevis(1)
、およびclevis-encrypt-tpm2(1)
の man ページ 以下のように引数指定せずに
clevis
、clevis decrypt
およびclevis encrypt tang
コマンドを入力したときに表示される組み込み CLI。$ clevis encrypt tang Usage: clevis encrypt tang CONFIG < PLAINTEXT > JWE ...
16.14.7. LUKS で暗号化したボリュームの手動登録の設定
以下の手順に従って、NBDE を使用して LUKS で暗号化されたボリュームのロック解除を設定します。
前提条件
- Tang サーバーが実行されていて、使用できるようにしてある。
手順
LUKS で暗号化した既存のボリュームを自動的にアンロックするには、サブパッケージの
clevis-luks
をインストールします。# yum install clevis-luks
PBD 用 LUKS 暗号化ボリュームを特定します。次の例では、ブロックデバイスは /dev/sda2 と呼ばれています。
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 12G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 11G 0 part └─luks-40e20552-2ade-4954-9d56-565aa7994fb6 253:0 0 11G 0 crypt ├─rhel-root 253:0 0 9.8G 0 lvm / └─rhel-swap 253:1 0 1.2G 0 lvm [SWAP]
clevis luks bind
コマンドを使用して、ボリュームを Tang サーバーにバインドします。# clevis luks bind -d /dev/sda2 tang '{"url":"http://tang.srv"}' The advertisement contains the following signing keys: _OsIk0T-E2l6qjfdDiwVmidoZjA Do you wish to trust these keys? [ynYN] y You are about to initialize a LUKS device for metadata storage. Attempting to initialize it may result in data loss if data was already written into the LUKS header gap in a different format. A backup is advised before initialization is performed. Do you wish to initialize /dev/sda2? [yn] y Enter existing LUKS password:
このコマンドは、以下の 4 つの手順を実行します。
- LUKS マスター鍵と同じエントロピーを使用して、新しい鍵を作成します。
- Clevis で新しい鍵を暗号化します。
- LUKS2 ヘッダートークンに Clevis JWE オブジェクトを保存するか、デフォルト以外の LUKS1 ヘッダーが使用されている場合は LUKSMeta を使用します。
- LUKS を使用する新しい鍵を有効にします。
注記バインド手順では、空き LUKS パスワードスロットが少なくとも 1 つあることが前提となっています。そのスロットの 1 つを
clevis luks bind
コマンドが使用します。ボリュームは、現在、既存のパスワードと Clevis ポリシーを使用してロックを解除できます。
システムの起動プロセスの初期段階でディスクバインディングを処理するようにするには、インストール済みのシステムで
dracut
ツールを使用します。# yum install clevis-dracut
RHEL 8 では、Clevis はホスト固有の設定オプションを指定せずに汎用
initrd
(initial ramdisk) を生成し、カーネルコマンドラインにrd.neednet=1
などのパラメーターを自動的に追加しません。初期の起動時にネットワークを必要とする Tang ピンを使用する場合は、--hostonly-cmdline
引数を使用し、dracut
が Tang バインディングを検出するとrd.neednet=1
を追加します。# dracut -fv --regenerate-all --hostonly-cmdline
または、
/etc/dracut.conf.d/
に .conf ファイルを作成し、以下のようにhostonly_cmdline=yes
オプションを追加します。# echo "hostonly_cmdline=yes" > /etc/dracut.conf.d/clevis.conf
注記Clevis がインストールされているシステムで
grubby
ツールを使用して、システム起動時の早い段階で Tang ピンのネットワークを利用できるようにすることができます。# grubby --update-kernel=ALL --args="rd.neednet=1"
次に、
--hostonly-cmdline
なしでdracut
を使用できます。# dracut -fv --regenerate-all
検証
Clevis JWE オブジェクトが LUKS ヘッダーに適切に置かれていることを確認するには、
clevis luks list
コマンドを使用します。# clevis luks list -d /dev/sda2 1: tang '{"url":"http://tang.srv:port"}'
(DHCP を使用しない) 静的な IP 設定を持つクライアントに NBDE を使用するには、以下のように、手動でネットワーク設定を dracut
ツールに渡します。
# dracut -fv --regenerate-all --kernel-cmdline "ip=192.0.2.10::192.0.2.1:255.255.255.0::ens3:none"
もしくは、静的ネットワーク情報を使用して /etc/dracut.conf.d/
ディレクトリーに .conf ファイルを作成します。以下に例を示します。
# cat /etc/dracut.conf.d/static_ip.conf
kernel_cmdline="ip=192.0.2.10::192.0.2.1:255.255.255.0::ens3:none"
初期 RAM ディスクイメージを再生成します。
# dracut -fv --regenerate-all
関連情報
-
clevis-luks-bind(1)
およびdracut.cmdline(7)
の man ページ。 - RHEL Network boot options
16.14.8. TPM2.0 ポリシーを使用した LUKS で暗号化したボリュームの手動登録の設定
次の手順を使用して、Trusted Platform Module 2.0 (TPM 2.0) ポリシーを使用して LUKS 暗号化ボリュームのロック解除を設定します。
前提条件
- アクセス可能な TPM2.0 互換デバイス。
- システムが 64 ビット Intel アーキテクチャー、または 64 ビット AMD アーキテクチャーである。
手順
LUKS で暗号化した既存のボリュームを自動的にアンロックするには、サブパッケージの
clevis-luks
をインストールします。# yum install clevis-luks
PBD 用 LUKS 暗号化ボリュームを特定します。次の例では、ブロックデバイスは /dev/sda2 と呼ばれています。
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 12G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 11G 0 part └─luks-40e20552-2ade-4954-9d56-565aa7994fb6 253:0 0 11G 0 crypt ├─rhel-root 253:0 0 9.8G 0 lvm / └─rhel-swap 253:1 0 1.2G 0 lvm [SWAP]
clevis luks bind
コマンドを使用して、ボリュームを TPM 2.0 デバイスにバインドします。以下に例を示します。# clevis luks bind -d /dev/sda2 tpm2 '{"hash":"sha256","key":"rsa"}' ... Do you wish to initialize /dev/sda2? [yn] y Enter existing LUKS password:
このコマンドは、以下の 4 つの手順を実行します。
- LUKS マスター鍵と同じエントロピーを使用して、新しい鍵を作成します。
- Clevis で新しい鍵を暗号化します。
- LUKS2 ヘッダートークンに Clevis JWE オブジェクトを保存するか、デフォルト以外の LUKS1 ヘッダーが使用されている場合は LUKSMeta を使用します。
LUKS を使用する新しい鍵を有効にします。
注記バインド手順では、空き LUKS パスワードスロットが少なくとも 1 つあることが前提となっています。そのスロットの 1 つを
clevis luks bind
コマンドが使用します。あるいは、特定の Platform Configuration Registers (PCR) の状態にデータをシールする場合は、
clevis luks bind
コマンドにpcr_bank
とpcr_ids
値を追加します。以下に例を示します。# clevis luks bind -d /dev/sda2 tpm2 '{"hash":"sha256","key":"rsa","pcr_bank":"sha256","pcr_ids":"0,1"}'
警告PCR ハッシュ値がシール時に使用されるポリシーと一致し、ハッシュを書き換えることができる場合にのみ、データをアンシールできるため、PCR の値が変更された場合、暗号化されたボリュームのロックを手動で解除できる強力なパスフレーズを追加します。
shim-x64
パッケージのアップグレード後にシステムが暗号化されたボリュームのロックを自動的に解除できない場合は、KCS の記事Clevis TPM2 no longer decrypts LUKS devices after a restartの手順に従ってください。
- ボリュームは、現在、既存のパスワードと Clevis ポリシーを使用してロックを解除できます。
システムの起動プロセスの初期段階でディスクバインディングを処理するようにするには、インストール済みのシステムで
dracut
ツールを使用します。# yum install clevis-dracut # dracut -fv --regenerate-all
検証
Clevis JWE オブジェクトが LUKS ヘッダーに適切に置かれていることを確認するには、
clevis luks list
コマンドを使用します。# clevis luks list -d /dev/sda2 1: tpm2 '{"hash":"sha256","key":"rsa"}'
関連情報
-
clevis-luks-bind(1)
、clevis-encrypt-tpm2(1)
、およびdracut.cmdline(7)
の man ページ
16.14.9. LUKS で暗号化したボリュームからの Clevis ピンの手動削除
clevis luks bind
コマンドで作成されたメタデータを手動で削除する場合や、Clevis が追加したパスフレーズを含む鍵スロットを一掃するには、以下の手順を行います。
LUKS で暗号化したボリュームから Clevis ピンを削除する場合は、clevis luks unbind
コマンドを使用することが推奨されます。clevis luks unbind
を使用した削除手順は、1 回のステップで構成され、LUKS1 ボリュームおよび LUKS2 ボリュームの両方で機能します。以下のコマンド例は、バインディング手順で作成されたメタデータを削除し、/dev/sda2 デバイスの鍵スロット 1 を削除します。
# clevis luks unbind -d /dev/sda2 -s 1
前提条件
- Clevis バインディングを使用した LUKS 暗号化ボリューム。
手順
/dev/sda2 などのボリュームがどの LUKS バージョンであるかを確認し、Clevis にバインドされているスロットおよびトークンを特定します。
# cryptsetup luksDump /dev/sda2 LUKS header information Version: 2 ... Keyslots: 0: luks2 ... 1: luks2 Key: 512 bits Priority: normal Cipher: aes-xts-plain64 ... Tokens: 0: clevis Keyslot: 1 ...
上記の例では、Clevis トークンは 0 で識別され、関連付けられた鍵スロットは 1 です。
LUKS2 暗号化の場合は、トークンを削除します。
# cryptsetup token remove --token-id 0 /dev/sda2
デバイスが LUKS1 で暗号化されていて、
Version:1
という文字列がcryptsetup luksDump
コマンドの出力に含まれている場合は、luksmeta wipe
コマンドでこの追加手順を実行します。# luksmeta wipe -d /dev/sda2 -s 1
Clevis パスフレーズを含む鍵スロットを削除します。
# cryptsetup luksKillSlot /dev/sda2 1
関連情報
-
clevis-luks-unbind(1)
、cryptsetup(8)
、およびluksmeta(8)
の man ページ
16.14.10. キックスタートを使用して、LUKS で暗号化したボリュームの自動登録の設定
この手順に従って、LUKS で暗号化されたボリュームの登録に Clevis を使用する自動インストールプロセスを設定します。
手順
一時パスワードを使用して、LUKS 暗号化が有効になっているディスクを、
/boot
以外のすべてのマウントポイントで分割するように、キックスタートに指示します。パスワードは、登録プロセスの手順に使用するための一時的なものです。part /boot --fstype="xfs" --ondisk=vda --size=256 part / --fstype="xfs" --ondisk=vda --grow --encrypted --passphrase=temppass
OSPP 準拠のシステムには、より複雑な設定が必要であることに注意してください。次に例を示します。
part /boot --fstype="xfs" --ondisk=vda --size=256 part / --fstype="xfs" --ondisk=vda --size=2048 --encrypted --passphrase=temppass part /var --fstype="xfs" --ondisk=vda --size=1024 --encrypted --passphrase=temppass part /tmp --fstype="xfs" --ondisk=vda --size=1024 --encrypted --passphrase=temppass part /home --fstype="xfs" --ondisk=vda --size=2048 --grow --encrypted --passphrase=temppass part /var/log --fstype="xfs" --ondisk=vda --size=1024 --encrypted --passphrase=temppass part /var/log/audit --fstype="xfs" --ondisk=vda --size=1024 --encrypted --passphrase=temppass
関連する Clevis パッケージを
%packages
セクションに追加して、インストールします。%packages clevis-dracut clevis-luks clevis-systemd %end
- オプションで、必要に応じて暗号化されたボリュームのロックを手動で解除できるようにするには、一時パスフレーズを削除する前に強力なパスフレーズを追加します。詳細については、How to add a passphrase, key, or keyfile to an existing LUKS device の記事を参照してください。
clevis luks bind
を呼び出して、%post
セクションのバインディングを実行します。その後、一時パスワードを削除します。%post clevis luks bind -y -k - -d /dev/vda2 \ tang '{"url":"http://tang.srv"}' <<< "temppass" cryptsetup luksRemoveKey /dev/vda2 <<< "temppass" dracut -fv --regenerate-all %end
設定が起動初期にネットワークを必要とする Tang ピンに依存している場合、または静的 IP 設定の NBDE クライアントを使用している場合は、Configuring manual enrollment of LUKS-encrypted volumesに従って
dracut
コマンドを変更する必要があります。clevis luks bind
コマンドの-y
オプションは、RHEL 8.3 から使用できることに注意してください。RHEL 8.2 以前では、clevis luks bind
コマンドで-y
を-f
に置き換え、Tang サーバーからアドバタイズメントをダウンロードします。%post curl -sfg http://tang.srv/adv -o adv.jws clevis luks bind -f -k - -d /dev/vda2 \ tang '{"url":"http://tang.srv","adv":"adv.jws"}' <<< "temppass" cryptsetup luksRemoveKey /dev/vda2 <<< "temppass" dracut -fv --regenerate-all %end
警告cryptsetup luksRemoveKey
コマンドは、それを適用する LUKS2 デバイスがそれ以上に管理されるのを防ぎます。LUKS1 デバイスに対してのみdmsetup
コマンドを使用して、削除されたマスターキーを回復できます。
Tang サーバーの代わりに TPM 2.0 ポリシーを使用する場合は、同様の手順を使用できます。
関連情報
-
clevis(1)
、clevis-luks-bind(1)
、cryptsetup(8)
、およびdmsetup(8)
の man ページ - キックスタートを使用して Red Hat Enterprise Linux 8 のインストール
16.14.11. LUKS で暗号化されたリムーバブルストレージデバイスの自動アンロックの設定
この手順に従って、LUKS 暗号化 USB ストレージデバイスの自動ロック解除プロセスを設定します。
手順
USB ドライブなど、LUKS で暗号化したリムーバブルストレージデバイスを自動的にアンロックするには、
clevis-udisks2
パッケージをインストールします。# yum install clevis-udisks2
システムを再起動し、LUKS で暗号化したボリュームの手動登録の設定 に従って、
clevis luks bind
コマンドを使用したバインディング手順を実行します。以下に例を示します。# clevis luks bind -d /dev/sdb1 tang '{"url":"http://tang.srv"}'
LUKS で暗号化したリムーバブルデバイスは、GNOME デスクトップセッションで自動的にアンロックできるようになりました。Clevis ポリシーにバインドするデバイスは、
clevis luks unlock
コマンドでアンロックできます。# clevis luks unlock -d /dev/sdb1
Tang サーバーの代わりに TPM 2.0 ポリシーを使用する場合は、同様の手順を使用できます。
関連情報
-
clevis-luks-unlockers(7)
man ページ
16.14.12. 高可用性 NBDE システムのデプロイメント
Tang は、高可用性デプロイメントを構築する方法を 2 つ提供します。
- クライアントの冗長性 (推奨)
-
クライアントは、複数の Tang サーバーにバインドする機能を使用して設定する必要があります。この設定では、各 Tang サーバーに独自の鍵があり、クライアントは、このサーバーのサブセットに接続することで復号できます。Clevis はすでに、
sss
プラグインを使用してこのワークフローに対応しています。Red Hat は、高可用性のデプロイメントにこの方法を推奨します。 - 鍵の共有
-
冗長性を確保するために、Tang のインスタンスは複数デプロイできます。2 つ目以降のインスタンスを設定するには、
tang
パッケージをインストールし、SSH
経由でrsync
を使用してその鍵ディレクトリーを新規ホストにコピーします。鍵を共有すると鍵への不正アクセスのリスクが高まり、追加の自動化インフラストラクチャーが必要になるため、Red Hat はこの方法を推奨していません。
16.14.12.1. シャミアの秘密分散を使用した高可用性 NBDE
シャミアの秘密分散 (SSS) は、秘密を複数の固有のパーツに分割する暗号スキームです。秘密を再構築するには、いくつかのパーツが必要になります。数値はしきい値と呼ばれ、SSS はしきい値スキームとも呼ばれます。
Clevis は、SSS の実装を提供します。鍵を作成し、これをいくつかのパーツに分割します。各パーツは、SSS も再帰的に含む別のピンを使用して暗号化されます。また、しきい値 t
も定義します。NBDE デプロイメントで少なくとも t
の部分を復号すると、暗号化鍵が復元され、復号プロセスが成功します。Clevis がしきい値で指定されている数よりも小さい部分を検出すると、エラーメッセージが出力されます。
16.14.12.1.1. 例 1:2 台の Tang サーバーを使用した冗長性
次のコマンドは、2 台の Tang サーバーのうち少なくとも 1 台が使用可能な場合に、LUKS で暗号化されたデバイスを復号します。
# clevis luks bind -d /dev/sda1 sss '{"t":1,"pins":{"tang":[{"url":"http://tang1.srv"},{"url":"http://tang2.srv"}]}}'
上記のコマンドでは、以下の設定スキームを使用していました。
{ "t":1, "pins":{ "tang":[ { "url":"http://tang1.srv" }, { "url":"http://tang2.srv" } ] } }
この設定では、リストに記載されている 2 台の tang
サーバーのうち少なくとも 1 つが利用可能であれば、SSS しきい値 t
が 1
に設定され、clevis luks bind
コマンドが秘密を正常に再構築します。
16.14.13. NBDE ネットワークで仮想マシンのデプロイメント
clevis luks bind
コマンドは、LUKS マスター鍵を変更しません。これは、仮想マシンまたはクラウド環境で使用する、LUKS で暗号化したイメージを作成する場合に、このイメージを実行するすべてのインスタンスがマスター鍵を共有することを意味します。これにはセキュリティーの観点で大きな問題があるため、常に回避する必要があります。
これは、Clevis の制限ではなく、LUKS の設計原理です。シナリオでクラウド内のルートボリュームを暗号化する必要がある場合は、クラウド内の Red Hat Enterprise Linux の各インスタンスに対しても (通常はキックスタートを使用して) インストールプロセスを実行します。このイメージは、LUKS マスター鍵を共有しなければ共有できません。
仮想化環境で自動ロック解除をデプロイメントするには、lorax
や virt-install
などのシステムとキックスタートファイル (キックスタートを使用した LUKS 暗号化ボリュームの自動登録の設定参照) またはその他の自動プロビジョニングツールを使用して、各暗号化 VM に固有のマスターキーを確実に付与します。
関連情報
-
clevis-luks-bind(1)
man ページ
16.14.14. NBDE を使用してクラウド環境に自動的に登録可能な仮想マシンイメージの構築
自動登録可能な暗号化イメージをクラウド環境にデプロイすると、特有の課題が発生する可能性があります。他の仮想化環境と同様に、LUKS マスター鍵を共有しないように、1 つのイメージから起動するインスタンス数を減らすことが推奨されます。
したがって、ベストプラクティスは、どのパブリックリポジトリーでも共有されず、限られたインスタンスのデプロイメントのベースを提供するように、イメージをカスタマイズすることです。作成するインスタンスの数は、デプロイメントのセキュリティーポリシーで定義する必要があります。また、LUKS マスター鍵の攻撃ベクトルに関連するリスク許容度に基づいて決定する必要があります。
LUKS に対応する自動デプロイメントを構築するには、Lorax、virt-install などのシステムとキックスタートファイルを一緒に使用し、イメージ構築プロセス中にマスター鍵の一意性を確保する必要があります。
クラウド環境では、ここで検討する 2 つの Tang サーバーデプロイメントオプションが利用できます。まず、クラウド環境そのものに Tang サーバーをデプロイできます。もしくは、2 つのインフラストラクチャー間で VPN リンクを使用した独立したインフラストラクチャーで、クラウドの外に Tang サーバーをデプロイできます。
クラウドに Tang をネイティブにデプロイすると、簡単にデプロイできます。ただし、別のシステムの暗号文のデータ永続化層でインフラストラクチャーを共有します。Tang サーバーの秘密鍵および Clevis メタデータは、同じ物理ディスクに保存できる場合があります。この物理ディスクでは、暗号文データへのいかなる不正アクセスが可能になります。
このため、Red Hat は、データを保存する場所と、Tang が実行しているシステムを、物理的に分離させることを強く推奨します。クラウドと Tang サーバーを分離することで、Tang サーバーの秘密鍵が、Clevis メタデータと誤って結合することがないようにします。さらに、これにより、クラウドインフラストラクチャーが危険にさらされている場合に、Tang サーバーのローカル制御を提供します。
16.14.15. コンテナーとしての Tang のデプロイ
tang
コンテナーイメージは、OpenShift Container Platform (OCP) クラスターまたは別の仮想マシンで実行する Clevis クライアントの Tang-server 復号化機能を提供します。
前提条件
-
podman
パッケージとその依存関係がシステムにインストールされている。 -
podman login registry.redhat.io
コマンドを使用してregistry.redhat.io
コンテナーカタログにログインしている。詳細は、Red Hat コンテナーレジストリーの認証 を参照してください。 - Clevis クライアントは、Tang サーバーを使用して、自動的にアンロックする LUKS で暗号化したボリュームを含むシステムにインストールされている。
手順
registry.redhat.io
レジストリーからtang
コンテナーイメージをプルします。# podman pull registry.redhat.io/rhel8/tang
コンテナーを実行し、そのポートを指定して Tang 鍵へのパスを指定します。上記の例では、
tang
コンテナーを実行し、ポート 7500 を指定し、/var/db/tang
ディレクトリーの Tang 鍵へのパスを示します。# podman run -d -p 7500:7500 -v tang-keys:/var/db/tang --name tang registry.redhat.io/rhel8/tang
Tang はデフォルトでポート 80 を使用しますが、Apache HTTP サーバーなどの他のサービスと共存する可能性があることに注意してください。
(必要に応じて) セキュリティーを強化する場合は、Tang 鍵を定期的にローテーションします。
tangd-rotate-keys
スクリプトを使用できます。以下に例を示します。# podman run --rm -v tang-keys:/var/db/tang registry.redhat.io/rhel8/tang tangd-rotate-keys -v -d /var/db/tang Rotated key 'rZAMKAseaXBe0rcKXL1hCCIq-DY.jwk' -> .'rZAMKAseaXBe0rcKXL1hCCIq-DY.jwk' Rotated key 'x1AIpc6WmnCU-CabD8_4q18vDuw.jwk' -> .'x1AIpc6WmnCU-CabD8_4q18vDuw.jwk' Created new key GrMMX_WfdqomIU_4RyjpcdlXb0E.jwk Created new key _dTTfn17sZZqVAp80u3ygFDHtjk.jwk Keys rotated successfully.
検証
Tang サーバーが存在しているために自動アンロック用に LUKS で暗号化したボリュームが含まれているシステムで、Clevis クライアントが Tang を使用してプレーンテキストのメッセージを暗号化および復号化できることを確認します。
# echo test | clevis encrypt tang '{"url":"http://localhost:7500"}' | clevis decrypt The advertisement contains the following signing keys: x1AIpc6WmnCU-CabD8_4q18vDuw Do you wish to trust these keys? [ynYN] y test
上記のコマンド例は、localhost URL で Tang サーバーが利用できる場合にその出力の最後に
テスト
文字列を示し、ポート 7500 経由で通信します。
関連情報
-
podman(1)
、clevis(1)
およびtang(8)
の man ページ - Clevis および Tang を使用して LUKS で暗号化したボリュームの自動ロック解除の詳細は、ポリシーベースの複号を使用して暗号化ボリュームの自動アンロックの設定 を参照してください。
16.14.16. nbde_client
および nbde_server
システムロールの概要 (Clevis および Tang)
RHEL システムロールは、複数の RHEL システムをリモートで管理する一貫した設定インターフェイスを提供する Ansible ロールおよびモジュールの集合です。
RHEL 8.3 では、Clevis および Tang を使用した PBD (Policy-Based Decryption) ソリューションの自動デプロイメント用 Ansible ロールが導入されました。rhel-system-roles
パッケージには、これらのシステムロール、関連する例、リファレンスドキュメントが含まれます。
nbde_client
システムロールにより、複数の Clevis クライアントを自動的にデプロイできます。nbde_client
ロールは、Tang バインディングのみをサポートしており、現時点では TPM2 バインディングには使用できない点に留意してください。
nbde_client
ロールには、LUKS を使用して暗号化済みのボリュームが必要です。このロールは、LUKS 暗号化ボリュームの 1 つ以上の Network-Bound (NBDE) サーバー (Tang サーバー) へのバインドに対応します。パスフレーズを使用して既存のボリュームの暗号化を保持するか、削除できます。パスフレーズを削除したら、NBDE だけを使用してボリュームのロックを解除できます。これは、システムのプロビジョニング後に削除する必要がある一時鍵またはパスワードを使用して、ボリュームが最初に暗号化されている場合に役立ちます。
パスフレーズと鍵ファイルの両方を指定する場合には、ロールは最初に指定した内容を使用します。有効なバインディングが見つからない場合は、既存のバインディングからパスフレーズの取得を試みます。
PBD では、デバイスをスロットにマッピングするものとしてバインディングを定義します。つまり、同じデバイスに複数のバインディングを指定できます。デフォルトのスロットは 1 です。
nbde_client
ロールでは、state
変数も指定できます。新しいバインディングを作成するか、既存のバインディングを更新する場合は、present
を使用します。clevis luks bind
とは異なり、state: present
を使用してデバイススロットにある既存のバインディングを上書きすることもできます。absent
に設定すると、指定したバインディングが削除されます。
nbde_client
システムロールを使用すると、自動ディスク暗号化ソリューションの一部として、Tang サーバーをデプロイして管理できます。このロールは以下の機能をサポートします。
- Tang 鍵のローテーション
- Tang 鍵のデプロイおよびバックアップ
関連情報
-
NBDE (Network-Bound Disk Encryption) ロール変数の詳細は、
rhel-system-roles
パッケージをインストールし、/usr/share/doc/rhel-system-roles/nbde_client/
と/usr/share/doc/rhel-system-roles/nbde_server/
ディレクトリーのREADME.md
とREADME.html
ファイルを参照してください。 -
たとえば、system-roles Playbook の場合は、
rhel-system-roles
パッケージをインストールし、/usr/share/ansible/roles/rhel-system-roles.nbde_server/examples/
ディレクトリーを参照してください。 - RHEL システムロールの詳細は、Introduction to RHEL System Roles を参照してください。
16.14.17. 複数の Tang サーバーをセットアップするための nbde_server
システムロールの使用
以下の手順に従って、Tang サーバー設定を含む Ansible Playbook を準備および適用します。
前提条件
-
1 つ以上の マネージドノード (
nbde_server
システムロールで設定するシステム) へのアクセスおよびパーミッション。 コントロールノード (このシステムから Red Hat Ansible Core は他のシステムを設定) へのアクセスおよびパーミッション。
コントロールノードでは、
-
ansible-core
パッケージおよびrhel-system-roles
パッケージがインストールされている。
-
RHEL 8.0-8.5 では、別の Ansible リポジトリーへのアクセス権を指定されており、Ansible をベースにする自動化用の Ansible Engine 2.9 が含まれています。Ansible Engine には、ansible
、ansible-playbook
などのコマンドラインユーティリティー、docker
や podman
などのコネクター、プラグインとモジュールが多く含まれています。Ansible Engine を入手してインストールする方法については、ナレッジベースの How to download and install Red Hat Ansible Engine を参照してください。
RHEL 8.6 および 9.0 では、Ansible Core (ansible-core
パッケージとして提供) が導入されました。これには、Ansible コマンドラインユーティリティー、コマンド、およびビルトイン Ansible プラグインのセットが含まれています。RHEL は、AppStream リポジトリーを介してこのパッケージを提供し、サポート範囲は限定的です。詳細については、ナレッジベースの Scope of support for the Ansible Core package included in the RHEL 9 and RHEL 8.6 and later AppStream repositories を参照してください。
- マネージドノードが記載されているインベントリーファイルがある。
手順
Tang サーバーの設定が含まれる Playbook を準備します。ゼロから開始するか、
/usr/share/ansible/roles/rhel-system-roles.nbde_server/examples/
ディレクトリーにある Playbook のいずれかのサンプルを使用することができます。# cp /usr/share/ansible/roles/rhel-system-roles.nbde_server/examples/simple_deploy.yml ./my-tang-playbook.yml
選択したテキストエディターで Playbook を編集します。以下に例を示します。
# vi my-tang-playbook.yml
必要なパラメーターを追加します。以下の Playbook の例では、Tang サーバーのデプロイと鍵のローテーションを確実に実行します。
--- - hosts: all vars: nbde_server_rotate_keys: yes roles: - rhel-system-roles.nbde_server
終了した Playbook を適用します。
# ansible-playbook -i inventory-file my-tang-playbook.yml
ここで *
inventory-file
はインベントリーファイル、*logging-playbook.yml
は Playbook も置き換えます。
Clevis がインストールされているシステムで grubby
ツールを使用して、システム起動時の早い段階で Tang ピンのネットワークを利用できるようにするには、次のコマンドを実行します。
# grubby --update-kernel=ALL --args="rd.neednet=1"
関連情報
-
詳細は、
rhel-system-roles
パッケージをインストールして、/usr/share/doc/rhel-system-roles/nbde_server/
ディレクトリーおよびusr/share/ansible/roles/rhel-system-roles.nbde_server/
ディレクトリーを参照してください。
16.14.18. 複数の Clevis クライアントの設定に nbde_client
システムロールを使用
手順に従って、Clevis クライアント設定を含む Ansible Playbook を準備および適用します。
nbde_client
システムロールは、Tang バインディングのみをサポートします。これは、現時点では TPM2 バインディングに使用できないことを意味します。
前提条件
-
1 つ以上の マネージドノード (
nbde_client
システムロールで設定するシステム) へのアクセスおよびパーミッション。 - コントロールノード (このシステムから Red Hat Ansible Core は他のシステムを設定) へのアクセスおよびパーミッション。
- Ansible Core パッケージがコントロールマシンにインストールされている。
-
rhel-system-roles
パッケージが、Playbook を実行するシステムにインストールされている。
手順
Clevis クライアントの設定が含まれる Playbook を準備します。ゼロから開始するか、
/usr/share/ansible/roles/rhel-system-roles.nbde_client/examples/
ディレクトリーにある Playbook のいずれかのサンプルを使用することができます。# cp /usr/share/ansible/roles/rhel-system-roles.nbde_client/examples/high_availability.yml ./my-clevis-playbook.yml
選択したテキストエディターで Playbook を編集します。以下に例を示します。
# vi my-clevis-playbook.yml
必要なパラメーターを追加します。以下の Playbook の例では、2 つの Tang サーバーのうち少なくとも 1 台が利用可能な場合に、LUKS で暗号化した 2 つのボリュームを自動的にアンロックするように Clevis クライアントを設定します。
--- - hosts: all vars: nbde_client_bindings: - device: /dev/rhel/root encryption_key_src: /etc/luks/keyfile servers: - http://server1.example.com - http://server2.example.com - device: /dev/rhel/swap encryption_key_src: /etc/luks/keyfile servers: - http://server1.example.com - http://server2.example.com roles: - rhel-system-roles.nbde_client
終了した Playbook を適用します。
# ansible-playbook -i host1,host2,host3 my-clevis-playbook.yml
Clevis がインストールされているシステムで grubby
ツールを使用して、システム起動時の早い段階で Tang ピンのネットワークを利用できるようにするには、次のコマンドを実行します。
# grubby --update-kernel=ALL --args="rd.neednet=1"
関連情報
-
パラメーターの詳細と、NBDE Client システムロールに関する追加情報は、
rhel-system-roles
パッケージをインストールし、/usr/share/doc/rhel-system-roles/nbde_client/
および/usr/share/ansible/roles/rhel-system-roles.nbde_client/
ディレクトリーを参照してください。