メインコンテンツまでスキップ

シークレット

シークレットは、名前のついたキー/値のエントリの束です。HashiCorp Vault の KV エンジンと同じ形で、1 つのパスがキーと値のマップを持ちます。AWS のアクセスキー ID とシークレットアクセスキーのように、まとまって使う資格情報は、2 つのシークレットに分けず 1 つのシークレットの 2 エントリとして持ちます。

管理サイドバーの Secrets を開くと管理できます。レコードは Name、任意の Description、タグ、そして種類を持ちます。

どこで使われるか​

  • MCP サーバー — ヘッダーの値と環境変数の値には ${secret:name/key} を埋め込めます。展開されるのは接続のときです。
  • エージェントスキル — スキルの Auth Password は 1 エントリへの参照で、入力ではなくドロップダウンから選びます。

1 つのエントリは必ず name/key で指します。エントリが 1 つしかないシークレットでもキーは必須です。名前だけではマップを指すことになり、値を指せないからです。キーのない ${secret:name} は文字列としてそのまま渡されるのではなく、解決に失敗します。

2 つの種類​

Local(暗号化)HashiCorp Vault
保存されるものエントリそのもの。値は暗号化されますKV v2 への参照だけ。Vault Mount と Vault Path
値の取得元暗号化された保存領域解決のたびに Vault から直接読みます
詳細ページの表示保存済みのキーすべてと、空の値マウントとパス
エントリの編集値を空のままにすると保たれ、入力し直すと置き換わり、行を消すとそのエントリが消えますVault の側で行います

値はどちらの種類でも返されません。平文でも暗号文でも返りません。だから Local の詳細ページは、キーだけを並べて値を空にします。キーだけは読めるので、ピッカーが一覧できます。Local なら保存されたマップから、Vault ならその時点で Vault から読みます。

Vault のシークレットは、そのシークレットが属するテナントの Vault から読まれます。その接続はテナントの admin が Tenant Settings で設定します。接続していないテナントは、テナント自身の資格情報でグローバル Vault から読みます。何を読めるかは、その資格情報に付いた Vault ポリシーが決めます。どちらもなければ、vault 種別のシークレットは解決できません。Local のシークレットを暗号化する鍵は、設定リファレンスで一度だけ設定します。

改名と削除​

シークレットは名前で参照され、解決は使うときに行われます。何かから参照されているシークレットを改名したり削除したりしても、その場では失敗しません。次に使われたときに、見つからなかったシークレット名とともに失敗します。参照が切れたエージェントスキルは、次に Pull したときに理由を自分のレコードに記録します。

ただし、参照を保存するときにはチェックが入ります。ヘッダーや環境変数でシークレットを参照する MCP サーバーを保存するとき、スクリプトの Test Run を実行するとき、スキルの Auth Password を保存するときは、そのシークレットが存在し、かつ自分が開けるものでなければなりません。アクセス制御タグで自分から隠されているシークレットは、存在しないものとまったく同じように拒否されます。すでにそうしたシークレットを参照しているレコードを編集する場合も、ほかのフィールドだけを変えるときを含めて同じです。