コンテンツにスキップ

アクセスを取り消す・super_admin を引き継ぐ

辞めた人や外した人のアクセスを、実際に止まる場所で止められるようになります。全員のセッションを一度に切る方法と、配備管理者(super_admin)の交代の手順も扱います。

あなたがやること Agent Fleet がやること
許可リストかテナントのメンバーシップから外す 次のリクエストで締め出し、その人の PAT と MCP の OAuth の接続を失効させる
ワークスペースを止め、home を掃除する 残ったデータを片付ける
急ぐときは AF_COOKIE_SECRET を入れ替える 全員のセッションを、その場で無効にする
SUPER_ADMIN_EMAILS を書き換えて再起動する リストにない人の super_admin を、データベースからも外す

入り口が 2 つあるので、出口も 2 つあります。どちらを使うかは、その配備が人をどう迎えているかで決まります。

入り方 外し方 効くとき
許可リスト(AF_OAUTH_ALLOWED_*) リストから消す 次のリクエスト(毎リクエストで確かめます)
テナントのメンバーシップ(招待) 管理 → そのテナント → そのメンバー →「メンバーを外す」 次のリクエスト

セッションを 1 つずつ失効させる方法はありません。 セッションの cookie は署名付きの {email, exp} だけで、サーバーにセッションの保存先がないので、「すべての端末からログアウト」もありません。 cookie そのものは最長 AF_SESSION_TTL(既定 7 日)有効なままで、アクセスを止めているのは毎リクエストの確認です。

個人アクセストークン(PAT)と MCP の OAuth の接続はセッションではないので、毎リクエストの確認にはかかりません。別の経路で切れます。

外し方 トークンに起きること
メンバーシップを外す そのメンバーシップで発行した PAT と OAuth の接続が、同じ操作ですべて失効します。招待し直しても戻りません
許可リストから消す 次にトークンが使われたとき、Control Plane がその人のサインインの方式に「まだ入れるか」を問い合わせます。どれも通さなければ、その人の PAT と接続をすべて失効させて 401 を返します
  • 失効させるのは、はっきり拒まれたときだけです。確かめられないとき(再起動の直後や障害中の GitHub のアダプター、読めない許可リストのファイルなど)は失効させません
  • /mcp で PAT を使うことは、ワークスペースがオフィスの外から呼ぶため、テナントの許可ネットワークの対象外です。止めるのは失効の役目です
決まり 中身
無期限はない 最長は AF_PAT_MAX_DAYS です。既定は 365 日で、1〜3650 の範囲で指定します。範囲外の値だと Control Plane は起動しません
上限の前に作ったトークン 無期限で発行されたトークンも、作成から上限の日数で切れるものとして扱います。古いものはすぐ使えなくなります
テナントごとに下げられる 配備管理者がテナントの上限設定で「PAT の最長有効期間」(1〜3650 日、0 はテナントの上限なし)を設定します。AF_PAT_MAX_DAYS との低い方が、発行のときにも、使うたびにも、作成日から数えてかかります
  • 値を下げると、新しい上限より古いトークンはすぐ使えなくなります
  • かかるのはトークンを発行したテナントの上限で、super_admin のトークンもそのテナントに従います。メンバーシップに結び付かないトークンには AF_PAT_MAX_DAYS だけがかかります
  • テナントの値が未設定・読めない・範囲外のときは、配備全体の上限がかかります。「上限なし」にはなりません。テナントそのものが読めないときはトークンを拒みます
  • テナントが AF_PAT_MAX_DAYS より長くすることはできません

アクセスを切るのは 1 だけです。 2 から先は後片付けです。

  1. メンバーシップを外します(許可リストで運用しているなら、リストから消します)
  2. ワークスペースを止めます(管理 → メンバーの詳細 →「ワークスペースを強制停止」)
  3. home を掃除します

メンバー詳細での操作と、home の掃除で何が残るかは メンバーを外す にあります。

  • home の掃除の前に、本人に push してもらいます。~/repos は掃除のあとでは戻せません
  • home の掃除がない配備では、ワークスペースの破棄がこの手順になります(配備先ごとの違い)

辞めたあとで気づくと手遅れになる違いが 2 つあります。前もって知っておいてください。

もの 持ち主 人が抜けると
定時実行 個人(メンバーシップに結び付く) 止まります。引き継ぐ人が作り直します
内部の git リポジトリ テナント 残ります

全員のセッションを今すぐ切る

Section titled “全員のセッションを今すぐ切る”

cookie の漏れ、端末の紛失、連絡の取れないアカウントなど、全員のセッションを今すぐ無効にしたいときに、その場で効くのは cookie の署名鍵を変えることだけです。

  1. 新しいランダムな値を作ります(compose の手順書 に AF_COOKIE_SECRET を作る 1 行があります)
  2. AF_COOKIE_SECRET(.env・oauth.env・SSM のパラメータ)に入れます
  3. Control Plane を再起動します

古い鍵で署名した cookie はすべて通らなくなり、全員がサインアウトされ、サインインし直します。乱暴ですが、秒の単位で効くのはこれだけです。

これはアクセスを取り上げません。 許可リストやメンバーシップに残っていれば、本人はまたサインインできます。上の外す手順と一緒に使ってください。

SUPER_ADMIN_EMAILS(ホストの環境変数)が、誰がこの配備の管理者かを決める唯一の場所です。起動のときに 1 回だけ読むので、変えたら Control Plane の再起動が要ります。 Console から super_admin にする方法は、わざと作っていません。配備全体を動かせる権限は、ホストのファイルに触れる人だけが持つべきだからです。

  1. SUPER_ADMIN_EMAILS を書き換え(後任を足し、前任を消し)、Control Plane を再起動します
  2. Control Plane は、リストにない人のロールをデータベースからも外し、ログに super_admin revoked (not in SUPER_ADMIN_EMAILS): … を出します
  3. 後任は、最初のサインインでロールが付きます
  4. 前任を、上の手順で外します(メンバーシップ → 停止 → home)

2 があるのは、サインインのときに合わせる方法では、もうサインインしない退職者に永久に届かないからです。

エージェント向け

この指示をエージェントに送ると、このページを読ませられます。

https://agent-fleet.org/docs/ja/operate/secure/offboarding/index.md を読んで