DevOps Bootcamp · レッスン

パイプラインで Vault Secret を扱う

漏えいを防ぎながら CI で安全に復号します。

レッスン 3/413 ステップ

「パイプラインで Vault Secret を扱う」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。

パイプラインでのシークレット問題

暗号化されたvault ファイルは git に安全に保存できますが、ランナーは実行時に復号するための vault パスワードを必要とします。🔐

パスワードを決してコミットしない

リポジトリの外に置かなければならないものは、vault パスワードそのものです。CI シークレットに保存すれば、履歴にも残りません。

CI シークレットに保存する

VAULT_PASSWORD のような GitHub Secret にパスワードを保存します。ログではマスクされ、実行時にだけ注入されます。

env:
  VAULT_PASS: ${{ secrets.VAULT_PASSWORD }}

一時パスワードファイルを書き込む

ステップ内でシークレットを短時間だけ有効なパスワードファイルに書き込み、実行中にランナーから Ansible へ渡せるようにします。

- run: echo "$VAULT_PASS" > .vault_pass

vault-password-file で復号する

--vault-password-file でそのファイルをプレイに指定すると、プロンプトを表示せずに Ansible が vault の内容を復号します。

ansible-playbook site.yml \
  --vault-password-file .vault_pass

環境変数を使う方法もある

Ansible は ANSIBLE_VAULT_PASSWORD_FILE も読み取るため、コマンドごとにフラグを渡す代わりに、1度だけ設定できます。

export ANSIBLE_VAULT_PASSWORD_FILE=.vault_pass

CI では --ask-vault-pass を使わない

対話型の --ask-vault-pass は人間の入力を待つため、パイプラインが停止します。代わりに、必ずファイルからパスワードを渡します。

必ず後片付けする

ジョブの終了時に一時ファイルを削除します。always ステップを使えば、プレイブックが途中で失敗しても確実に後片付けできます。

- if: always()
  run: rm -f .vault_pass

マスクし、エコーしない

CI は登録済みのシークレットをログ内で自動的にマスクしますが、自分でパスワードを echo してはいけません。手動出力によってマスクを無効にできてしまうためです。

複数の Vault ID に名前を付ける

複数の vault がある場合は、それぞれにvault IDを付けます。prod と staging のシークレットを、それぞれ専用のパスワードで復号できます。

--vault-id prod@.prod_pass \
--vault-id stage@.stage_pass

再デプロイせずにローテーションする

CI シークレットを変更すると、コードを変更せずにパイプライン全体のパスワードを一度にローテーションできます。

確認問題

パイプラインから vault パスワードを渡すには、どうすればよいでしょうか。

振り返り:シークレットを秘密に保つ

CI で vault を安全に復号しました。パスワードをシークレットとして保存し、パスワードファイルで渡し、プロンプトを避け、最後に後片付けします。🔒

無料で開始

AI チューターと学ぶ DevOps Bootcamp — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
142
レッスン
568

よくある質問

「パイプラインで Vault Secret を扱う」レッスンは無料ですか?

はい。「パイプラインで Vault Secret を扱う」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。

「パイプラインで Vault Secret を扱う」で何を学びますか?

漏えいを防ぎながら CI で安全に復号します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

DevOps Bootcampを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「パイプラインで Vault Secret を扱う」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDevOps Bootcampレッスンでコードを書いて実行できますか?

はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 品質ゲートとしての ansible-lint
  2. GitHub Actions で Playbook を実行する
  3. パイプラインで Vault Secret を扱う
  4. 承認と Check Mode によるゲート付きデプロイ
← DevOps Bootcampに戻る