Ansibleは、そのシンプルさと使いやすさから、多くの開発者に人気のある素晴らしい自動化およびオーケストレーションツールです。 Ansibleに付属する最も重要な機能の1つは、AnsibleVaultです。ご想像のとおり、 Ansible Vault は、違反が発生した場合に重大な脅威となるプレーンテキストではなく、プレイブックまたはファイル内の機密情報を暗号化または保護するために使用されるセキュリティ機能です。このようなデータには、パスワードが含まれます 、APIトークン およびSSL証明書 いくつか言及します。プレイブック全体を暗号化できますYAML パスワードなどの機密情報を含む、プレイブック内の文字列のファイル。
このガイドでは、Ansibleボールトが機密情報や機密情報をロックダウンし、スヌーパーを寄せ付けないようにするためのさまざまな方法について説明します。
AnsibleVaultを使用して暗号化されたファイルを作成する
Ansible vaultは、ansible-vaultコマンドラインユーティリティツールを使用して、AES256アルゴリズムを使用して機密情報を暗号化します。これにより、定義されたパスワードに埋め込まれた対称暗号化が提供されます。ユーザーは同じパスワードを使用して、コンテンツにアクセスするためにファイルを暗号化または復号化できます。
暗号化されたファイルを作成するには、次のようにansible-vaultユーティリティツールを使用します
$ ansible-vault create file.yml
たとえば、ファイルを作成するには、そのファイルを secret_file.ymlと呼びます。 、コマンドを実行します
$ ansible-vault create secret_file.yml
新しいボールトパスワードを入力するように求められます。ご希望のパスワードを入力して確認してください。パスワードを確認すると、vimエディターが起動します。
その後、Ansible Vaultで暗号化するファイルの内容を入力し、ファイルを保存します。以下はサンプルテキストです。
Hello, this is my secret file
ファイルを表示すると、図のようにAES256アルゴリズムを使用してすでに暗号化されていることがわかります。
$ vim secret_file.yml
AnsibleVaultを使用して暗号化されたファイルを編集する
暗号化された既存のファイルに変更を加えるには、次の構文を使用します。
$ ansible-vault edit file.yml
以前に作成したサンプルファイルから、ファイルを編集するためのコマンドは次のようになります。
$ ansible-vault edit secret_file.yml
繰り返しになりますが、ボールトパスワードの入力を求められ、パスワードを入力すると、ファイルにアクセスして変更を加えることができます。
暗号化されたファイルを表示する
暗号化されたファイルを確認するには、次の構文を使用します。
$ ansible-vault view file.yml
したがって、ファイルを使用すると、コマンドは次のようになります
$ ansible-vault view secret_file.yml
AnsibleVaultを使用して既存のファイルを暗号化する
暗号化されていない既存のファイル、たとえばインベントリファイルを暗号化するとします。どうしますか?これを実現するには、次の構文を使用します。
$ ansible-vault encode file.yml
たとえば、ファイルfile1.ymlを暗号化するには、次のコマンドを実行します。
$ ansible-vault encrypt file1.yml
ボールトのパスワードを指定し、それを確認してファイルを暗号化します。
AnsibleVaultを使用してファイルを復号化
ファイルを復号化してプレーンテキストに戻すには、次のコマンドを実行します。
$ ansible-vault decrypt file1.yml
すべてがうまくいけば、「復号化に成功しました」というメッセージが表示されます。これで、catコマンドを使用してファイルの内容を表示できます。
AnsibleVaultパスワードをリセット
また、Vaultのパスワードをリセットまたは変更することもできます。これは、キーの再生成を使用して行われます。 示されているように、ansible vaultコマンドのオプション:
$ ansible-vault rekey secret_file.yml
最初に現在のボールトパスワードを指定し、後で新しいパスワードを作成して確認します。
AnsiblePlaybookで実行時にコンテンツを復号化する
Ansible 2.4より前は、実行時にファイルを復号化するには、 –ask-vault-passを使用する必要がありました。 ansibleで示されるパラメータ またはansible-playbook コマンド:
$ ansible-playbook playbook_example.yml --ask-vault-pass
次に、Vaultパスワードの入力を求められ、実行時に復号化が開始されます。
ただし、これは非推奨になりました。 Ansible 2.4以降、パスワードの入力を求める標準的な方法は、 –vault-idを利用することです。 示されているオプション。
$ ansible-playbook playbook_example.yml --vault-id @prompt
@prompt パスワードの入力を求められます
実行時にファイルを復号化するたびにパスワードの入力を求められないようにする簡単な方法は、ボールトのパスワードをファイルに保存することです。
Ansible 2.4より前は、これを実現する方法は –vault-password-fileを使用することでした。 保存されたパスワードを含むファイルへのパスを指定するパラメータ。
たとえば、以下のデモでは、パスワードファイルは/etc/ansible/vault_pass.txtファイルにあります。
$ ansible-playbook playbook_example.yml --vault-password-file /etc/ansible/vault_pass.txt
ただし、 –ask-vault-passと同じように オプション、オプション –vault-password-file –vault-idへの道を開くために非推奨になりました オプション。したがって、コマンドは次のようになります。
$ ansible-playbook playbook_example.yml --vault-id /etc/ansible/vault_pass.txt
AnsiblePlaybookの変数の暗号化
プレイブック全体を暗号化する以外に、 ansible-vault また、変数のみを暗号化する機能も提供します。ほとんどの場合、これらはパスワードやAPIキーなどの機密性の高い機密情報を含む変数です。
以下のプレイブックは、[メール保護]として定義されたパスワードを含む変数my_secretの値を出力することを目的としています。
一般に、パスワードをプレーンテキストで保存することはお勧めできません。誰かがプレイブックファイルを入手すると、セキュリティが危険にさらされる可能性があるためです。
したがって、ファイル全体を暗号化するか、変数の値を暗号化するかの2つのオプションが表示されます。
変数を暗号化するには、 encode_stringを使用します 示されているオプション。
$ ansible-vault encode_string‘string’ –name‘variable_name’
変数my_secretの値を暗号化するには プレイブックの例では、コマンドは次のようになります。
$ ansible-vault encrypt_string '[email protected]' --name 'my_secret'
上記の出力は、パスワードがAES256暗号化で暗号化されていることを示しています 。ここから、暗号化されたコード全体を!vault|からコピーします。 。プレイブックファイルに移動し、プレーンテキストのパスワード値を削除して、図のように暗号化された値を貼り付けます。
ファイルを保存して終了します。次に、プレイブックを実行して、 my_secretに保存されているパスワードの値が引き続き表示されるかどうかを確認します。 変数。
上記の出力は、プレイブックが変数の暗号化に成功したことを意味する望ましい結果を提供することを示しています。
これで、AnsibleVaultに関するこのチュートリアルは終わりです。これで、ファイルを保護し、機密情報を詮索好きな目から遠ざけることができます。