Grok Botの仕組み講座(講師のためのエンジニア水準)

区分4 止める・繰り返す仕組み★★

No.10 秘密の扱い(Vault・秘密カード・Secrets)

パスワードやAPIキーの保存先と、誰が読めるか、どこで消えるかを見る単元です。受講生から必ず聞かれる「AIに見えているんですか」に、秘密の種類ごとに答えるための地図になります。区分4の締めなので、表を中心にしっかりやります。
目次
  1. 第0章 前提知識
  2. 第1章 4つの置き場
  3. 第2章 消える物・消えない物・貼らない物
  4. 確認問題

第0章 前提知識

① 書き込み専用 :入れたら、二度と読めない

この単元で出てくる秘密は、ほぼ全部が「書き込み専用」です。 パスワード・カード番号・セキュリティコードは、保存すると、画面にもボットにも二度と表示されません。Vault(ボット用の金庫)ではパスワードが隠れたままで、カードは下4桁だけが見えます。

全部が隠れるわけではありません。連絡先と、どのログインを保存したかは、ボットに見えます。連絡先は、設定画面で足したり直したりできます。

読めないので、値を変えたい時は「置き換え」しかありません。 共有ボットの Secrets(この後の第1章)なら、Replace を押して新しい値を貼ります。古い値を読み戻すことはできません。

空欄になっていても、消えた証拠にはなりません。 公式にもそう書かれています。 No.06 で見た「値はモデルを通らない」の図は、この書き込み専用の性質の上に成り立っています。

② 「秘密」は1種類ではない

受講生には「パスワードの置き場は1か所」と思われがちです。 実際は、中身と使う人によって置き場が分かれていて、「誰が読めるか」「どこに住むか」がそれぞれ違います。 ボットに値を見せない道は、Vault・1Password・Secure Form・秘密カード・共有ボットの Secrets です。Team Secrets は、ボットのためでなくスクリプトのための置き場です。 これらを混ぜないことが、この単元のすべてです。

第1章 4つの置き場

① 保存する置き場を1枚の表にする 必ず覚える

置き場 入れる物 誰が使えるか ボットには
Vault ログイン・カード・連絡先 アカウント全体。自分の全ボットが使える。1つのボットに限定はできない。共有ボットでは使えない パスワード・カード番号・セキュリティコードは見えない。連絡先と「どのログインを保存したか」は見える
秘密カード APIキーなどログインでもカードでもない秘密 ボットが求めた時に入力欄が出る 値は伏せ字で、チャットにも transcript(会話の記録)にも残らず、モデルに見せない
共有ボットの Secrets 環境変数名+説明+値 共有ボットで、オーナーか管理者が追加する。そのボットとチャットする全員の会話で使われる 説明は見える。値は見えない
Team Secrets Team Setup Script が使う認証情報(ライセンスキーなど) Enterprise のみ。チーム管理者がダッシュボードで管理 直接は渡らない

環境変数は、プログラムに渡す名前つきの設定値のことです。

表にない2つにも触れます。1Password は、連携していれば Vault の次に使われる、すでにあなたが使っている金庫です。Secure Form は、ボットに見せずにページへ直接入れる欄です。 「Securely save to Bot's vault」にチェックを入れなければ、その会話だけの値になります。

② 値はどこを通るか 必ず覚える

No.06 の図を、秘密の種類ごとに広げます。

手元のアプリ ──→ Cursorのサーバー ──→ クラウドの計算機(ページに入力)
   │                    │
   │ Vault/Secure Form │ 値はページへ直接入る。モデルには渡らない
   │ 秘密カード         │ 伏せ字で保存。transcript に残らない
   │
共有ボットの Secrets:  名前+説明はボットに見える/値は見えない
Team Secrets:          Setup Script の実行中だけ環境変数になる
                        └→ ボットには直接渡らない

どの経路でも、値がモデルの手前で止まっている点は同じです。 違うのは、止まる場所と、そこに誰がアクセスできるかです。

③ 共有ボットの Secrets は「全員のチャット」で使われる 必ず覚える

