0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Codeと漏えい対策:APIキーを残さないログ実装

0
Posted at

漏えいが続く今、開発ログにAPIキーまで残していないか?

自分は、リクエスト丸ごとの保存をまず止めたい。認証情報までデバッグ材料にするのは雑すぎる。

Q. AIで攻撃の何が変わった?

Anthropicの9月報告では、Claude Codeを使った攻撃ワークフローを観測している。同社は、少ない人員で広い範囲を攻撃できるようになったと見る。自分は、穴を探す自動処理に、結果を読んで次の作業を選ぶ役まで加わる点に注目してる。国内の事件でのAI利用は確認が必要だ。

Q. 委託先なら任せてよい?

10月9日の報道も扱うIDCFの被害は、495の企業・自治体に影響した。第3報では一部ゾーンのデータは取り出し・復元が困難な見通し。共有基盤が止まれば、各利用者のアプリも巻き込まれる。495は漏えい件数ではない。

Q. コードで減らせるものは?

個人情報保護委員会の資料はMFAやEDRを例示し、不要な個人データの消去も促している。まず保存項目を絞る。

架空データをPython 3.14.8で実行済み。log_demo.pyに保存し、python3 log_demo.pyで動く。

def log_fields(d):
    s = d["status"]
    if type(s) is not int or not 100 <= s <= 599:
        raise ValueError("status")
    return {"status": s}

raw = {"status": 200, "api_key": "dummy",
       "headers": {"Authorization": "Bearer dummy"}}
blocked = {k: v for k, v in raw.items() if k != "api_key"}
print("headers" in blocked)
print(log_fields(raw))
True
{'status': 200}

キー名を除外してて、入れ子のAuthorizationが残るのを確認した。許可した数値だけ組み直すと、未知の項目も保存されない。型も見るのは、status欄に秘密の文字列を入れる抜け道を閉じるため。HTTPステータスだけの最小例なので、調査用の項目は用途ごとに足す。

api_keyだけの除外では入れ子のAuthorizationが残る。statusの整数値と範囲だけを許可し、新しい辞書をログへ渡す比較図

Q. これで終わり?

既存ログやSDKの別ログには、この加工は効かない。開発用キーの権限と期限も絞り、不要なコピーは保存義務や調査の必要性を確認して整理する。監査ログは保護して残す。今日は保存用の辞書を組み直す。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?