サービスアカウントは退職しない
人間のアイデンティティには必ず「最終出社日」がある。マシンのアイデンティティは作られ、権限を与えられ、忘れられる — そしてアクセスレビューの名簿に載らない。
人が会社を去るとき、プロセスが走る。遅れがちで、ときに間の抜けたプロセスだが、とにかく存在する。アカウントの無効化、セッションの失効、誰かが署名するチェックリスト。人間のアイデンティティにライフサイクルがあるのは、給与計算がそれを強制するからだ — 退職者への支払いを「忘れ続ける」ことはできない。
サービスアカウントにライフサイクルを強制するものは、何もない。ある連携のために作られ、金曜の午後に狭いスコープでは動かなかったという理由で少し広めの権限を与えられ、そして、ただ存続する。作ったエンジニアはチームを移る。話し相手だったベンダーはリプレイスされる。アカウントは残る — 認証済みで、認可済みで、アクセスに関するあらゆる会話から不在のまま。
なぜレビューは捕まえられないのか
アクセスレビューは人を軸に組み立てられている。監査人が歴史的にそう尋ねてきたし、レビューのツールもそう作られてきたからだ。レビューは組織図を歩く。これがキムの権限、これがリーの権限、上長はまだ必要だと確認しますか?
サービスアカウントに上長はいない。チームか、プロジェクトか、あるいは何にもぶら下がっていない。多くのディレクトリでは、そもそも同じ種類のオブジェクトですらない — レビュープロセスが一度も向けられたことのない、別のリストに住んでいる。かくして、恒常的な特権を削るはずの四半期ごとの儀式は、特権が最も速く育つアイデンティティを組織的にスキップする。
そして実際に育つ。人間のアクセスは異動と退職で刈り込まれる。マシンアイデンティティのアクセスは蓄積する一方だ。権限が足りなかったインシデントは権限の付与で終わり、権限が剥奪されて終わるイベントは存在しない。特権は上向きに老い、説明責任は下向きに老いる。やがて、本番書き込み権限を持つのに、存在理由を誰も諳んじられないクレデンシャルができあがる。
鍵が事態を悪化させる
人間の認証は良くなった — パスキー、ハードウェア裏付け、フィッシング耐性。マシンの認証は、いまだに大部分が「環境変数の中の長寿命シークレット」を意味する。この鍵はCIの設定に、ラップトップに、チャットのスレッドにコピーされる。誰かが有効期限を選ばない限り失効せず、有効期限を選ぶことは未来の障害に署名することなので、たいてい誰も選ばない。
その結果が、お決まりのインシデントの形だ。何年も前に発行され、スコープ設定が面倒だったのですべてに届き、もう在籍していない人が保有していた鍵が、ビルドログから漏れる。ログイン異常のアラートは鳴らない。ログインが存在しないからだ — 鍵そのものが、永遠のセッションである。
エージェント型のソフトウェアは、賭け金をさらに引き上げる。委任された権限で動くAIエージェントは非人間アクターの数を増やし、cronジョブより自律的に振る舞う。既存のマシンアイデンティティの規律が「作って忘れる」なら、それをエージェントに延長することは「意思決定するものを忘れる」ことを意味する。
本物のライフサイクルの形
修正に必要なのは新しい製品カテゴリーというより、「マシンを例外扱いしない」という拒否だ。
- 名前を持つ人間のオーナー。 チームのエイリアスではなく。オーナーが退職したら、アカウントは自動的にレビューに入る — 一度も持ったことのなかった「最終出社日」だ。
- 発行日と有効期限。 更新は、誰かが存在理由を言い直さなければならない瞬間になる。期限切れによる障害リスクはバグではなく機構だ。誰も更新しないものは、止まるべきものである。
- 贈与ではなく貸与としてのスコープ。 記録され、人間のアクセスと同じスケジュールで、同じツールで、同じレビュアーの前で見直される。
- 実際に何をしたかの監査証跡。 サービスアカウントが過剰権限になるのは、まさに誰も使用実態を見られないからだ。使用データは「たぶん必要」を差分に変える。
10秒テスト
最も古い現役のサービスアカウント・クレデンシャルを探し、二つ問う。誰が所有しているか。今日失効させたら何が壊れるか。
一つ目の答えが退職者なら、あるいは二つ目の答えが肩をすくめる仕草なら、そのクレデンシャルはインフラではない。評判のいい、施錠されていないドアだ。
Axowlはマシンにも、AIエージェントにも、人間と同じ種類のアイデンティティを発行する — 所有され、スコープされ、期限を持ち、同じ場所で監査される。仕組みを見る