ウェブサイト検索

Playbook で Ansible Vault を使用して機密データを保護する方法 - パート 10


Ansible を使用する際、Playbook に機密情報や機密情報を入力する必要がある場合があります。これには、ほんの数例を挙げると、SSH 秘密キーと公開キー、パスワード、SSL 証明書が含まれます。すでにご存知のとおり、明らかな理由から、この機密情報をプレーン テキストで保存するのは悪い習慣です。この情報は、ハッカーや権限のないユーザーが入手した場合に何が起こるか想像することしかできないため、厳重に保管する必要があります。

ありがたいことに、Ansible はAnsible Vault として知られる便利な機能を提供します。名前が示すように、Ansible Vault は、前述したように重要な機密情報を保護するのに役立ちます。 Ansible Vault は変数を暗号化することも、後で説明するようにファイルや YAML プレイブック全体を暗号化することもできます。これは、ファイルの暗号化と復号化の際に同じパスワードを必要とする、非常に便利でユーザーフレンドリーなツールです。

それでは、Ansible ボールトを使用して実行できるさまざまな操作の概要を見てみましょう。

Ansible で暗号化されたファイルを作成する方法

暗号化されたプレイブックファイルを作成する場合は、ansible-vault create コマンドを使用して、示されているようにファイル名を指定するだけです。

ansible-vault create filename

たとえば、暗号化ファイル mysecrets.yml を作成するには、コマンドを実行します。

ansible-vault create mysecrets.yml

その後、パスワードの入力を求められ、それを確認すると、vi エディターを使用して新しいウィンドウが開き、そこで劇の作成を開始できます。

以下はいくつかの情報のサンプルです。完了したら、プレイブックを保存して終了します。暗号化されたファイルを作成する場合はこれだけです。

ファイルの暗号化を確認するには、次のように cat コマンドを使用します。

cat mysecrets.yml

Ansible で暗号化されたファイルを表示する方法

暗号化されたファイルを表示したい場合は、以下に示すようにansible-vault view コマンドを渡すだけです。

ansible-vault view mysecrets.yml

もう一度、パスワードの入力を求められます。もう一度、自分の情報にアクセスできるようになります。

Ansible で暗号化されたファイルを編集する方法

暗号化されたファイルに変更を加えるには、次のように ansible-vault edit コマンドを使用します。

ansible-vault edit mysecrets.yml

いつものように、パスワードを入力してからファイルの編集を続けます。

編集が完了したら、保存して vim エディターを終了します。

Ansible Vault パスワードを変更する方法

Ansible vault パスワードを変更する必要があると感じた場合は、以下に示すようにansible-vault rekey コマンドを使用して簡単に変更できます。

ansible-vault rekey mysecrets.yml

これにより、ボールトのパスワードの入力を求めるプロンプトが表示され、その後、新しいパスワードの入力と確認を求められます。

Ansible で暗号化されていないファイルを暗号化する方法

暗号化されていないファイルを暗号化したい場合は、次のように ansible-vault encrypt コマンドを実行することで暗号化できます。

ansible-vault encrypt classified.txt

以下に示すように、後で cat コマンドを使用してファイルを表示できます。

暗号化されたファイルを復号化する方法

暗号化されたファイルの内容を表示するには、以下の例に示すように、ansible-vault encrypt を使用してファイルを復号化するだけです。

ansible-vault decrypt classified.txt

Ansible で特定の変数を暗号化する方法

さらに、Ansible Vault を使用すると、特定の変数を暗号化することができます。これは、示されているようにansible-vault encrypt_string コマンドを使用して行われます。

ansible-vault encrypt_string 

Ansible Vault ではパスワードの入力を求められ、後でパスワードの確認を求められます。次に、暗号化する文字列値を入力します。最後に、ctrl+d を押します。その後、プレイブックで暗号化された値の割り当てを開始できます。

これは、以下に示すように 1 行で実現できます。

ansible-vault encrypt_string 'string' --name 'variable_name'

実行時に Playbook ファイルを復号化する方法

Playbook ファイルがあり、実行時にそれを復号化したい場合は、図に示すように --ask-vault-pass オプションを使用します。

ansible-playbook deploy.yml --ask-vault-pass

これにより、同じパスワードを使用して暗号化されている場合、プレイブックで使用されるすべてのファイルが復号化されます。

パスワードのプロンプトは時々煩わしい場合があります。これらのプロンプトにより、特に自動化が重要な場合には、自動化を維持できなくなります。実行時にプレイブックを復号化するプロセスを効率化するには、Ansible ボールトのパスワードを含む別のパスワード ファイルを用意することをお勧めします。このファイルは、次に示すように実行時に渡すことができます。

ansible-playbook deploy.yml --vault-password-file  /home/tecmint/vault_pass.txt

これで、このトピックと Ansible 自動化シリーズは終わります。このチュートリアルで、1 つの中央システムから複数のサーバーにまたがるタスクを自動化する方法について役立つ知識が得られたことを願っています。