ウェブサイト検索

プレイブックで機密データを保護するためのAnsible Vaultの使い方 - パート10


Ansibleを使用する過程で、プレイブックにいくつかの機密情報や秘密情報を入力する必要があるかもしれません。これにはSSHの秘密鍵と公開鍵、パスワード、SSL証明書などが含まれます。ご存知の通り、明らかに理由からこのような機密情報を平文で保存することは悪い慣行です。この情報は厳重に保管する必要があり、もしハッカーや無許可のユーザーが手に入れた場合に何が起こるかを想像するのは容易です。

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

次に、Ansible vaultを使用して実行できるさまざまな操作の概要を見ていきましょう。

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

暗号化されたPlaybookファイルを作成したい場合は、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ボールトのパスワードを変更する必要がある場合は、以下に示す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ボールトは特定の変数を暗号化する能力を与えます。これは、以下に示すansible-vault encrypt_stringコマンドを使用して行われます。

# ansible-vault encrypt_string 

Ansibleボールトは、パスワードの入力を求め、その後確認を必要とします。次に、暗号化したい文字列の値を入力してください。最後に、ctrl+dを押します。その後、プレイブック内で暗号化された値を割り当てることができます。

これは以下のように1行で達成できます。

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

実行時にプレイブックファイルを復号化する方法

プレイブックファイルがあり、実行時にそれを復号化したい場合は、示されているように --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つの中央システムから複数のサーバーでタスクを自動化する方法に関する有用な知識を提供できたことを願っています。

関連記事: