2017-11-16 11 views
2

現在、クラウドプロバイダのアクセスキーやIDなどの秘密情報を管理することは、Terraformプロジェクトでは未解決の問題です(github issue参照)。 terraform planまたはterraform applyを実行するたびに、これらの秘密はテラフォーム状態ファイルに平文で保存されます。 terrahelpのような第三者による編集や暗号化スクリプトが数多くあります。Vaultを使用して領事館に保存されたリモートTerraformの状態を暗号化

私の質問:領事館はリモートテラフォームの状態を保存するためのネイティブバックエンドです。 Vaultを使用して領事館に保存されている状態ファイルを暗号化することはできますか?私はTerraformのバックエンドのドキュメントを検索しようとしましたが、ConsulがVaultを使って状態ファイルを暗号化するための設定フラグを見つけることができませんでした。

+0

Vaultに関する十分な経験がないため、Vaultの中継バックエンドを使用してVault経由でConsulに透過的に暗号化することはできますか? VaultはConsulをステートストアとして使用していますが、とにかく動作する可能性があるため、奇妙に聞こえますか? – ydaetskcoR

+0

@ydaetskcoRこのアイデアは素晴らしいですが、問題は読み取り/保存手順にフックする正式な方法がないことです。そのため、ボールトの中継バックエンドを組み込むことは難しくなります。ステートファイルをローカルに保存し、ボールトで暗号化し、暗号化されたファイルをリモートバックエンドにプッシュすることができます。しかし、そのためには、テラフォームの周りにカスタムラッパーを使用する必要があります。 Terraform自体はそのようなアプローチをサポートしていません(まだ) – fishi

+0

ああ、領事ホストを変更してボールトクラスタと中継バックエンドのパスを指すようになっているかもしれないと思っていましたが、それでも何とかボールトトークンを提供する必要があります。 https://github.com/hashicorp/terraform/で問題を提起する価値があるかもしれません(バックエンドは依然としてメインレポの一部です) – ydaetskcoR

答えて

1

私はこの機能を欲しがっていますが、悲しいことに、これは現時点では可能ではないと私は考えています。あなたの状態ファイル全体を暗号化したい場合は、バケット暗号化を有効にしたs3のように、このボックスをサポートする別のバックエンドを選択する必要があります。

状態ファイルの読み込み/保存手順にフックを入れて自分自身でボールトの暗号化(または他のカスタム要件)を組み込むことができればいいですが、これも不可能です。

小さなサイトノート:terraform planは、状態ファイルに何も書き込まれません。読み取り専用の操作です。そうでないと、安全に使用できない可能性があります。

関連する問題