HashiCorp Vault シークレットストレージ
Semaphore UI は、シークレットのストレージとして HashiCorp Vault をサポートしています。

次のオプションを指定できます。
- HashiCorp Vault URL — Vault サーバーのアドレス。
- マウント — シークレットエンジンのマウントパス。
- トークン — 認証トークン。トークンは次の方法で指定できます:
-
データベースに保存する。
-
環境変数で指定する。
-
ファイルで指定する (Vault Agent を使用する場合に便利)。
警告トークンをファイルから取得する場合、そのファイルは Semaphore が使用するシークレットディレクトリの内部に配置する必要があります。このディレクトリは
dirs.secretsまたは環境変数SEMAPHORE_SECRETS_PATHで設定します。従来のトップレベルのsecrets_pathオプションも、古い設定との互換性のために引き続き使用できます。いずれも設定されていない場合、デフォルトは/tmp/semaphoreです。優先順位の詳細については、シークレットディレクトリを参照してください。config.jsonの設定例:{
"dirs": {
"secrets": "/root/path/for/secrets"
}
}
-
このストレージは読み取り専用モードで動作させることができます。
使い方
- Semaphore の設定で HashiCorp Vault への接続 (URL、マウントパス、トークン) を設定します。
- キーストアでキーを作成または編集する際に、ストレージの種類として HashiCorp Vault を選択します。
- 認証情報を保存する Vault 内のシークレットパスを指定します。

HashiCorp Vault Agent
Vault トークンを直接保存する代わりに、HashiCorp Vault Agent を使用してトークンの取得と更新を自動的に処理できます。
Vault Agent は Semaphore と並行してサイドカープロセスとして動作し、有効なトークンをディスク上のファイルに書き込みます。Semaphore はそのファイルからトークンを読み取ります。
設定手順は次のとおりです。
-
適切な自動認証 (auto-auth) メソッド (AppRole、Kubernetes、AWS IAM など) を使用して Vault Agent を設定し、実行します。
-
sinkブロックを使用して、Vault Agent がトークンをファイルに書き込むように設定します。例:auto_auth {
method {
type = "approle"
config = {
role_id_file_path = "/etc/vault/role-id"
secret_id_file_path = "/etc/vault/secret-id"
}
}
sink {
type = "file"
config = {
path = "/etc/vault/token"
}
}
} -
Semaphore で HashiCorp Vault 接続を設定する際に、トークンソースとしてファイルを選択し、トークンファイルのパス (例:
/etc/vault/token) を指定します。
この方法により、長期間有効な静的トークンを避け、認証とトークンの更新を Vault Agent に自動的に任せることができます。
変数グループ
HashiCorp Vault は変数グループのストレージとしても使用できます。変数グループを編集する際に、ストレージの種類として HashiCorp Vault を選択し、シークレットを保存するフォルダーのパスを指定します。
