4.10. ポリシーベースの復号を使用して暗号化ボリュームの自動アンロックの設定
Policy-Based Decryption (PBD) は、ユーザーパスワード、Trusted Platform Module (TPM) デバイス、スマートカードなどのシステムに接続された PKCS#11 デバイス、または特殊なネットワークサーバーなどを使用した異なる方法を用いて、物理および仮想マシンのハードドライブの暗号化された root ボリュームとセカンダリーボリュームを解除できるテクノロジーのコレクションです。
テクノロジーとしての PBD を使用すると、さまざまなロック解除方法をポリシーに組み合わせて、同じボリュームをさまざまな方法でロック解除する機能を作成できます。現在、Red Hat Enterprise Linux に実装されている PBD は、Clevis フレームワークと pins と呼ばれるプラグインで設定されています。各ピンは、個別のアンロック機能を提供します。現在のところ、TPM によるボリュームのロック解除とネットワークサーバーによるロック解除の 2 つのピンしか用意されていません。
NBDE (Network Bound Disc Encryption) は、特定のネットワークサーバーに暗号化ボリュームをバインドできるようにする PBD テクノロジーのサブカテゴリーです。NBDE の現在の実装には、Tang サーバー用の Clevis ピンと Tang サーバー自体が含まれています。
4.10.1. NBDE (Network-Bound Disk Encryption) リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Network Bound Disk Encryption (NBDE) を使用すると、システムの再起動時にパスワードを手動で入力することなく、物理マシンおよび仮想マシンのハードドライブの root ボリュームを暗号化できます。
Red Hat Enterprise Linux 7 では、NBDE は以下のコンポーネントおよび技術により実装されます。
図4.2 Clevis と Tang を使用した Network-Bound Disk Encryption
Tang は、ネットワークのプレゼンスにデータをバインドするためのサーバーです。セキュリティーが保護された特定のネットワークにシステムをバインドする際に利用可能なデータを含めるようにします。Tang はステートレスで、TLS または認証は必要ありません。エスクローベースのソリューション (サーバーが暗号鍵をすべて保存し、使用されたことがあるすべての鍵に関する知識を有する) とは異なり、Tang はクライアントの鍵と相互作用することはないため、クライアントから識別情報を得ることがありません。
Clevis は、自動化された復号用のプラグイン可能なフレームワークです。NBDE では、Clevis は、LUKS ボリュームの自動アンロックを提供します。clevis パッケージは、クライアントで使用される機能を提供します。
Clevis ピン は、Clevis フレームワークへのプラグインです。このようなピンの 1 つは、NBDE サーバー (Tang) との相互作用を実装するプラグインです。
Clevis および Tang は、一般的なクライアントおよびサーバーのコンポーネントで、ネットワークがバインドされた暗号化を提供します。Clevis および Tang は、Red Hat Enterprise Linux 7 で LUKS と組み合わせて、root および非 root のストレージボリュームの暗号化および複号に使用し、NBDE を実現します。
クライアントおよびサーバーのコンポーネントはともに José ライブラリーを使用して、暗号化および複号の操作を実行します。
NBDE のプロビジョニングを開始すると、Tang サーバーの Clevis ピンは、Tang サーバーの、アドバタイズされている非対称鍵の一覧を取得します。もしくは、鍵が非対称であるため、Tang の公開鍵の一覧を帯域外に配布して、クライアントが Tang サーバーにアクセスしなくても動作できるようにします。このモードは オフラインプロビジョニング と呼ばれます。
Tang 用の Clevis ピンは、公開鍵のいずれかを使用して、固有で、暗号論的に強力な暗号鍵を生成します。この鍵を使用してデータを暗号化すると、この鍵は破棄されます。Clevis クライアントは、使いやすい場所に、このプロビジョニング操作で生成した状態を保存する必要があります。データを暗号化するこのプロセスは プロビジョニング手順 と呼ばれています。NBDE のプロビジョニング状態は、luksmeta パッケージを活用して LUKS ヘッダーに格納されます。
クライアントがそのデータにアクセスする準備ができると、プロビジョニング手順で生成したメタデータを読み込み、応答して暗号鍵を戻します。このプロセスは 復旧手順 と呼ばれます。
Clevis は、NBDE ではピンを使用して LUKS ボリュームをバインドしているため、自動的にロックが解除されます。バインドプロセスが正常に終了すると、提供されている Dracut アンロックを使用してディスクをアンロックできます。
ネットワーク接続が確立される前に起動する必要があるファイルシステムを含む
/tmp
ディレクトリー、/var
ディレクトリー、および /usr/local/
ディレクトリーなどのすべての LUKS 暗号化デバイスは、root ボリューム とみなされます。さらに、/var/log/
、var/log/audit/
、または /opt
など、ネットワークが起動する前に実行されるサービスが使用するすべてのマウントポイントは、ルートデバイスに切り替えた後に早期にマウントする必要があります。/etc/fstab
ファイルに _netdev
オプションがないため、root ボリュームを識別することもできます。
4.10.2. 暗号化クライアント (Clevis) のインストール リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Clevis のプラグ可能なフレームワークとピンを暗号化されたボリューム(クライアント)を備えたマシンにインストールするには、
root
で以下のコマンドを入力します。
yum install clevis
~]# yum install clevis
データを復号するには、clevis decrypt コマンドを使用して、暗号テキスト(JWE)を提供します。
clevis decrypt < JWE > PLAINTEXT
~]$ clevis decrypt < JWE > PLAINTEXT
詳細は、CLI ヘルプを参照してください。
4.10.3. SELinux を Enforcing モードで有効にした Tang サーバーのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Enterprise Linux 7.7 以降では、
tangd_port_t
SELinux タイプが提供され、Tang サーバーは、SELinux Enforcing モードで制限のあるサービスとしてデプロイできます。
前提条件
- policycoreutils-python-utils パッケージおよび依存関係がインストールされている。
手順
- tang パッケージとその依存関係をインストールするには、
root
で以下のコマンドを実行します。yum install tang
~]# yum install tang
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 7500/tcp などの不要なポートを選択し、tangd サービスがそのポートにバインドできるようにします。
semanage port -a -t tangd_port_t -p tcp 7500
~]# semanage port -a -t tangd_port_t -p tcp 7500
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ポートは一度に 1 つのサービスでのみ使用できるため、すでに使用しているポートを使用しようとすると、ValueError: Port already defined
というエラーメッセージが表示されます。 - ファイアウォールのポートを開きます。
firewall-cmd --add-port=7500/tcp firewall-cmd --runtime-to-permanent
~]# firewall-cmd --add-port=7500/tcp ~]# firewall-cmd --runtime-to-permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - systemd を使用して
tangd
サービスを有効にします。systemctl enable tangd.socket
~]# systemctl enable tangd.socket Created symlink from /etc/systemd/system/multi-user.target.wants/tangd.socket to /usr/lib/systemd/system/tangd.socket.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - オーバーライドファイルを作成します。
systemctl edit tangd.socket
~]# systemctl edit tangd.socket
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 以下のエディター画面で、
/etc/systemd/system/tangd.socket.d/
ディレクトリーにある空のoverride.conf
ファイルを開き、以下の行を追加して Tang サーバーのデフォルトポートを、80 から以前に取得した番号に変更します。[Socket] ListenStream= ListenStream=7500
[Socket] ListenStream= ListenStream=7500
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ファイルを保存して、エディターを終了します。 - 変更した設定を再読み込みし、
tangd
サービスを起動します。systemctl daemon-reload
~]# systemctl daemon-reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 設定が機能していることを確認します。
systemctl show tangd.socket -p Listen
~]# systemctl show tangd.socket -p Listen Listen=[::]:7500 (Stream)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow tangd
サービスを起動します。systemctl start tangd.socket
~]# systemctl start tangd.socket
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
tangd
は systemd
ソケットアクティベーションメカニズムを使用するため、サーバーは最初の接続を受け取るとすぐに起動します。最初の起動時に、一組の暗号鍵が自動的に生成されます。
キーの手動生成などの暗号化操作を実行するには、jose ユーティリティーを使用します。詳細は、jose -h コマンドを入力するか、man ページの
jose (1)
を参照してください。
例4.4 Tang 鍵のローテーション
鍵を定期的に変更することが重要です。鍵を変更するのに適した間隔は、アプリケーション、鍵サイズ、および組織のポリシーにより異なります。一般的な推奨事項はCryptographic Key Length Recommendation ページを参照してください。
キーをローテーションするには、キーデータベースディレクトリー(通常は
/var/db/tang
)の新しいキーの生成から開始します。たとえば、以下のコマンドを使用して、新しい署名を作成し、鍵を交換します。
DB=/var/db/tang jose jwk gen -i '{"alg":"ES512"}' -o $DB/new_sig.jwk jose jwk gen -i '{"alg":"ECMR"}' -o $DB/new_exc.jwk
~]# DB=/var/db/tang
~]# jose jwk gen -i '{"alg":"ES512"}' -o $DB/new_sig.jwk
~]# jose jwk gen -i '{"alg":"ECMR"}' -o $DB/new_exc.jwk
古いキーの名前を先頭に
.
に変更して、アドバタイズメントから非表示にします。以下の例のファイル名は、鍵データベースディレクトリーに実在する固有のファイル名とは異なります。
mv $DB/old_sig.jwk $DB/.old_sig.jwk mv $DB/old_exc.jwk $DB/.old_exc.jwk
~]# mv $DB/old_sig.jwk $DB/.old_sig.jwk
~]# mv $DB/old_exc.jwk $DB/.old_exc.jwk
Tang は、直ちにすべての変更を適用します。再起動は必要ありません。
この時点で、新しいクライアントバインディングは新しい鍵を選択し、以前のクライアントは古い鍵を使用し続けます。すべてのクライアントが新しい鍵を使用することを確認すると、古い鍵を削除できます。
警告
クライアントが使用している最中に古い鍵を削除すると、データが失われる場合があります。
4.10.3.1. 高可用性システムのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Tang は、高可用性デプロイメントを構築する方法を 2 つ提供します。
- クライアントの冗長性 (推奨)クライアントは、複数の Tang サーバーにバインドする機能を使用して設定する必要があります。この設定では、各 Tang サーバーは独自の鍵を持ち、クライアントはこれらのサーバーのサブセットに連絡することで復号化できます。Clevis は、
sss
プラグインを使用してこのワークフローをすでにサポートしています。この設定の詳細については、以下の man ページを参照してください。tang (8)
、High Availability セクションclevis (1)
の Shamir's Secret Sharing セクションclevis-encrypt-sss(1)
Red Hat は、高可用性のデプロイメントにこの方法を推奨します。 - 鍵の共有冗長性を確保するために、Tang のインスタンスは複数デプロイできます。2 番目以降のインスタンスを設定するには、tang パッケージをインストールし、SSH 経由で rsync を使用して鍵ディレクトリーを新規ホストにコピーします。鍵を共有すると鍵への不正アクセスのリスクが高まり、追加の自動化インフラストラクチャーが必要になるため、Red Hat はこの方法を推奨していません。
4.10.4. Tang を使用する NBDE システムへの暗号化クライアントのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
前提条件
- Clevis フレームワークがインストールされている。「暗号化クライアント (Clevis) のインストール」 を参照
- Tang サーバーまたはそのダウンロードされた広告が利用可能です。「SELinux を Enforcing モードで有効にした Tang サーバーのデプロイメント」 を参照
手順
Clevis 暗号化クライアントを Tang サーバーにバインドするには、clevis encrypt tang サブコマンドを使用します。
先ほどの例の http://tang.srv の URL を、tang がインストールされているサーバーの URL と一致するように変更します。JWE 出力ファイルには、暗号化された暗号文が含まれます。この暗号文は、PLAINTEXT 入力ファイルから読み込まれます。
データを復号するには、clevis decrypt コマンドを使用して、暗号テキスト(JWE)を提供します。
clevis decrypt < JWE > PLAINTEXT
~]$ clevis decrypt < JWE > PLAINTEXT
詳細は、man ページの
clevis-encrypt-tang (1)
を参照するか、同梱の CLI ヘルプを使用します。
4.10.5. TPM 2.0 ポリシーを使用した暗号化クライアントのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
64 ビット Intel または 64 ビットの AMD アーキテクチャーのシステムでは、Trusted Platform Module 2.0 (TPM 2.0)チップを使用して暗号化するクライアントをデプロイするには、JSON 設定オブジェクトの形式で唯一の引数を指定して clevis encrypt tpm2 サブコマンドを使用します。
clevis encrypt tpm2 '{}' < PLAINTEXT > JWE
~]$ clevis encrypt tpm2 '{}' < PLAINTEXT > JWE
別の階層、ハッシュ、および鍵アルゴリズムを選択するには、以下のように、設定プロパティーを指定します。
clevis encrypt tpm2 '{"hash":"sha1","key":"rsa"}' < PLAINTEXT > JWE
~]$ clevis encrypt tpm2 '{"hash":"sha1","key":"rsa"}' < PLAINTEXT > JWE
データを復号するには、暗号文 (JWE) を提供します。
clevis decrypt < JWE > PLAINTEXT
~]$ clevis decrypt < JWE > PLAINTEXT
ピンは、PCR (Platform Configuration Registers) 状態へのデータのシーリングにも対応します。このように、PCP ハッシュ値が、シーリング時に使用したポリシーと一致する場合にのみ、データのシーリングを解除できます。
たとえば、SHA1 バンクに対して、インデックス 0 および 1 の PCR にデータをシールするには、以下を行います。
clevis encrypt tpm2 '{"pcr_bank":"sha1","pcr_ids":"0,1"}' < PLAINTEXT > JWE
~]$ clevis encrypt tpm2 '{"pcr_bank":"sha1","pcr_ids":"0,1"}' < PLAINTEXT > JWE
詳細と可能な設定プロパティーの一覧は、man ページの
clevis-encrypt-tpm2 (1)
を参照してください。
4.10.6. root ボリュームの手動登録の設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
LUKS で暗号化した既存の root ボリュームを自動的にアンロックするには、clevis-luks サブパッケージをインストールし、clevis luks bind コマンドを使用してボリュームを Tang サーバーにバインドします。
yum install clevis-luks
~]# yum install clevis-luks
このコマンドは、以下の 4 つの手順を実行します。
- LUKS マスター鍵と同じエントロピーを使用して、新しい鍵を作成します。
- Clevis で新しい鍵を暗号化します。
- LUKS ヘッダーに Clevis JWE オブジェクトを LUKSMeta で格納します。
- LUKS を使用する新しい鍵を有効にします。
このディスクは、Clevis ポリシーだけでなく、既存のパスワードでもロック解除ができるようになりました。詳細は、man ページの
clevis-luks-bind (1)
を参照してください。
注記
バインド手順では、空き LUKS パスワードスロットが少なくとも 1 つあることが前提となっています。clevis luks bind コマンドは、スロットの 1 つを取ります。
Clevis JWE オブジェクトが LUKS ヘッダーに正常に配置されていることを確認するには、luksmeta show コマンドを使用します。
システムの起動プロセスの初期段階でディスクバインディングを処理するようにするには、インストール済みのシステムで次のコマンドを実行します。
yum install clevis-dracut dracut -f --regenerate-all
~]# yum install clevis-dracut
~]# dracut -f --regenerate-all
重要
(DHCP を使用しない) 静的な IP 設定を持つクライアントに NBDE を使用するには、以下のように、手動でネットワーク設定を dracut ツールに渡します。
dracut -f --regenerate-all --kernel-cmdline "ip=192.0.2.10 netmask=255.255.255.0 gateway=192.0.2.1 nameserver=192.0.2.45"
~]# dracut -f --regenerate-all --kernel-cmdline "ip=192.0.2.10 netmask=255.255.255.0 gateway=192.0.2.1 nameserver=192.0.2.45"
または、静的ネットワーク情報を使用して、
/etc/dracut.conf.d/
ディレクトリーに .conf ファイルを作成します。以下に例を示します。
cat /etc/dracut.conf.d/static_ip.conf kernel_cmdline="ip=10.0.0.103 netmask=255.255.252.0 gateway=10.0.0.1 nameserver=10.0.0.1"
~]# cat /etc/dracut.conf.d/static_ip.conf
kernel_cmdline="ip=10.0.0.103 netmask=255.255.252.0 gateway=10.0.0.1 nameserver=10.0.0.1"
初期 RAM ディスクイメージを再生成します。
dracut -f --regenerate-all
~]# dracut -f --regenerate-all
詳細は、man ページの
dracut.cmdline (7)
を参照してください。
4.10.7. キックスタートを使用した自動登録の設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Clevis は、キックスタートと統合して、登録プロセスを完全に自動化にできます。
- 一時パスワードを使用して、
/boot
以外のすべてのマウントポイントで LUKS 暗号化が有効になっているディスクを分割するように、キックスタートに指示します。パスワードは、登録プロセスの手順に使用するための一時的なものです。part /boot --fstype="xfs" --ondisk=vda --size=256 part / --fstype="xfs" --ondisk=vda --grow --encrypted --passphrase=temppass
part /boot --fstype="xfs" --ondisk=vda --size=256 part / --fstype="xfs" --ondisk=vda --grow --encrypted --passphrase=temppass
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSPP 準拠のシステムには、より複雑な設定が必要であることに注意してください。次に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 関連する Clevis パッケージを
%packages
セクションに追加してインストールします。%packages clevis-dracut %end
%packages clevis-dracut %end
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - clevis luks bind を呼び出して、
%post
セクションでバインディングを実行します。その後、一時パスワードを削除します。%post clevis luks bind -f -k- -d /dev/vda2 \ tang '{"url":"http://tang.srv","thp":"_OsIk0T-E2l6qjfdDiwVmidoZjA"}' \ <<< "temppass" cryptsetup luksRemoveKey /dev/vda2 <<< "temppass" %end
%post clevis luks bind -f -k- -d /dev/vda2 \ tang '{"url":"http://tang.srv","thp":"_OsIk0T-E2l6qjfdDiwVmidoZjA"}' \ <<< "temppass" cryptsetup luksRemoveKey /dev/vda2 <<< "temppass" %end
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 上記の例では、バインディングの設定で、Tang サーバーで信頼するサムプリントを指定することで、バインディングを完全に非対話にします。Tang サーバーの代わりに TPM 2.0 ポリシーを使用する場合は、同様の手順を使用できます。
キックスタートのインストールに関する詳細は、Red Hat Enterprise Linux 7 Installation Guide を参照してください。Linux Unified Key Setup-on-disk-format (LUKS) の詳細は、「LUKS ディスクの暗号化の使用」 を参照してください。
4.10.8. リムーバブルストレージデバイスの自動ロック解除の設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
USB ドライブなど、LUKS で暗号化したリムーバブルストレージデバイスを自動的にアンロックするには、clevis-udisks2 パッケージをインストールします。
yum install clevis-udisks2
~]# yum install clevis-udisks2
システムを再起動してから、「root ボリュームの手動登録の設定」 の説明に従って、clevis luks bind コマンドを使用したバインディング手順を実行します。以下に例を示します。
clevis luks bind -d /dev/sdb1 tang '{"url":"http://tang.srv"}'
~]# clevis luks bind -d /dev/sdb1 tang '{"url":"http://tang.srv"}'
LUKS で暗号化したリムーバブルデバイスは、GNOME デスクトップセッションで自動的にアンロックできるようになりました。Clevis ポリシーにバインドされているデバイスは、clevis luks unlock コマンドでロックを解除することもできます。
clevis luks unlock -d /dev/sdb1
~]# clevis luks unlock -d /dev/sdb1
Tang サーバーの代わりに TPM 2.0 ポリシーを使用する場合は、同様の手順を使用できます。
4.10.9. ブート時に非 root ボリュームのロックを自動解除する設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
NBDE を使用して、LUKS で暗号化した非 root ボリュームをアンロックするには、以下の手順を行います。
- clevis-systemd パッケージをインストールします。
yum install clevis-systemd
~]# yum install clevis-systemd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Clevis のアンロックサービスを有効にします。
systemctl enable clevis-luks-askpass.path
~]# systemctl enable clevis-luks-askpass.path Created symlink from /etc/systemd/system/remote-fs.target.wants/clevis-luks-askpass.path to /usr/lib/systemd/system/clevis-luks-askpass.path.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 「root ボリュームの手動登録の設定」 の説明に従って、clevis luks bind コマンドを使用したバインディング手順を実行します。
- システムの起動時に暗号化されたブロックデバイスを設定するには、
_netdev
オプションを指定して対応する行を/etc/crypttab
設定ファイルに追加します。詳細は、crypttab (5)
man ページを参照してください。 /etc/fstab
ファイルでアクセス可能なファイルシステムの一覧にボリュームを追加します。この設定ファイルに_netdev
オプションを使用します。詳細は、man ページのfstab (5)
を参照してください。
4.10.10. NBDE ネットワークでの仮想マシンのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
clevis luks bind コマンドは、LUKS マスターキーを変更しません。これは、仮想マシンまたはクラウド環境で使用する、LUKS で暗号化したイメージを作成する場合に、このイメージを実行するすべてのインスタンスがマスター鍵を共有することを意味します。これにはセキュリティーの観点で大きな問題があるため、常に回避する必要があります。
これは、Clevis の制限ではなく、LUKS の設計原理です。クラウドに暗号化された root ボリュームが必要な場合は、クラウドの Red Hat Enterprise Linux の各インスタンスにインストールプロセスを実行できるようにする (通常はキックスタートを使用) 必要があります。このイメージは、LUKS マスター鍵を共有しなければ共有できません。
仮想化環境に自動アンロックをデプロイする場合は、キックスタートファイルを使用して lorax、virt-install などのシステムを使用すること (「キックスタートを使用した自動登録の設定」 を参照)、または暗号化した各仮想マシンに固有のマスター鍵があるようにする別の自動プロビジョニングツールを使用することを Red Hat は強く推奨します。
4.10.11. NBDE を使用してクラウド環境に自動的に登録可能な仮想マシンイメージの構築 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
自動登録可能な暗号化イメージをクラウド環境にデプロイすると、特有の課題が発生する可能性があります。他の仮想化環境と同様に、LUKS マスター鍵を共有しないように、1 つのイメージから起動するインスタンス数を減らすことが推奨されます。
したがって、ベストプラクティスは、どのパブリックリポジトリーでも共有されず、限られたインスタンスのデプロイメントのベースを提供するように、イメージをカスタマイズすることです。作成するインスタンスの数は、デプロイメントのセキュリティーポリシーで定義する必要があります。また、LUKS マスター鍵の攻撃ベクトルに関連するリスク許容度に基づいて決定する必要があります。
LUKS に対応する自動デプロイメントを構築するには、Lorax、virt-install などのシステムとキックスタートファイルを一緒に使用し、イメージ構築プロセス中にマスター鍵の一意性を確保する必要があります。
クラウド環境では、ここで検討する 2 つの Tang サーバーデプロイメントオプションが利用できます。まず、クラウド環境そのものに Tang サーバーをデプロイできます。もしくは、2 つのインフラストラクチャー間で VPN リンクを使用した独立したインフラストラクチャーで、クラウドの外に Tang サーバーをデプロイできます。
クラウドに Tang をネイティブにデプロイすると、簡単にデプロイできます。ただし、別のシステムの暗号文のデータ永続化層でインフラストラクチャーを共有します。Tang サーバーの秘密鍵および Clevis メタデータは、同じ物理ディスクに保存できる場合があります。この物理ディスクでは、暗号文データへのいかなる不正アクセスが可能になります。
重要
このため、Red Hat は、データを保存する場所と、Tang が実行しているシステムを、物理的に分離させることを強く推奨します。クラウドと Tang サーバーを分離することで、Tang サーバーの秘密鍵が、Clevis メタデータと誤って結合することがないようにします。さらに、これにより、クラウドインフラストラクチャーが危険にさらされている場合に、Tang サーバーのローカル制御を提供します。
4.10.12. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
ナレッジベースの記事How to set up Network Bound Disk Encryption with multiple LUKS devices (Clevis+Tang unlocking)
詳細は、以下の man ページを参照してください。
tang(8)
clevis(1)
jose(1)
clevis-luks-unlockers(1)
tang-nagios(1)