Ansible-Vaultを用いた機密情報の暗号化のTips

はじめに

eureka, Inc.
Eureka Engineering
9 min readDec 22, 2015

--

Ansibleを用いたコードによるインフラ構成管理を実践しようとすると、機密情報の扱いに困る事があると思います。具体的には以下のような情報をレポジトリ管理に入れたい時です。

  • AWSのcredential
  • DBのパスワード
  • facebook_appのapp_secret

せっかくミドルウェアやネットワーク設定等をコード管理している( =テスト回したりコードレビューできる) のに、一部の情報だけサーバのローカル上で管理とかも嫌ですよね。
とはいえ、これら機密情報を万が一間違ってpublicなgithubレポジトリ等にあげた日には
Bitcoin採掘屋さんに目をつけられ多大な請求が、、、なんて事にもなりかねません

Ansible-Vaultとは

Ansibleで提供されている、暗号/復号化用パスワードを用いてyamlファイルを暗号化する仕組みです。これを用いる事で、機密情報を暗号化した状態で保存する事ができます。
一例ですが、サーバプロビジョニング発射台を以下のような構成にしておけば、機密情報を安全にgithub等で管理しつつ、Playbook実行時にこれら変数を利用する事が可能です。

  • 実行サーバをVPC等でセキュアレイヤーに配置。(= 外部からの接続を受け付けさせない)
  • パスワード自体は上記サーバ上の足元に設置(= レポ管理に入れない)
  • 機密情報はAnsible-Vaultを用いて上記パスワードで暗号化した状態でgithub上で管理
  • タスク実行時は足元のパスワードファイルをplaybookに渡してやり、動的に復号化する

使い方

暗号化するファイルを作成する

--

--

eureka, Inc.
Eureka Engineering

Learn more about how Eureka technology and engineering