ansible-vault decrypt
ファイルを復号化して記録するコマンド()があります。ファイルまたは-
/に書き込むことができますstdout
。
次に、この復号化されたファイル(秘密鍵)をmycommand --key-file <path to file>
。
現在のスクリプトが実行されたら、ansible-vault decrypt --output mykey.key
復号化されたファイルをディスクに書き込み、 を使用してmycommand --key-file mykey.key
最後にrm mykey.key
。
復号化されたファイルをディスクに書き込むことなくファイルのmycommand
ようにアクセスする方法はありますか?
標準入力からキーをまったく読み取らないため、2番目のコマンドにパイプすることはできません。私が考えることができる唯一のことは、コマンドを実行する前に仮想ディスクを作成し、そこにキーを書き、すべてのコマンドが実行された後に仮想ディスクをアンマウントすることです。これにより、解読された鍵が痕跡なしで消えることになります。
答え1
コマンドにファイル名が必要ですが、ファイル形式に興味がない場合は、データをパイプして/dev/stdin
ファイル名として指定できます。/dev/stdin
標準入力を参照してください。
ansible-vault decrypt | mycommand --key-file /dev/stdin
mycommand
パイプが許可されていない場合は機能しません(通常はプログラムがファイルを検索できるように要求した場合に発生します)。この場合、一時ファイルにキーを書き込む必要があります。
ほとんどのLinuxシステム(および他の多くのUnixバリアント)には、デフォルトでメモリ内ファイルシステムがあります。このファイルシステムがマウントされる場所とそれを使用するために必要な権限は、展開によって異なります。最新のLinuxシステムでは一時ファイルシステムファイルシステムは、次のような複数の場所にマウントされます。/run
。通常、すべてのユーザーは/run/user/1234
ログイン時にディレクトリを取得します。ここで、1234はユーザーIDです。多くのサービスは以下に独自のディレクトリを作成し、多くの場合/run
へ/var/run
のシンボリックリンクです/run
。システムで利用可能な項目を確認するために使用されますdf -t tmpfs
。
一時ファイルシステムに書き込まれたデータは、スワップ領域にあります。記憶の内容も同じだ。ハードドライブの盗難の脅威から保護するには、スワップ領域を暗号化する必要があります。休止状態モードを使用していない場合は、起動するたびに作成され、どこにも保存されない交換暗号化に任意のキーを使用できます。
答え2
私の考えでは、これはとても良いですfifo
。
参照を特別なファイルとして生成fifo
(使用mkfifo
)し、そのファイルのansible出力を実行してから、コマンドを介してそれを読み込みます。ただし、これはファイルではなく、ストレージも含みません。
推奨されるように、シェル「ここ」ファイルも良い候補です(<(CMD)
ビルド)。