ソース管理におけるAnsible SSH秘密鍵? 質問する

ソース管理におけるAnsible SSH秘密鍵? 質問する

私は数週間前からAnsibleプレイブックを開発しているので、この技術の経験は比較的浅いです。私の戦略の一部には、ansible_ssh_userインベントリ全体でホストをプロビジョニングするためのカスタムを使用することが含まれていますが、そのようなユーザーには独自のSSHキーペアが必要であり、対応する秘密鍵を保持/保存するための何らかの計画が必要になります。実稼働環境では、このプレイブックはクローン/プルされ、特定の環境で実行されます。プレイブックノード残りのインフラストラクチャをプロビジョニングする役割を担います。

最初は、その秘密鍵をプレイブックの Git リポジトリ内に置くだけと考えていましたが、セキュリティ上の理由や常識的な理由から、考え直し、この件について相談する必要があることに気が付きました。

これを踏まえて、次に続く質問は次のとおりです。

  • Ansible ベースの開発環境では、ソース管理で秘密 SSH キーを保持することは正当/合理的ですか?
  • この方法は推奨されるか開発環境のみ一方、別のローカルgitブランチはプレイブックノード実際の運用 SSH 秘密キーを保持するために使用されるのでしょうか?
  • 代わりに Ansible Vault を使用してこのケースのシナリオに対処した方がよいでしょうか? 私はこれまでこれを使用したことはありませんが、それにもかかわらず、これが Ansible Vault を使用する適切なケースであるかどうかはまだわかりません。
  • あなたの経験では、実稼働環境ではこれに対してどのようなアプローチをとりますか? この特定のシナリオでは、どのようなことがベストプラクティスとして考えられますか?

ベストアンサー1

SSH 秘密鍵を含むあらゆる種類のプレーンテキストの秘密をリビジョン管理に保存するのはお勧めできません。代わりに、ansible-vault を使用して秘密鍵を保存してください。

ansible-vaultあらゆるファイルタイプで動作します。ファイルを暗号化するだけで

ansible-vault encrypt /path/to/local/private_key

次にキーをインストールします:

- name: Install a private SSH key
  vars:
    source_key: /path/to/local/private_key
    dest_key: /path/to/remote/private_key
  tasks:
  - name: Ensure .ssh directory exists.
    file: 
      dest: "{{ dest_key | dirname }}"
      mode: 0700 
      owner: user 
      state: directory
  - name: Install ssh key
    copy: 
      src: "{{ source_key }}" 
      dest: "{{ dest_key }}"
      mode: 0600
      owner: user

おすすめ記事