アクセスを取り消す・super_admin を引き継ぐ
辞めた人や外した人のアクセスを、実際に止まる場所で止められるようになります。全員のセッションを一度に切る方法と、配備管理者(super_admin)の交代の手順も扱います。
| あなたがやること | Agent Fleet がやること |
|---|---|
| 許可リストかテナントのメンバーシップから外す | 次のリクエストで締め出し、その人の PAT と MCP の OAuth の接続を失効させる |
| ワークスペースを止め、home を掃除する | 残ったデータを片付ける |
急ぐときは AF_COOKIE_SECRET を入れ替える |
全員のセッションを、その場で無効にする |
SUPER_ADMIN_EMAILS を書き換えて再起動する |
リストにない人の super_admin を、データベースからも外す |
アクセスが実際に切れる場所
Section titled “アクセスが実際に切れる場所”入り口が 2 つあるので、出口も 2 つあります。どちらを使うかは、その配備が人をどう迎えているかで決まります。
| 入り方 | 外し方 | 効くとき |
|---|---|---|
許可リスト(AF_OAUTH_ALLOWED_*) |
リストから消す | 次のリクエスト(毎リクエストで確かめます) |
| テナントのメンバーシップ(招待) | 管理 → そのテナント → そのメンバー →「メンバーを外す」 | 次のリクエスト |
セッションを 1 つずつ失効させる方法はありません。 セッションの cookie は署名付きの {email, exp} だけで、サーバーにセッションの保存先がないので、「すべての端末からログアウト」もありません。
cookie そのものは最長 AF_SESSION_TTL(既定 7 日)有効なままで、アクセスを止めているのは毎リクエストの確認です。
API のトークンも一緒に切れる
Section titled “API のトークンも一緒に切れる”個人アクセストークン(PAT)と MCP の OAuth の接続はセッションではないので、毎リクエストの確認にはかかりません。別の経路で切れます。
| 外し方 | トークンに起きること |
|---|---|
| メンバーシップを外す | そのメンバーシップで発行した PAT と OAuth の接続が、同じ操作ですべて失効します。招待し直しても戻りません |
| 許可リストから消す | 次にトークンが使われたとき、Control Plane がその人のサインインの方式に「まだ入れるか」を問い合わせます。どれも通さなければ、その人の PAT と接続をすべて失効させて 401 を返します |
- 失効させるのは、はっきり拒まれたときだけです。確かめられないとき(再起動の直後や障害中の GitHub のアダプター、読めない許可リストのファイルなど)は失効させません
/mcpで PAT を使うことは、ワークスペースがオフィスの外から呼ぶため、テナントの許可ネットワークの対象外です。止めるのは失効の役目です
PAT の期限
Section titled “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 から先は後片付けです。
- メンバーシップを外します(許可リストで運用しているなら、リストから消します)
- ワークスペースを止めます(管理 → メンバーの詳細 →「ワークスペースを強制停止」)
- home を掃除します
メンバー詳細での操作と、home の掃除で何が残るかは メンバーを外す にあります。
- home の掃除の前に、本人に push してもらいます。
~/reposは掃除のあとでは戻せません - home の掃除がない配備では、ワークスペースの破棄がこの手順になります(配備先ごとの違い)
辞めたあとで気づくと手遅れになる違いが 2 つあります。前もって知っておいてください。
| もの | 持ち主 | 人が抜けると |
|---|---|---|
| 定時実行 | 個人(メンバーシップに結び付く) | 止まります。引き継ぐ人が作り直します |
| 内部の git リポジトリ | テナント | 残ります |
全員のセッションを今すぐ切る
Section titled “全員のセッションを今すぐ切る”cookie の漏れ、端末の紛失、連絡の取れないアカウントなど、全員のセッションを今すぐ無効にしたいときに、その場で効くのは cookie の署名鍵を変えることだけです。
- 新しいランダムな値を作ります(compose の手順書 に
AF_COOKIE_SECRETを作る 1 行があります) AF_COOKIE_SECRET(.env・oauth.env・SSM のパラメータ)に入れます- Control Plane を再起動します
古い鍵で署名した cookie はすべて通らなくなり、全員がサインアウトされ、サインインし直します。乱暴ですが、秒の単位で効くのはこれだけです。
これはアクセスを取り上げません。 許可リストやメンバーシップに残っていれば、本人はまたサインインできます。上の外す手順と一緒に使ってください。
super_admin を引き継ぐ
Section titled “super_admin を引き継ぐ”SUPER_ADMIN_EMAILS(ホストの環境変数)が、誰がこの配備の管理者かを決める唯一の場所です。起動のときに 1 回だけ読むので、変えたら Control Plane の再起動が要ります。
Console から super_admin にする方法は、わざと作っていません。配備全体を動かせる権限は、ホストのファイルに触れる人だけが持つべきだからです。
SUPER_ADMIN_EMAILSを書き換え(後任を足し、前任を消し)、Control Plane を再起動します- Control Plane は、リストにない人のロールをデータベースからも外し、ログに
super_admin revoked (not in SUPER_ADMIN_EMAILS): …を出します - 後任は、最初のサインインでロールが付きます
- 前任を、上の手順で外します(メンバーシップ → 停止 → home)
2 があるのは、サインインのときに合わせる方法では、もうサインインしない退職者に永久に届かないからです。
- メンバーを外す:テナント管理者の手順
- ログインできない:外した人がまだ使えるとき
- そのほかの運用上の制御:許可リストの決まり
- 配備の鍵を扱う:
AF_COOKIE_SECRETの要件
エージェント向け
この指示をエージェントに送ると、このページを読ませられます。
https://agent-fleet.org/docs/ja/operate/secure/offboarding/index.md を読んで