認証情報を 1 か所に

鍵、パスワード、トークンを組み込みの Key Store に保存するか、Vault を接続します。名前付き認証情報を複数のジョブで再利用し、シークレットをコードに含めず、取得元で更新できます。

認証情報がジョブ、スクリプト、ノート PC に分散

コピーするたびに保護と更新が必要です。ジョブの共有のために、シークレット値まで共有する必要はありません。

Git 内
スクリプト内
ノート PC 上

認証情報は一度保存し、その参照を再利用

鍵は Semaphore の Key Store または接続した Vault に保存します。ジョブが使うリソースに関連付け、取得元で更新します。

組み込みの Key Store を使うか、Vault を接続

認証情報はコードと分けて保存します。インフラに合ったシークレットソースを使い、名前付きキーをリポジトリ、インベントリ、ジョブ間で再利用できます。

組み込みの Key Store

SSH 鍵、ログイン名とパスワードの組、文字列シークレットを Semaphore の暗号化された Key Store に保存します。Git アクセス、ホスト接続、Ansible Vault のパスワードに再利用できます。

HashiCorp Vault

既存の Vault KV シークレットから認証情報を取得します。

OpenBao

再利用可能な認証情報の取得元に OpenBao を使います。

AWS Secrets Manager

AWS Secrets Manager が管理する認証情報を接続します。

Azure Key Vault

シークレット同期で Vault のシークレットを Key Store にインポートします。

Devolutions Server

Devolutions Server が管理する認証情報を使います。

CyberArk

CyberArk が管理するシークレットを自動化に接続します。

別の取得元が必要ですか? サーバーの環境変数やファイルから認証情報を解決する、Vault のシークレットを Key Store に同期する、変数グループで共有設定とともにシークレット値を使う、といった方法があります。

認証情報を作成・接続・再利用

ジョブの認証情報の取得元を選択

テンプレートが名前で参照する名前付き認証情報

Key Store は、管理対象ホストの SSH 鍵やログイン情報、プライベート Git リポジトリへのアクセス、sudo パスワード、Ansible Vault パスワードなど、操作に実際に必要な認証情報を保持します。テンプレートがエントリーを参照するため、エンジニアは名前を設定・確認し、値はリポジトリやタスクフォームに含めずに済みます。アクセスキー暗号化を設定すると、ローカルの値はデータベースで暗号化されます。その設定と復旧経路は、任意設定ではなくバックアップ手順の一部になります。

実行時にサーバーから値を取得

環境変数とファイルをソースにすると、Key Store のエントリーはデータベースに値のコピーを保存せず、タスクが必要とするときに Semaphore サーバーから値を読み取れます。別のプロセスが更新済み認証情報をホストに書き込んでいる場合に適した方法です。ソースを更新すれば、テンプレートを編集しなくても次のタスクが新しい値を取得します。リモートランナーが実行する場合も、これらのソースは Semaphore サーバーが解決するため、ランナーにファイルを置く必要はありません。ファイルソースは設定済みのシークレットディレクトリと文書化された JSON 形式に従い、SSH やログインのエントリーでは、生の鍵ファイルではなくそのラッパー形式を使用します。

変数グループで Key Store の認証情報を使用

変数グループは、共有設定とシークレット値をまとめます。各ジョブにシークレット入力を複製せず、保存済み認証情報を参照します。Ansible、Terraform、OpenTofu、スクリプトへ、各ツールが想定する変数名でグループを渡せます。

既存のシークレットマネージャーを接続

Pro では HashiCorp Vault または OpenBao のシークレットを参照できます。Enterprise では、AWS Secrets Manager、CyberArk、Devolutions Server などの対応する連携が追加されます。シークレットは管理元のシステムに置き、文書化されたプロバイダー設定で自動化から利用できるようにします。

実行経路から出力されうるもの

値を適切に保存しても、コードがその値をどう使うかまでは制御できません。Playbook やスクリプトは、デバッグタスク、コマンド引数、API 応答を通じてシークレットを出力することがあり、すべての値がタスクログから除去される保証はありません。Ansible の no_log などツール自体の機能を使い、成功時だけでなく失敗時の出力も確認してください。ログやエクスポートへのアクセスは、そこに含まれる情報へのアクセスとして扱います。

対応サービスでは短期有効のタスク ID を使用

