📖

re:Invent 2025: FICOによるKiro活用の大規模IAMスキャナー開発とPROMPTフレームワーク

に公開

はじめに

海外の様々な講演を日本語記事に書き起こすことで、隠れた良質な情報をもっと身近なものに。そんなコンセプトで進める本企画で今回取り上げるプレゼンテーションはこちら!

re:Invent 2025 の書き起こし記事については、こちらの Spreadsheet に情報をまとめています。合わせてご確認ください

📖 re:Invent 2025: AWS re:Invent 2025 - Kiro in action: Red Team tactics at scale (DEV336)

この動画では、FICOのNick GilbertとDamienが、大規模AWS環境におけるIAMスキャナーの構築方法を解説しています。数百のAWSアカウントと数十万のリソースから脆弱性を発見するため、KiroというAI搭載IDEを活用したspec-driven developmentアプローチを採用。vibe codingではなくPROMPTフレームワーク(Purpose、Requirements、Output、Method、Pro tip、Testability)を用いて要件、設計、タスクの3つのmarkdownファイルでスペックを定義します。このIAMスキャナーは、高価値の攻撃パス特定、クロスアカウントアクセス列挙、ワイルドカードやトラストポリシーの誤設定検出、権限昇格パスの分析を実行。従来200~350時間かかる開発を、Kiroにより25~35時間に短縮でき、70%の削減を実現しています。実際のデモでは40個の未使用ロールのうち21個が危険と判定され、JSONとmarkdownレポートが自動生成されました。

https://www.youtube.com/watch?v=IU6FOTCJ2Qs
※ こちらは既存の講演の内容を最大限維持しつつ自動生成した記事になります。誤字脱字や誤った内容が記載される可能性がありますのでご留意下さい。

本編

Thumbnail 0

Thumbnail 10

可視性のギャップを埋めるIAMスキャナーの構築:Kiroを活用したspec-driven developmentの実践

DEV336 Kiro in action へようこそ。今日、私たちが解決しようとしている問題についてお話しします。 それは可視性のギャップです。大規模な組織で数百の AWS アカウントに対してレッドチーム・エンゲージメントやペネトレーション・テスト・アセスメントを実施する場合、数十万のリソースを扱うことになり、その中から脆弱性を見つけ出す必要があります。今日は、Kiro を使ってそれを実現するツールの構築方法をお見せします。

Thumbnail 30

Thumbnail 40

自己紹介をさせてください。私は Nick Gilbert で、FICO のレッドチーム・マネージャーです。AWS Community Builder として Security and Identity チームに属しています。 また、Security Specialty Exam の AWS Subject Matter Experts プログラムにも参加していますし、Gen AI の愛好家でもあります。

Thumbnail 50

やあ、僕は Damien です。 昼間は FICO のシニア・クラウド・セキュリティ・エンジニアで、夜は DevSecOps Blueprint の創設者をしています。これは基本的に、人々が DevSecOps とクラウド・セキュリティに入門するのを支援するものです。私も Nick と同じく AWS Community Builder で、LinkedIn でたくさんのコンテンツを制作したり、コースを作成したりしています。そして、時間があるときの楽しみとしては、アニメが好きで、車も好きで、ビデオゲームもプレイします。これらが私の趣味の概要です。

Thumbnail 80

Thumbnail 90

では、この可視性のギャップをどのように埋めるつもりなのかについて、簡単に説明しましょう。ここで Nick に戻して、IAM スキャナーと高レベルの要件についてカバーしてもらいます。 私たちは以下のことを行う IAM スキャナーを構築します。まず、高価値の攻撃パスを特定します。クロスアカウント・アクセスを列挙します。多くの場合、dev アカウントから始まり、その後、prod アカウント内のクラウン・ジュエル資産に向かって進みたいと考えます。ロールを影響度によって優先順位付けすることができます。ワイルドカードやトラスト・ポリシーの一般的な間違い、外部 ID の欠落などを発見します。具体的で実行可能なエスカレーション・パスを提供します。繰り返し可能な結果を提供するので、調査結果を報告した後、チームが問題を修正したと言ったら、単にスキャナーを再度実行して、すべてが修正されたことを確認できます。そして最後に、Python とマルチスレッドを使用して、数百のアカウントを一度にスキャンできるようにします。

Thumbnail 140

