AIエージェントが人間ユーザーの認証情報を使ってデータベースにアクセスすると、システムはアカウントの背後に隠れた「エージェントのアイデンティティ」を取得するのではなく、ユーザー本人を認識する。これは、Azure、Azure CLI、sqlcmdを使用する本番環境で、Naseeb Ahmed Mianが実施した測定の中心的な結論である。
調査対象の構成では、ソフトウェアエージェントのスキルは、Azure CLIによる認証を用い、sqlcmdコマンド経由でデータベースに接続していた。このコマンドは、ユーザーのログイン後にキャッシュされたアクセストークンを取り出し、それをデータベースに提示する。その結果、クエリをユーザー自身が入力した場合でも、エージェントが実行した場合でも、接続はユーザー名、ユーザーのデバイス名、sqlcmdツールとともに記録された。
監査ログが認識するのは認証情報であり、意図ではない
セッションログには、ユーザーのログイン名、ワークステーション名、クライアントインターフェースが表示されたが、エージェントが実行した操作を識別するフィールドは含まれていなかった。そのため、人間によるクエリと自動実行されたクエリはログ上で同一となり、後続の制御では、実行元に基づいてリクエストレート、承認ステップ、保持ポリシーを異なるものにすることができない。
問題はセキュリティ調査に限られない。数か月前に実行されたクエリが後から問題視された場合、ユーザーが自ら記述したのか、自動ツールが実行したのかをログは証明できない。ログは操作を認証情報に正確に帰属させる一方で、意図や実際の実行者については沈黙している。
アクセストークンが明らかにするもの
Azure CLIが渡したトークンにはuser_impersonationスコープが含まれており、認証に多要素認証が含まれていたことを示すクレームも含まれていた。実際には、エージェントが実行するすべての操作に、ユーザーが多要素認証を通過した証拠が付随する。たとえそれが数時間前に、別のタスクの文脈で行われたものであっても同様である。
また、トークンの有効期間は84分だが、必ずしもエージェントの実行終了を意味しない。CLIはリフレッシュトークンを使ってトークンを自動更新するため、リフレッシュトークンの期限が切れるか、ユーザーアカウントが無効化されるまで、監視されていない実行が継続する可能性がある。
グループ所属が全体像を広げる
ロール割り当てを調べた結果、表示された行は1つだけで、非本番サブスクリプションにおけるReaderロールだった。しかし、アクセストークンには37のグループが含まれていた一方、直接的な所属を調べるクエリでは34グループが示され、入れ子になったグループも存在していた。アクセスに関連するグループには、SQLデータベース閲覧者、特権ユーザー、リソース共同作成者、データベース管理者などのロールが含まれていた。
危険なのは、こうした所属がデータ層における実際の権限を持つ可能性があり、必ずしもコントロールプレーンのロール検査に表示されない点である。そのため、従来の方法で確認するとエージェントのアクセス範囲は限定的に見える一方、グループ所属によって、より大きな能力が与えられている可能性がある。
実際には何が変わるのか
同じアイデンティティを、1時間の間隔を空けて2つの本番データストアでテストしたところ、結果は大きく異なった。一方では、そのアイデンティティが持っていたのはCONNECTとSELECTの2権限だけで、安全な層には接続できなかった。これに対し、別の本番分析エンドポイントでは430のテーブルと107の権限が示され、その中には読み取り、書き込み、スキーマ定義、データベース管理が含まれていた。
この比較は、権限範囲がアイデンティティだけで決まるのではなく、アクセス経路、エンジン、エンドポイントに関連付けられた制御も重要な要因であることを示している。文書上は読み取り専用のエンドポイントであっても、別のエンジン経由でデータが呼び出された際に、そのセキュリティルールが必ずしも引き継がれるとは限らない。
certi.newsの編集部による見解:問題は、エージェントに「アイデンティティがない」ことではない。人間のアイデンティティが、独立した機械用アイデンティティの代替として手早く使われていることにある。これは、帰属、権限の拡大、無効化という3つの地点で破綻する。また、認証情報が安全なデータベースから削除する能力を持っていた環境は、監査ログが有効化されていなかった唯一の環境だったことも、測定によって明らかになった。グループ所属の一貫性、発行済みトークン内での一時的な権限の継続、単なる認証情報の所有者ではなく実行意図を記録する組織の能力については、重要な疑問が残されている。
ニュースの出典
The New Stack - Software Development
原文を開く ↗