安全のしくみ
鍵をどう預かり、だれに渡し、何を残しているかをまとめます。
保管
値は AES-256-GCM で暗号化して保管します。保管庫ごとに別の鍵で暗号化し、その鍵はさらに大もとの鍵で包んでいます。大もとの鍵は保管場所を分けてあり、入れ替えても預けたものを作り直す必要はありません。
一覧の取得では値を返しません。値が動くのは、人かエージェントがその 1 本を名指しで取りに来たときだけです。
通信
画面も、手元の道具も、サーバとのやりとりはすべて TLS です。手元の資格情報は ~/.config/aikagi に本人だけが読める権限で置かれます。
サインイン
人のサインインは Google アカウントだけです。aikagi 専用のパスワードはありません。パスワードの使い回しや、退職者のパスワードが残ることを考えずに済みます。
ターミナルからのログインは、かならずブラウザで 1 回承認します。承認した端末は一覧に出て、いつでも切り離せます(端末)。
だれに渡すか
鍵が渡るかどうかは、3 つを順に通ります。
許可されなかった鍵は、名前も返りません。権限が足りないときは、黙って空を返すのではなく、その旨を返します。
記録
値の取得は 1 回ごとに 1 行残ります。だれが・いつ・どの鍵の・どの版を・どこから取ったか。監査ログは画面からもターミナルからも読めます。値そのものは記録に入りません。
切り離す
止めかたは 3 つあります。どれもその場で効きます。
- 端末ごとの失効。その端末は再びログインするまで鍵を取れません。
- エージェントの鍵の失効。期限も必須で、最長 365 日です。エージェントを失効させれば、その鍵も一緒に止まります。
- メンバーを外す、または招待を取り消す。
AI エージェントに渡すときの考えかた
エージェントに鍵を渡す以上、その鍵はエージェントの手元にあります。aikagi はそこを、次の 4 つで扱いやすくしています。
- 渡すのは環境変数だけで、
.envのようなファイルを作りません。値は子プロセスの中にしか現れません。 - 渡す範囲は役割とフォルダで狭められます。人の手が入らないところは、用途ごとのエージェントを立てて必要な範囲だけ与えます。
- 必要になった 1 本だけを取りに行く道もあります。
- 渡したこと、取ったことが、すべて記録に残ります。