カナダ・アルバータ州がClaude Codeでセキュリティ監査、20時間で4億6,600万行のコードをスキャン、本来なら6.5年かかるはずだった
- カナダ・アルバータ州の技術イノベーション省は2025年から、Claude Code(Claude OpusとClaude Sonnetモデルを併用)で政府システムのセキュリティ監査を行っている。
- 約50のエージェントが自律的に並列稼働し、20時間で4億6,600万行のコードをスキャン。州内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億6,600万行のコードからどうやって問題を見つけるか
約50のエージェントが自律的に並列稼働し、それぞれ手分けして全コードリポジトリをスキャンした。探すのはセキュリティの脆弱性だけでなく、基盤インフラやデプロイフローの弱点、技術ドキュメントの不足も含まれる。
スキャン全体は二段階に分かれる。まずルールエンジンが高速に全体をチェックし、既知の疑わしいパターンに一致するコードをマークする。次にClaudeがそのマークされた箇所を一つひとつ精査し、問題ごとにどのファイルの何行目にあるかを指摘する。これにより開発者が直接確認しやすくなる。情報はこうして段階的にふるいにかけられ、精錬されていく。
ここでいうルールエンジン(rules engine)とは、あらかじめ書かれた機械的なパターンマッチングのルールのことだ。コードがある特定の形をしていれば拾い上げられる仕組みで、マークするだけで真偽の判断はしない。
空港の保安検査で、まず金属探知ゲートを通るのと同じだ。ゲートが鳴ったからといって必ず問題があるわけではなく、まずは足止めして、真偽の判定は後段のより精密なチェックに委ねる。ルールエンジンは「ゲートを鳴らす」役目を担い、Claudeはその後の「精密チェック」を担当し、どのカバンを開けるべきかまで教えてくれる。
今回のスキャンは、アルバータ州が保有するすべてのコードリポジトリをカバーし、従来の自動スキャンツールでは見逃されていた問題も掘り起こした。20時間で完了し、チームの試算ではこの規模を従来型の人手監査でやると約6.5年かかるという。
見つけた問題は、そのままAIが修正へ
問題を見つけるのは前半戦にすぎない。スキャンで脆弱性が見つかった箇所については、Claude Codeがしばしばそのままパッチを書き上げる——修正の生成、テストの実行、ビルドの完了まで。
システムに自動テストがなくパッチの安全性を確認できない場合、Claudeはまずテストを補う。コードが古すぎたり複雑すぎたりしてその場での修正が割に合わない場合は、より現代的で保守しやすい言語で丸ごと書き直してしまう。この全プロセスは各部門のエンジニアと共に進められ、どのパッチも本番反映前に必ずエンジニアによる人手レビューと承認を経る。
先に補完
または全面書き換え
レビュー・承認して反映
特に差が際立つのが、ある補助金プロジェクトのポータルだ。25年前にJavaで手作業で書かれ、当時ゼロから構築するのに丸5か月かかった。今回、現代的な言語で書き直したところ、最短でわずか4〜5日で済んだ。
Javaで手作業により作られた補助金プロジェクトポータルを、当初ゼロから構築するのにかかった時間。
同じシステムを現代的な言語で書き直すのに必要な最短時間。
スキャンが終わっても続く:レッドチームとブルーチームが四六時中見張る
システムのスキャンが終わり、パッチが当てられても、それで終わりではない。アルバータ州のサイバーセキュリティチームは、開発の全プロセスで常時稼働する専用のClaude審査エージェント群も構築した。これにより、セキュリティ監査を一回限りの特別調査から、日常的な開発の中の常態化したチェックへと変えている。
レッドチームのエージェントは攻撃者のようにシステムを外部から探り、ある脆弱性がどう悪用されうるかを見極める。続いてブルーチームのエージェントが国際的なセキュリティ基準に照らして防御を評価し、ファイル単位まで精密な修正案を書き出す。この二つのチームが連携することで、各アプリケーションは毎回約95項目のセキュリティ管理策をクリアすることになる。
攻撃者になりきり、外部から積極的にシステム突破を試み、脆弱性がどう悪用されるかを見極める。
国際的なセキュリティ基準に照らして防御が十分かをチェックし、どのファイルをどう直すべきか具体的な修正案を書く。
1ラウンドごとに、各アプリケーションは約95項目のセキュリティ管理策(security control)を一つずつチェックされる。この95項目は、国際的なセキュリティ基準から切り出された具体的なチェック項目——例えばパスワードが暗号化して保存されているか、ユーザー入力が検証されているか——であり、合わせて95項目のセキュリティ健康診断チェックリストとなる。これを毎ラウンド最初からやり直す。
レッド・ブルーの両チーム以外にも、コード品質や、一般公開される文言がわかりやすいかを専門にチェックするエージェントもいる。この一連の審査エージェント群は、すべてClaude Agent SDKをベースに構築されている。
この経験は他の政府にも展開できるのか
アルバータ州は、この経験を自分たちだけのものにするつもりはない。すでに一連のプロセスを技術白書としてまとめ、他の州・省・連邦政府が参考にできるよう公開している。技術的負債やセキュリティの脆弱性といった悩みは、世界中の政府システムに共通するものだからだ。
次のステップとして、アルバータ州はAIエージェントにコード修正だけでなく、エンジニアと共にゼロから新しいソフトウェアやツールを構築させる計画だ。例えばある部門には本番環境でまだ動いている老朽アプリケーションが185あり、維持費がかさみ更新も難しい。チームはClaude Codeを使ってこれらを洗い出し、現代的な言語ベースの再利用可能なアプリケーション16本に統合する予定だ。
本番環境でまだ動いている老朽アプリケーション。維持コストが高く更新が難しい。
現代的な言語をベースにした、再利用可能な現代的アプリケーション。
これと並行して、アルバータ州は「Alberta AI Academy」を通じて政府職員と一般市民にAIの使い方を教育している。プロンプトの書き方からエンタープライズ級アプリケーションの構築まで教えている。
数字が語る
本記事で最もインパクトのある数字の組み合わせをまとめてみよう。同じ作業を、二つの時間スケールで見る。
AIでシステムの脆弱性を見つけて修正する——従来のやり方なら何年もかかっていたはずのことを、私たちはわずか数時間でやり遂げました。ネイト・グルビッシュ(Nate Glubish)、アルバータ州技術イノベーション省大臣