タスク JWT は、個々の実行に署名済みの ID を提供します。受信サービスは、すべてのジョブに長期有効なトークンを共有する代わりに、発行者、対象者、クレームを検証できます。双方で信頼関係を設定してください。通常の SSH 鍵、パスワード、Vault 参照も、それらを必要とするシステム向けに引き続き利用できます。

FAQ

リポジトリではなく Key Store に保存すべきものは何ですか?

プライベートリポジトリ、管理対象ホスト、Ansible Vault パスワードなどのアクセスには、名前付きの Key Store 認証情報を使います。自動化コードと機密でない設定は Git に保存し、テンプレートから必要な認証情報を参照します。スクリプトに値を埋め込むより、再利用と更新が容易です。ただし、そのコードは与えられたアクセスで実行されるため、実行ソースを編集できる人を保護・制限する必要はなくなりません。

Ansible Vault と HashiCorp Vault のシークレット保存は同じものですか?

いいえ。Ansible Vault は、暗号化された Ansible コンテンツを保護します。タスクテンプレートは、Semaphore の Key Store に保存された Vault パスワードでそれを復号できます。HashiCorp Vault は、Key Store のシークレット向けに Pro が提供する別の外部保存オプションです。このページに記録された事前確認は、HashiCorp Vault への接続ではなく、Ansible Vault のパスワードを使う経路を示しています。外部保存は、運用作業に使う前に使い捨ての認証情報で別途評価してください。

ローカルに保存した認証情報はどう保護されますか?

ローカルの Key Store の値は、設定されたアクセスキー暗号化の仕組みでデータベースに保存されます。暗号化設定を正しく設定・保護し、その復旧要件をバックアップ手順に含めてください。保存時の暗号化は設計の一部です。認可された実行は、その認証情報を使用する必要があります。暗号化されたデータベースの値があらゆるコードやエンジニアからアクセス不能になると考えず、サーバー、ランタイム、管理者アクセス、ログを保護してください。

環境変数やファイルに保存されたシークレットを読むのは、どのコンポーネントですか?

文書化された環境変数とファイルのソースは、リモートランナーでの実行を含め、タスクが鍵を必要とするときに Semaphore サーバーが解決します。ファイルソースは、許可されたシークレットディレクトリの設定と、文書化された値の形式に従う必要があります。後続タスクは、テンプレートを書き換えずに更新済みのソース値を取得できます。ランナーに生の鍵ファイルを置くだけで、このサーバー側ソースの仕組みになるとは考えないでください。

HashiCorp Vault や OpenBao に接続できますか?

はい。Pro は、外部シークレットソースとして HashiCorp Vault と OpenBao に対応しています。Enterprise では、ほかの対応シークレットマネージャー連携が追加されます。プロバイダーを設定し、値を Git にコミットする代わりに Key Store から認証情報を参照します。認証とシークレットパスはプロバイダーガイドに従い、意図した認証情報でジョブをテストしてください。

認証情報を更新すると、何が変わりますか?

テンプレートは、各ジョブに個別のパスワードや鍵を埋め込む代わりに、名前付き認証情報を参照します。認証情報または設定済みの取得元を更新したら、それを参照するリポジトリとインベントリを確認してください。更新後は代表的なタスクをテストし、次の本番定期実行より前に認証失敗を検出できるようにします。

Semaphore は、すべてのシークレットがタスク出力に現れるのを防ぎますか?

すべての情報が必ずマスキングされるとは考えないでください。Playbook やスクリプトは、機密変数、コマンド引数、API 応答を出力する可能性があります。ログ出力を意識して設計し、ツールに適したシークレット処理オプションを使い、成功時だけでなく代表的な失敗時の出力も確認します。ログやエクスポートした記録へのアクセスは内容に応じて制限してください。値を安全に保存するだけで、実行コードが出力するすべてを制御できるわけではありません。

複数のジョブで同じ SSH 鍵や Vault パスワードを再利用できますか?

はい。Key Store の認証情報に名前を付け、リポジトリ、インベントリ、テンプレートがその種類の認証情報を必要とする箇所で選択します。ジョブは Git に個別のコピーを持たず、設定済みエントリーを参照します。対象システムに異なる ID が必要な場合は、別の認証情報を使ってください。タスクテンプレートを見る。