Echolot
ワークスペース

シークレット

パスワード、トークン、キーをワークスペースのファイルではなくキーチェーンに保管し、コマンドラインツールとCIに渡す方法を説明します。

シークレットは、値があなたのMacのキーチェーンに残る変数です。ワークスペースのファイルには名前だけが入るので、認証情報を共有することなく、ワークスペースをコミットして共有できます。パスワード、トークン、APIキー、チャットに貼り付けたくないものには、シークレットを使います。

変数をシークレットにする

  1. 変数のテーブルを開きます。環境ページ、フォルダ設定… › 変数、またはリクエストの変数タブです。
  2. 変数を追加するか、すでにある変数を見つけて、シークレットにチェックを入れます。
  3. フィールド(このMacでは未設定と表示されています)に値を入力して、↩を押すか、保存をクリックします。

フィールドに値が再び表示されることはありません。値が入ると、鍵のアイコンとともにキーチェーンに保存済みと表示されます。値を変更するには、新しい値を入力して保存します。

シークレットは、ほかの変数と同じように{{token}}として使います。

環境ページのワークスペース変数。tokenにシークレットの印が付き、値のフィールドに「キーチェーンに保存済み」と表示されている

ファイルでは、シークレットは名前とフラグだけで、値はありません。

[[variables]]
name = "token"
secret = true

各レベルが、それぞれ自分の値を持ちます。Stagingの環境にあるシークレットpasswordとProductionにあるものは、キーチェーンの2つの項目なので、環境ごとに別のパスワードを持てます。

値の保管場所

値は、ログインキーチェーンに、シークレット1つにつき1項目で保存され、Echolot secret <name>というラベルが付きます。値は、ワークスペース(workspace.tomlにあるID)と、変数が定義されているレベルに属します。同じMac上のコマンドラインツールは、同じ項目を読み取ります。

このMacに値がないシークレットは、別のレベルにフォールバックしません。値を設定するまで、リクエストはthe secret {{password}} has no value on this Macと表示します。

Mac App Store版

App Store版も同じキーチェーンを使います。ダイレクトダウンロード版やコマンドラインツールが作った項目では、最初にアクセスの許可を求められることがあります。その場合は常に許可を選んでください。

エディションを比較

ファイルに入らないもの

Echolotは、次のものをワークスペースのファイルに入れません。

  • シークレット変数の値。
  • レスポンスのキャプチャが保存するシークレット。シークレットとして設定したキャプチャは、キーチェーンにのみ書き込みます。Alpenglowでは、Auth › Sign inがaccess_tokenをシークレット{{token}}にキャプチャします。
  • OAuth 2.0のトークンとMCPのサインイン。
  • キーチェーンに移動(下記)で移した値。

プレーンテキストで入力した内容は、プレーンテキストのままです。認証やプロキシのパスワードのフィールドに、変数ではなく値そのものが入っている場合、Echolotはその下にワークスペースのファイルにプレーンテキストとして保存されます。と警告を表示します。キーチェーンに移動をクリックすると、値がワークスペースのシークレット変数になり、フィールドには代わりに{{name}}が入ります。

シークレットは、Echolotが解決済みのリクエストを表示したり渡したりするすべての場所でも、マスクされます。プレビュー、クイックルック、変数パネル、履歴の検索、エージェントが受け取るすべてが対象です。コードを生成…とcURLとしてコピーは例外で、リクエストを送信されるとおりに、シークレットも含めて書き出します。

読み込みで認証情報がシークレットに移る

Postmanのコレクション、Insomniaのエクスポート、そのほかのファイルを読み込むと、認証設定や認証情報のヘッダーにあるパスワード、トークン、APIキーが、シークレット変数になります。値はキーチェーンに保存され、リクエストには代わりに、リクエストの名前とフィールドから作られた{{name}}({{me_password}}など)が入ります。読み込みのレポートには、保存したシークレットの名前が一覧表示され、値は表示されません。

アドレス(https://user:pass@…)、クエリ文字列、ボディに書かれた認証情報は、まだ移動されません。読み込んだ後に確認してください。

書き出しでは値が除かれる

書き出しでは、どの形式でも、シークレット変数は名前だけが書き出され、値はありません。書き出しを開いた人が、自分の側で値を設定します。

コマンドラインとCIでのシークレット

コマンドラインツールは、次の順でシークレットの値を探します。

  1. echolot runに渡した--secretsファイル。NAME=valueの行です。
  2. 環境変数ECHOLOT_SECRET_<NAME>。名前を大文字にし、英字と数字以外の文字をすべて_にしたものです。{{token}}はECHOLOT_SECRET_TOKENを、{{api-key}}はECHOLOT_SECRET_API_KEYを読みます。
  3. Macでは、アプリが保持しているキーチェーンの項目。
ECHOLOT_SECRET_TOKEN=… echolot run Alpenglow.echolot --folder orders
echolot run Alpenglow.echolot --env staging --secrets staging.secrets

CIが設定されているときと、ECHOLOT_KEYCHAIN=0のときは、キーチェーンは使われません。CIでは、CIのシークレットストアからECHOLOT_SECRET_…変数を設定してください。CIを参照してください。

環境変数で見つかったシークレットは、すべてのレベルに適用されます。ECHOLOT_SECRET_PASSWORDは、どの環境でも{{password}}に答えます。

コマンドラインでの読み込みも、アプリと同じように認証情報をシークレットに移します。キーチェーンがない場合、ツールはどのECHOLOT_SECRET_…変数を設定すればよいかを伝えます。

チームメンバーが最初に開くとき

ワークスペースをクローンしたチームメンバーには、すべてのシークレットの名前が渡り、値は1つも渡りません。そのテーブルにはこのMacでは未設定と表示されます。各自が自分の値を1回設定すれば、以降は全員が同じファイルで、それぞれの認証情報を使って作業できます。Gitとチームを参照してください。

このページの内容