では、セキュリティ・エンジニアとして、私たちが自分たちに問いかけるべき質問は、どうすれば迅速にソリューションを解決できるかということです。業界に AI が導入されたことで、これを実現するために使用できる 2 つの戦略があることが分かっています。vibe coding と spec-based design、つまり spec-driven development があります。問題は、どちらを使うかということです。高レベルで vibe coding について説明しましょう。Vibe coding は基本的に、あなたと AI が一緒に vibe するということです。チャットを開いて、ChatGPT、Claude、または何でも持っているものを使います。アイデアを投げかけて、ブレインストーミングして、それを洗練させて、コードをコピー・ペーストして、それを微調整し続けて、同じことを何度も繰り返して、実際に動作するまで続けるということです。

Thumbnail 170

これは概念実証には素晴らしいんですが、スケーラビリティのために必要なものではありません。スケールしないんです。理解する方法がない、共有された理解がない、保証もない。そして長期的なメンテナンス性も絶対にありません。私たちのアプローチでは、本番規模のセキュリティツールや、さらにはガードレールなど、あるいはどんなタイプのセキュリティオートメーションであっても、そのような方法では構築したくないんです。

Thumbnail 210

しかし spec-based design と spec-driven development を使うと、かなり異なります。このように考えると、基本的にあなたが自分のソリューションのアーキテクトになるんです。AI にコードを書くように頼む前に、基本的に最初から最後まで、要件からすべてをマッピングして、実装したい方法まで、すべてについて考える必要があります。これは、スペック自体の変更によって更新される、スケーラブルでメンテナンス可能なソリューションを構築するのに役立つんです。

Thumbnail 240

そしてそれがまさに Kiro が登場する場面です。Kiro は基本的に、バックエンドの AI エージェントを使用してソフトウェア開発を強化するために使用される AI 搭載の IDE です。Kiro の主な機能の 1 つは、私たちが話した spec-based または spec-driven development と spec-based design をサポートしていることです。それだけでなく、非常にユーザーフレンドリーで使いやすいです。開発者で VS Code を使っているなら、基本的に VS Code のクローンなので非常に簡単です。そして様々な異なるプログラミング言語もサポートしています。Python は私たちの第一選択のプログラミング言語で、IAM スキャナーを構築するために使用しているものです。

Thumbnail 300

では、ここで Nick に戻して、PROMPT フレームワークを使用してスペックを作成する方法について話してもらいます。スペックファイルを作成するには、PROMPT フレームワークを使用するのが良い方法です。PROMPT はアクロニムです。 P は Purpose を表します。これは構築しようとしているものの簡潔な説明です。次に Requirements を提供したいです。つまり、プログラムの高レベルの概要です。これを職務記述書のように考えてください。

Thumbnail 310

Thumbnail 320

Thumbnail 330

Thumbnail 340

Thumbnail 350

次は output です。 成果物をどのように受け取りたいかをリストアップします。1 つの単一ファイルで受け取りたいですか、それとも複数のファイルにモジュール化して受け取りたいですか?次は method です。これはプロンプトの最大のセクションになります。 プロンプトの非常に具体的な詳細を列挙したいです。次に pro tip ですが、これは Kiro を使用するときに常に好んでやることです。 プロンプトの最後に、開始する前に澄み切った質問をするよう指示します。通常、私が忘れた重要なことが何かあります。そして最後に testability です。 Kiro の素晴らしい点の 1 つは、ユニットテストを作成できることです。ですから、ソフトウェアに変更を加えるたびに、単にユニットテストを実行して、すべてが正常に機能していることを確認してください。

IAM scanner に関して言えば、私たちが使用していて、Kiro が期待しているのは 3 つの markdown ファイルです。要件があります。これは基本的に私たちが望んでいることです。設計があります。これは必要なものです。そして、タスクもあります。これは私たちが実際にこれをどのように機能させたいのか、ステップバイステップの実行です。これの素晴らしい点は、ソフトウェア開発やエンジニアリングの経験がそれほど多くない人でも、本質的にはテキストの束を含む markdown ファイルを作成するだけで、独自の製品を作成できるということです。Kiro の重要な点は、コードではなく英語で仕様を書くことができるようにして、SDLC の異なる部分に位置付けることだと思います。

Thumbnail 400

IAM scannerの動作原理と実装結果:70%の開発時間削減を実現した自動化ツール

では、IAM scanner がどのように機能するかについて話しましょう。 最初に行うことは、AWS マネージドポリシーをキャッシュすることです。1000 以上あります。数百のアカウントを処理する場合、毎回ダウンロードしたくはありません。ですから、そこからキャッシングシステムを使用します。次に、IAM データを収集します。これはユーザー、グループ、ロール、カスタマーマネージドポリシーです。その後、ポリシーエンジンを使用してすべてのマネージドポリシーを分析し、高レベルの権限を持つものを見つけます。

