HashiCorp Vault
既存の Vault KV シークレットから認証情報を取得します。
認証情報はコードと分けて保存します。インフラに合ったシークレットソースを使い、名前付きキーをリポジトリ、インベントリ、ジョブ間で再利用できます。
SSH 鍵、ログイン名とパスワードの組、文字列シークレットを Semaphore の暗号化された Key Store に保存します。Git アクセス、ホスト接続、Ansible Vault のパスワードに再利用できます。
別の取得元が必要ですか? サーバーの環境変数やファイルから認証情報を解決する、Vault のシークレットを Key Store に同期する、変数グループで共有設定とともにシークレット値を使う、といった方法があります。
名前付きの鍵、またはログイン名とパスワードの認証情報を、組み込みの Key Store に保存します。自動化コードに値を追加せずに再利用できます。
外部 Vault のアドレスと認証設定を指定して接続します。Semaphore がシークレットを取得するだけなら、読み取り専用アクセスを選んでください。
インポートするリモートパスを選択し、名前の接頭辞と自動同期間隔を設定します。インポートした Key Store エントリーを取得元と同期させます。
リポジトリ、インベントリ、Ansible Vault の参照を通じて、ジョブに必要な認証情報を使います。テンプレートが次回の実行用に設定を保持します。
API トークンとパスワードは、グループのシークレットタブに保存します。必要なタスクテンプレートにその変数グループを関連付けます。
Key Store は、管理対象ホストの SSH 鍵やログイン情報、プライベート Git リポジトリへのアクセス、sudo パスワード、Ansible Vault パスワードなど、操作に実際に必要な認証情報を保持します。テンプレートがエントリーを参照するため、エンジニアは名前を設定・確認し、値はリポジトリやタスクフォームに含めずに済みます。アクセスキー暗号化を設定すると、ローカルの値はデータベースで暗号化されます。その設定と復旧経路は、任意設定ではなくバックアップ手順の一部になります。
環境変数とファイルをソースにすると、Key Store のエントリーはデータベースに値のコピーを保存せず、タスクが必要とするときに Semaphore サーバーから値を読み取れます。別のプロセスが更新済み認証情報をホストに書き込んでいる場合に適した方法です。ソースを更新すれば、テンプレートを編集しなくても次のタスクが新しい値を取得します。リモートランナーが実行する場合も、これらのソースは Semaphore サーバーが解決するため、ランナーにファイルを置く必要はありません。ファイルソースは設定済みのシークレットディレクトリと文書化された JSON 形式に従い、SSH やログインのエントリーでは、生の鍵ファイルではなくそのラッパー形式を使用します。
変数グループは、共有設定とシークレット値をまとめます。各ジョブにシークレット入力を複製せず、保存済み認証情報を参照します。Ansible、Terraform、OpenTofu、スクリプトへ、各ツールが想定する変数名でグループを渡せます。
Pro では HashiCorp Vault または OpenBao のシークレットを参照できます。Enterprise では、AWS Secrets Manager、CyberArk、Devolutions Server などの対応する連携が追加されます。シークレットは管理元のシステムに置き、文書化されたプロバイダー設定で自動化から利用できるようにします。
値を適切に保存しても、コードがその値をどう使うかまでは制御できません。Playbook やスクリプトは、デバッグタスク、コマンド引数、API 応答を通じてシークレットを出力することがあり、すべての値がタスクログから除去される保証はありません。Ansible の no_log などツール自体の機能を使い、成功時だけでなく失敗時の出力も確認してください。ログやエクスポートへのアクセスは、そこに含まれる情報へのアクセスとして扱います。
タスク JWT は、個々の実行に署名済みの ID を提供します。受信サービスは、すべてのジョブに長期有効なトークンを共有する代わりに、発行者、対象者、クレームを検証できます。双方で信頼関係を設定してください。通常の SSH 鍵、パスワード、Vault 参照も、それらを必要とするシステム向けに引き続き利用できます。
プライベートリポジトリ、管理対象ホスト、Ansible Vault パスワードなどのアクセスには、名前付きの Key Store 認証情報を使います。自動化コードと機密でない設定は Git に保存し、テンプレートから必要な認証情報を参照します。スクリプトに値を埋め込むより、再利用と更新が容易です。ただし、そのコードは与えられたアクセスで実行されるため、実行ソースを編集できる人を保護・制限する必要はなくなりません。
いいえ。Ansible Vault は、暗号化された Ansible コンテンツを保護します。タスクテンプレートは、Semaphore の Key Store に保存された Vault パスワードでそれを復号できます。HashiCorp Vault は、Key Store のシークレット向けに Pro が提供する別の外部保存オプションです。このページに記録された事前確認は、HashiCorp Vault への接続ではなく、Ansible Vault のパスワードを使う経路を示しています。外部保存は、運用作業に使う前に使い捨ての認証情報で別途評価してください。
ローカルの Key Store の値は、設定されたアクセスキー暗号化の仕組みでデータベースに保存されます。暗号化設定を正しく設定・保護し、その復旧要件をバックアップ手順に含めてください。保存時の暗号化は設計の一部です。認可された実行は、その認証情報を使用する必要があります。暗号化されたデータベースの値があらゆるコードやエンジニアからアクセス不能になると考えず、サーバー、ランタイム、管理者アクセス、ログを保護してください。
文書化された環境変数とファイルのソースは、リモートランナーでの実行を含め、タスクが鍵を必要とするときに Semaphore サーバーが解決します。ファイルソースは、許可されたシークレットディレクトリの設定と、文書化された値の形式に従う必要があります。後続タスクは、テンプレートを書き換えずに更新済みのソース値を取得できます。ランナーに生の鍵ファイルを置くだけで、このサーバー側ソースの仕組みになるとは考えないでください。
はい。Pro は、外部シークレットソースとして HashiCorp Vault と OpenBao に対応しています。Enterprise では、ほかの対応シークレットマネージャー連携が追加されます。プロバイダーを設定し、値を Git にコミットする代わりに Key Store から認証情報を参照します。認証とシークレットパスはプロバイダーガイドに従い、意図した認証情報でジョブをテストしてください。
テンプレートは、各ジョブに個別のパスワードや鍵を埋め込む代わりに、名前付き認証情報を参照します。認証情報または設定済みの取得元を更新したら、それを参照するリポジトリとインベントリを確認してください。更新後は代表的なタスクをテストし、次の本番定期実行より前に認証失敗を検出できるようにします。
すべての情報が必ずマスキングされるとは考えないでください。Playbook やスクリプトは、機密変数、コマンド引数、API 応答を出力する可能性があります。ログ出力を意識して設計し、ツールに適したシークレット処理オプションを使い、成功時だけでなく代表的な失敗時の出力も確認します。ログやエクスポートした記録へのアクセスは内容に応じて制限してください。値を安全に保存するだけで、実行コードが出力するすべてを制御できるわけではありません。
はい。Key Store の認証情報に名前を付け、リポジトリ、インベントリ、テンプレートがその種類の認証情報を必要とする箇所で選択します。ジョブは Git に個別のコピーを持たず、設定済みエントリーを参照します。対象システムに異なる ID が必要な場合は、別の認証情報を使ってください。タスクテンプレートを見る。