共有ボットの Secrets は、環境変数名・短い説明・値を入れて保存します。 説明はボットに見えて、値は見えません。後から一覧に出るのも名前と説明だけで、値は Shell(計算機で命令を打つ道具)の中でも読めません。

ここで落とし穴があります。 オーナーが入れた Secrets は、そのボットとチャットする全員の会話で使われます。公式は「全員に使わせてよい鍵だけを入れる」と書いています。

Vault は共有ボットで使えません。公式は理由を書いていません。 公式が示す手段は、共有ボットに鍵を足したい時に Vault ではなく Secrets に入れることです。

④ Team Secrets は、ボットではなく「準備の台本」のための秘密 さらっと

Team Secrets は Enterprise 限定です。 チーム全員の計算機に道具を入れる Team Setup Script(管理者が書く準備の台本)が、ライセンスキーや認証キーを読むための置き場です。台本の文面に値を書かずに済みます。

仕組みの要点は次のとおりです。

「私設網の入口になる認証キー」を入れたい、という相談も来ます。 その時の答えは、台本の本文に書かず Team Secret に入れて $名前 で読む、です(私設網は No.11 で扱います)。

第2章 消える物・消えない物・貼らない物

① 計算機の作り直しで消えるのは「計算機に書いた秘密」 必ず覚える

No.03 の表のとおり、ソフトだけの Update は何も消しません。 計算機ごとの Update は、入れたアプリとパッケージを消します。Recover と Reset も同じです。/workspace のファイルは、保存されていれば残ります。

それでも公式は、ファイル・シェルの設定・入れた道具の中に自分で書いた秘密は、アプリやパッケージと一緒に消えうる(can disappear)と書いています。 公式は細かい理由を書いていないので、「計算機の中に書いた秘密は当てにしない」と覚えます。

一方、Vault・秘密カード・Secrets は別の場所に保存されています。 こちらは計算機を作り直しても残ります。

受講生の「アップデートしたら鍵が消えた」には、まず「どこに入れた鍵ですか」と聞きます。 計算機の中に書いたなら、消えた可能性があります。Secrets に入れたなら、名前が一覧に残っているかを見ます。残っていれば、値は保存されたままです。

② 貼ってはいけない場所 必ず覚える

次の場所には、パスワード・ワンタイムコード・APIキーを貼りません。

秘密は、上で挙げた、ボットに値を見せない道から入れます。 鍵を控えようとしてファイルに写すのも、避けます。

③ 名前が消えた時の確認 さらっと

共有ボットの Secrets の名前が、自分で削除していないのに消えた時は、まずアプリを完全に終了して開き直します。 次に、同じ Cursor アカウントの別の端末で開いて確かめます。それでも無ければ入れ直します。続けて消える時は、サポートに連絡します。その時はメールアドレスと Secrets の画面だけを送り、値は送りません。

○ よくある勘違い 「Vault に入れたから、共有ボットでも使える」→ 使えません。共有ボットでは Secrets に入れます
○ よくある勘違い 「Secrets が空欄だから消えた」→ 空欄は消えた証拠ではありません。名前が残っているかを見ます
○ 関係する単元:No.03(Reset で消える物)/No.05(連携アプリの鍵の置き場)/No.06(ログインの順番)/No.11(Team Setup と私設網)

保存する置き場は Vault・秘密カード・共有ボットの Secrets・Team Secrets の4つで(ほかに 1Password と Secure Form)、誰が読めるかが違う。パスワード・カード番号などの保存した値は二度と読めず、空欄は消えた証拠ではない。消えうるのは、計算機の中(シェルの設定や入れた道具など)に自分で書いた秘密だけ。

確認問題

問1 受講生が「共有ボットの Secrets に入れた鍵は、チームの誰がボットと話しても使われますか」と聞いてきました。答えは?

問2 計算機を Reset したあと、「鍵が使えなくなった」と相談が来ました。まず確かめるべきことは?

問3 Team Secrets について正しいのは?

出典:https://docs.x.ai/grok-bot/vault / https://docs.x.ai/grok-bot/teams-and-enterprises / https://docs.x.ai/grok-bot/private-networks / https://docs.x.ai/grok-bot/approvals-security-and-privacy / https://docs.x.ai/grok-bot/security