次に、すべてのプリンシパルをチェックします。マネージドポリシーとインラインポリシーの両方を確認し、どのプリンシパルが危険であるかを判断します。その後、ロールの信頼ポリシーを確認します。これは現在のアカウント内での横展開、およびクロスアカウントアクセスにとって重要です。その後、未使用のロールを確認します。レッドチームアセスメントを行う場合、私たちが最終的に使用するロールは、長い間前に作成された未使用のロールで、高い権限を持ち、削除されたことがないものです。そして、権限昇格パスを分析します。これはすべてのロールを通過し、管理者アクセスへのパスがあるかどうかを判断し、現在の位置から管理者アクセスまでどのように到達するかを教えてくれます。例えば、特定のロールを引き受けてから、そのロールを使用して高い権限を持つロールで EC2 インスタンスを作成することかもしれません。最後にコードを提供します。

Thumbnail 480

アーキテクチャの観点から IAM scanner がどのように機能するかを理解したので、AI を使用せずにこれを試みた場合と Kiro を使用した場合にかかる推定時間について話しましょう。 テーブルを見ると、計画と設計から開発まで、タッチポイント会議、テスト、そしてリワーク率があることがわかります。これらのさまざまなステップをすべて含む、そのような洗練されたツールを構築するには、200 から 350 時間を見ています。しかし Kiro を使用すると、本質的にすべてのパラメータを渡して、AI ですべてを構築できるようにしているため、全体的に少なくとも 70 パーセントの削減が見られます。これにはユニットテストケースも含まれます。重要な点はリワーク率でもあります。なぜなら、コードを生成しており、生成中にコードをテストしているからです。ですから、このツールを構築するために、おそらく 25 から 35 時間、1 週間以内で考えています。

Thumbnail 550

Thumbnail 600

ですから、私が嘘をついていないことを知っていただくために、実際に何が起こるかを見ることができるように、いくつかの結果について話しましょう。 これを見ると、これは IAM scanner のステップ 5 で、基本的に私のアカウント内でロール分析を実行して反復処理しています。はい、これは私のアカウント ID です。盗んだり、取ったり、何か悪いことをしたりしないでください。どうせアカウントを終了するつもりですから。しかし、最終的には、未使用のロールが 40 個あり、そのうち 21 個が危険と見なされていることがわかります。これの素晴らしい点は、2 つのファイルを生成することです。あなたが書いているオートメーションに使用できる JSON ファイルを生成し、また、すべての情報とそれらの分析ポイントを含む markdown レポートも生成します。しかし、生成されているそのレポートについて、クラウド内のそれらのリソースをセキュアにするための追加のサポートを得るために、リーダーシップに追加のお金を投じるよう説得する必要がある場合、 これを PDF としてエクスポートして、すべてを送信できます。

これにより、アカウント内で何が起こっているのか、そしてなぜそうなっているのかについてのエグゼクティブサマリーを人々に提供することで、彼らを納得させることができます。これらすべてはマークダウンファイルによって維持されているので、これに変更を加える必要がある場合、本質的にはスペックを更新して、Kiro に代わってコードを更新してもらいます。

Thumbnail 630

重要なポイントをいくつか紹介します。Spec-driven design または Kiro を使用して、セキュリティソリューションを迅速に開発およびスケールしましょう。なぜでしょうか?テキスト経由でそれらの要件を本質的に渡すことができるからです。また、spec ファイルを使用して、製品要件をコードを書かずに実行可能なコードとソフトウェアに変換します。最後に、セキュリティエンジニアであれば、red team、blue team、purple team、またはその他のチームにいるかどうかに関わらず、クラウド環境への可能性の低いエントリーポイントと隠れた脆弱性やリスクを見つけるための自動化ツールを作成し、それらすべてを自動化された方法で軽減できるようにしたいと考えています。

終わりに近づいてきたので、コードを確認したい場合は、GitHub の IAM Scanner の一番上の QR コードをスキャンしてください。これは使用可能です。また、ソーシャルメディアで私と Nick とつながってください。これらは私たちの LinkedIn プロフィールへの QR コードです。聞いていただきありがとうございました。

Thumbnail 690


※ こちらの記事は Amazon Bedrock を利用し、元動画の情報をできる限り維持しつつ自動で作成しています。

Discussion