
LUKS コンテナにキーを追加するために Chef LWRP を作成していますが、キーがすでに存在するかどうかを判断する方法が思いつきません。 同じキーファイルを複数回追加しても問題ないため、各 Chef 実行cryptsetup luksAddKey
を単純に呼び出し続けることはできません。luksAddKey
今のところ、私が思いついた最高のものは
cryptsetup luksDump /dev/xvdf1 --dump-master-key --key-file <thenewkey> > /dev/null
それは次のようです:
- CPU負荷が高い
- あまり安全ではない
もっと良いアイデアをお持ちの方はいらっしゃいますか?
ありがとう!
答え1
ボリュームのロックを解除せずにキーをテストする方法はないと思います (少なくとも CPU 負荷に関しては)。しかし、これだけの CPU 秒を費やさない人がいるでしょうか? システムごとに LUKS ボリュームがたくさんあるのでしょうか?
代わりに、次のようにすることもできます。
キーを追加するたびに、ファイルのダイジェストを保存します (これは安全なダイジェストである必要はなく、MD5 でもかまいません)。ディレクトリを作成します/etc/my_luks_keyfiles
。システム内のすべての LUKS ボリュームに対して、UUID ( cryptsetup luksUUID /dev/bla
) を持つサブディレクトリを作成します。キーを追加すると、たとえばタイムスタンプを名前として、ダイジェストをコンテンツとして含むファイルが作成されます。キーを削除すると、ファイルも削除されます。キーがアクティブかどうかを知りたい場合は、ディレクトリ内のすべてのファイルをダイジェストと比較します (つまり、キー ファイルを転送する必要はありません)。
アクティブなスロットよりもファイルの数が多いか少ない場合は、問題が発生していることがわかります...