カナダ・アルバータ州、Claude Codeでセキュリティ監査を実施——4億6600万行のコードを20時間でスキャン、本来なら6.5年かかるところを
- カナダ・アルバータ州の技術革新省は2025年から、Claude Code(Claude OpusとClaude Sonnetモデルを併用)で政府システムのセキュリティ監査を行っている。
- 約50体のエージェントが自律的に並行稼働し、20時間で4億6600万行のコードをスキャン。州内27の部門、約1,280のアプリケーション、3,400のコードリポジトリをカバーした。
- チームの試算では、同規模の従来型の人手による監査には約6.5年かかっていたという。
- Claude Codeは脆弱性を特定するだけでなく、修正コードの生成、テストの作成、さらには時代遅れのシステムを現代的な言語で書き直すこともできる。25年前にJavaで手作業開発され、当初5か月かかった補助金システムを、わずか4〜5日で再構築した例もある。
- チームはさらに、常時稼働するレッドチーム/ブルーチーム型のセキュリティ審査エージェント群を構築し、各アプリケーションについて毎回約95項目のセキュリティ管理策を点検している。アルバータ州はすでに技術ホワイトペーパーを発表し、他の政府機関の参考に供している。
誰が政府システムのセキュリティをAIで点検しているのか
カナダ・アルバータ州の技術革新省は2025年から、Claude Code(Claude OpusとClaude Sonnetの2モデルを併用)を使って州政府システムのセキュリティ監査を行っている——脆弱性を見つけ、修正し、さらに常時稼働できるセキュリティ審査ツール一式まで構築した。
このコード群はどれほど老朽化し、雑然としているか
アルバータ州技術革新省は州内27部門のシステムを保守している。社会福祉から公共安全、山火事対応まで、すべてこれに依存している。その裏側には約1,280のアプリケーション、3,400のコードリポジトリがある。
その大部分はこれまで体系的なセキュリティ監査を受けたことがなかった。長年蓄積された技術的負債——安全でないコード、未修正のバグ、時代遅れのソフトウェア——は、ざっと見積もっても数十億ドル規模にのぼる。しかもこれらのシステムに保存されているのは、税務記録、政府調達データ、社会福祉のケース記録といった、最も機微な情報だ。
4億6600万行のコードから、どう問題を選び出すか
約50体のエージェントが自律的に並行稼働し、手分けしてすべてのコードリポジトリをスキャンする。見つけるのはセキュリティ脆弱性だけでなく、基盤インフラやデプロイフローの弱点、技術文書の欠落も含まれる。
スキャン全体は二段階に分かれる。まずルールエンジンで高速に一通りチェックし、既知の疑わしいパターンに一致するコードにマークを付ける。次にClaudeがこれらのマーク箇所を一件ずつ精査し、どのファイルの何行目に問題があるかを指摘する——開発者が直接確認しに行けるように。情報はこうして段階的にフィルタリングされ、精錬されていく。
ここでいうルールエンジン(rules engine)とは、あらかじめ書かれた機械的なパターンマッチングのルールのことだ。コードが特定の形をしていれば拾い出されるだけで、マークを付けるだけで真偽の判断はしない。
空港の金属探知機のようなものだ。ゲートが鳴ったからといって必ずしも問題があるわけではなく、まず人を止めて、真偽の判断は後段のより精密なチェックに委ねる。ルールエンジンは「ゲートを鳴らす」役、Claudeは後段の「精密チェック」役で、どのバッグを開けるべきかまで教えてくれる。
この一連のスキャンはアルバータが保有するすべてのコードリポジトリをカバーし、従来の自動スキャンツールでは見逃されていた問題も掘り起こした。20時間で完了し、チームの試算では同規模の作業を従来の人手による監査に置き換えると約6.5年かかるという。
選び出した問題は、続けてAIが直す
問題を選び出すのは前半戦にすぎない。スキャンで脆弱性が見つかった箇所は、Claude Codeがしばしば修正パッチをそのまま書き上げてしまう——修正の生成、テストの実行、ビルドの完了までを一気に。
システムに自動テストがなく、パッチが安全かどうか確認できない場合、Claudeはまずテストを補う。コードが古すぎて複雑すぎ、その場で継ぎ当てするのが割に合わない場合は、思い切ってより現代的で保守しやすい言語で書き直してしまう。この過程はすべて各部門のエンジニアと一緒に進められ、どのパッチも本番投入前にエンジニアによる人手のレビューと承認を経る。
先に補う
または丸ごと書き直し
レビュー承認して投入
差が最も如実に表れたのは、ある補助金プロジェクトのポータルだ。25年前にJavaで手書きされたもので、当時ゼロから構築するのに丸5か月かかった。今回、現代的な言語で書き直したところ、最短でわずか4〜5日で済んだ。
Javaで手書きされた補助金プロジェクトのポータルを、当初ゼロから構築するのにかかった時間。
同じシステムを現代的な言語で書き直すのに必要な最短時間。
スキャンが終わっても終わりではない——レッドチームとブルーチームが四六時中見張る
システムのスキャンとパッチ適用が終わっても、まだ終わりではない。アルバータ州のサイバーセキュリティチームは、専用のClaude審査エージェント群も構築し、開発プロセス全体を通じて常時稼働させている。これにより、セキュリティ監査を一度きりの特別調査から、日常開発の中の常態化したチェックへと変えた。
レッドチームのエージェントは攻撃者のように外部からシステムを探り、ある脆弱性がどう悪用されうるかを突き止める。続いてブルーチームのエージェントが国際的なセキュリティ標準に照らして防御を評価し、ファイル単位まで精密な修正案を書き出す。両チームが連携し、各アプリケーションが毎回約95項目のセキュリティ管理策をクリアするようにしている。
攻撃者を演じ、外部から能動的にシステムの突破を試みて、ある脆弱性がどう悪用されうるかを突き止める。
国際的なセキュリティ標準に照らして防御が万全か点検し、どのファイルをどう直すべきか具体的な修正案を書き出す。
ラウンドを重ねるごとに、各アプリケーションは約95項目のセキュリティ管理策(security control)を一件ずつ点検される。この95項目は国際的なセキュリティ標準から切り出された具体的なチェック項目——たとえばパスワードが暗号化して保存されているか、ユーザー入力が検証されているか、といったもので、合わせて95項目の「セキュリティ健康診断リスト」となり、毎回最初からやり直す。
レッドチームとブルーチームのほかにも、コード品質や、一般公開される文言がわかりやすいかどうかを専門にチェックするエージェントもいる。この一連の審査エージェント群は、いずれもClaude Agent SDKをベースに構築されている。
この経験は他の政府にも展開できるか
アルバータ州はこの経験を自分たちだけで抱え込むつもりはない。すでに一連のプロセスを技術ホワイトペーパーにまとめ、他の州・準州や連邦政府の参考として公開している。技術的負債やセキュリティ脆弱性といった悩みは、世界中どの政府のシステムにもあるからだ。
次のステップとして、アルバータ州はAIエージェントにコード修正だけでなく、エンジニアと共にゼロから新しいソフトウェアやツールを構築させることも計画している。たとえばある部門には、今も本番環境で稼働している185の老朽化アプリケーションがあり、保守コストが高く更新も難しい。チームはClaude Codeを使ってこれらを洗い出し、現代的な言語をベースにした再利用可能な16のアプリケーションへ統合する計画だ。
本番環境で稼働中の老朽化アプリケーション。保守コストが高く更新が難しい。
現代的な言語をベースにした、再利用可能なモダンアプリケーション。
同時にアルバータ州は「アルバータAIアカデミー」を通じて、政府職員と一般市民にAIの使い方を教育している。プロンプトの書き方からエンタープライズ級アプリケーションの構築まで幅広く扱う。
数字で語る
全編で最もインパクトのある数字をまとめて並べてみる——同じ一つの作業を、二つの時間スケールで見る。
AIで見つけて直す——脆弱性を洗い出して修正するのに、従来のやり方なら何年もかかっていたことを、私たちは数時間で終わらせた。ネイト・グラビッシュ(Nate Glubish)、アルバータ州技術革新省大臣
政府の古いコードのセキュリティを点検する:「人手で何年もかかる」→「AI群が1日足らずでスキャンし、しかもついでに直す」
カナダ・アルバータ州政府はClaude Codeを使い、約50体のAIエージェントを自律的に並行稼働させて、4億6600万行のコードを20時間でスキャンし終えた。1枚で、それがどう実現したか、効果はどれほどか、どの言葉を鵜呑みにすべきでないかを図解する。
↓ 1枚で読み切る · 動く図が1つあります
アルバータ州はカナダの一州だ。その技術革新省は州内27部門のコンピューターシステムを保守しており、合わせて約1,280のアプリケーション、3,400のコードリポジトリ(1つのソフトウェアの全ソースコードを格納するフォルダ)、計4億6600万行のコードがある。
✘ しかし大部分のコードは、これまで誰も体系的にセキュリティを点検したことがなかった
これらのシステムには税務記録、調達データ、社会福祉のケース記録といった最も機微な情報が保存されている。コードの大半は十数年、二十年と書き継がれてきたもので、蓄積された脆弱性、時代遅れのソフトウェア、未修正のバグは累計で数十億ドル規模にのぼると見られるが、どの行に悪用されうる穴が潜んでいるのか、誰にも見当がつかなかった。
2025年から、この省はその仕事をClaude Code(Anthropicのコーディングツール)に任せた。約50体のAIエージェント(自ら手順を計画し、実際に手を動かせるAIプログラム)が自律的に並行稼働し、20時間で4億6600万行のコードを一通りスキャンし終えた。脆弱性を見つけるだけでなく、見つけたらついでに直せる。
同規模の作業をチームは約6.5年かかると試算。しかも大部分のコードはそもそも順番が回ってこず、これまで体系的に点検されたことがなかった。
20時間で3,400のリポジトリ全部をスキャンし終える。脆弱性が見つかれば修正を生成し、不足しているテストを補う。古すぎるものは現代的な言語で丸ごと書き直す。
だが数十体のエージェントと数億行のコードで、選び出したのが本物の脆弱性であって、ただのノイズの山ではないとどう保証するのか。答えは下の図にある。
カギとなるのは二段階のパイプラインだ。まず機械が粗く選別し、次にClaudeが精密に選ぶ。見つかった問題はAIがそのまま修正し、そのあともレッドチームとブルーチームが毎日ループで見張る。
ここでいうルールエンジンとは、「コードが特定の形をしていればマークを付ける」機械的なパターンマッチングのルールで、拾い出すだけで真偽は判断しない——空港の金属探知機のように、鳴ったらまず止め、真偽の判断は後段の精密チェックに委ねる。レッドチーム/ブルーチームは攻守一対のAIで、一方はハッカーを演じて脆弱性を探し、もう一方は国際的なセキュリティ標準に照らして防御を補強し、どのファイルを直すべきか書き出す。毎回各アプリケーションは約95項目のセキュリティ管理策(95項目からなるセキュリティ健康診断リスト)をクリアする必要がある。
「約2,800倍速い」と言われてもピンとこないが、時間に換算すれば実感が湧く。同じ4億6600万行のコードのセキュリティ監査を、二つのやり方でそれぞれどれだけかかるか。
チーム試算
実際の所要
全部俺一人にのしかかる。
- × 3,400のリポジトリ
- × 4億6600万行のコード
- × ほとんど未点検
終わらない…
一斉にコードへ突撃。
終わった!?
本物の脆弱性をどう選ぶ?
次に俺が精査。
鳴ったら止めるだけ、真偽は判断しない。
何行目まで特定します。
確定してから投入。
丸ごと書き直し。
5か月 → 4〜5日
もう安心?
穴を探す!
防御を補強。
毎回約95項目チェック
Anthropicが顧客事例として発表したもの。
第三者検証はまだない。
AI群が1日でスキャンし終え、しかも手も動かす。
