【re:Invent 2025】【AWSパートナー限定ワークショップ】Security Hubの検出結果を元にBedrockを活用した運用自動化(ランブック構築)の実現を体験してみました

記事タイトルとURLをコピーする

今回のブログはワークショップ参加の体験記となります。 サーバーワークスの今野です。

実は、re:Invent 2025に現地参加してきました。出張中に現地で飲んだナパワインが美味しかったですね〜

ワークショップは配信がないことや、いくつか質問もしてみたりしたので気になる方はご覧ください!

参加したワークショップの概要

生成AIを活用したセキュリティランブックの構築をハンズオン形式で学ぶことを目的としたワークショップとなります。

  • 正式名称: [TNC401] Build generative AI security runbooks with Amazon Bedrock [AWS Partners only]
  • 目標: Amazon SageMakerノートブックとAmazon Bedrockを使い、セキュリティ検出結果を迅速に解決するためのランブックを構築する手法を習得する。
  • 対象者: AWSパートナー、セキュリティ関連の役割を担う技術者。

そもそも、「ランブック」とは?

ここで言われる「ランブック」とは、いわば「動的な手順書」だと私は考えております。なぜ動的と言えるのか、下記が挙げられます。

  • 状況に応じたフローの分岐(動的参照)が出来る
  • システムが実行するためのコードとしての側面がある(Runbook Automation)
  • クラウド環境など変化の激しいシステム運用において、ランブックは頻繁に更新・改善される

アーキテクチャの紹介

今回のワークショップでは、下図のアーキテクチャの元、ハンズオンを実施しました。

※Amazon SageMaker NotebookはオープンソースのJupyter Notebook(またはJupyterLab)環境をベースにしています。

Module 1:AIによるセキュリティ診断と修正コードの生成

[In Module 1] Summarize findings & Create remediation code

最初のモジュールでは、Security Hubが検知した「Findings(発見事項)」を構造データ(JSON形式)で出力し、Claude Sonnetに渡して自然言語での解説と修正プログラム(Pythonコード)の生成を体験しました。

ワークショップでは、下記のようなシナリオでした。

  1. Security Hubの「Findings(発見事項)」より「ポート22が0.0.0.0/0に開いているEC2セキュリティグループの検出」をAWS CLIで出力
  2. 一次対応(AI): Claude SonnetがJSONを解析し、「自然言語での解説」と「修正プログラム」を提示

これらがJupyter Notebook上でランブック化されており、作業者は「Ctrl + Enter」で実行していくだけでAIに作業をさせることが出来、利便性を感じました。

Module 2:Tool Use(Function Calling)によるリアルタイム連携

[In Module 2] Tool use / Function Calling

このモジュールでは、「get_findings_by_severity」というツールを定義(ワークショップでは予め用意されていました)して、Claude Sonnetに渡します。

ワークショップでは、下記のようなシナリオでした。

  1. 自然言語で「Security Hubの検出結果のうち、Criticalなものを幾つか提示して」のように質問
  2. Claude Sonnetが「get_findings_by_severity」ツールを活用し、リアルタイムでSecurity Hubの検出結果から概要する情報を返答

Claude Sonnetにツールを使わせることで、リアルタイムで情報を取って来れるのはいいですね。

Module 3:Human-in-the-loop(人間による承認プロセス)の実装

[In Module 3] Human-in-the-loop for safety

AIがツールを使えるようになると便利ですが、同時に「勝手に重要な操作をされては困る」というリスクも生まれます。特にセキュリティ対応で、AIが勝手に設定を変更してしまうのは危険です。

このモジュールでは、Human-in-the-loop(ヒューマン・イン・ザ・ループ) 、つまり人間による承認プロセスの実装を体験しました。

ワークショップでは、下記のようなシナリオでした。

  1. Claude Sonnetが「get_findings_by_severity」ツールを活用し、リアルタイムでSecurity Hubの検出結果(GuardDuty.1)を返答
  2. Claude Sonnetへ検出結果に対する修復を依頼すると、GuardDuty有効化のための「修正プログラム」を提示
  3. 実施について承認を求められる(Human-in-the-loop)
  4. 承認をすると修復が実行される

Security HubのAWS 基礎セキュリティのベストプラクティス (FSBP)でも準拠が求められる「[GuardDuty.1] GuardDuty を有効にする必要があります」に準拠するための是正手順だったので、実際の運用でもよく対応が求められるケースかと思います。このような自動化の仕組みを実運用で組み込めると効率化が図れそうです。

Module 4:組織コンテキストとKnowledge Basesの活用

[In Module 4] Organization context with Knowledge Bases

最後に体験したのは自社のセキュリティポリシー(社内規定)など、「組織固有の事情」への対応です。

ワークショップでは、下記のようなシナリオでした。

  1. Knowledge Bases(ナレッジベース)を活用して、組織のドキュメントやポリシーをClaudeに追加情報として与えます。(社内ポリシーはS3バケットへMarkdown形式で格納します)
  2. 「IAMパスワードポリシーが弱い」という検出結果に対し、ナレッジベースをコンテキストとしてClaude Sonnetに自然言語で質問
  3. Claude Sonnetが、検出結果とKnowledge Bases(ナレッジベース)の情報を照合し「自社のセキュリティポリシーに準拠した」適切な修復を行うための「修正プログラム」を提示

データがMarkdown形式で用意されていたため、スムーズにランブックを実現出来ました。実際にはデータをS3バケットなどのソースに渡せるよう変換が必要なことは考慮事項かもしれません。

質問したこと

せっかく現地でワークショップに参加したので、幾つか講師の方に質問をしてみました。

自然言語(日本語)への対応について

ワークショップでは全編英語であったため、プロンプトを日本語で渡したら動作するかという質問をしてみました。講師の方はどうやら試したことがないらしく、とりあえずやってみることにしました。

プロンプトで日本語で出力するように指示を記載

出力結果は下記の通りでした。

発見結果のサマリと修復の提案を日本語で返してくれました

今回のランブックでは上手く日本語変換出来ているようでしたが、プロンプトで指示する内容であったりLLM等が起因してハルシネーションが起こるかもとのことだったので、実運用に実装する時には考慮する必要がありそうです。

マルチアカウントへの活用について

Organizations環境において、ランブック運用を集約するような共通的な機能を持ったアカウント(例えば、「共通運用アカウント」など)を設けることも出来るかと思います。この共通的なアカウントからメンバーアカウントの検出結果を読み取ったり、修復処理を実行することが出来るか質問してみました。

結論としてはYESで、権限設定等を適切に行えば実装出来るとのことです。マルチアカウントでのランブック構築については機会があれば別のブログにしてみようと思います。

おわりに

今回はワークショップに関するレポートでした!

Module 1の基礎から組織ポリシー連携まで、段階的に自動化の仕組みを学ぶ非常に濃密なワークショップでした。

セキュリティ運用における「AIによる迅速な起案」と「人間による確実な承認」の組み合わせは、今後スタンダードになっていく予感がします。re:Inventのワークショップは資料が公開されないことも多いですが、本記事が皆様のセキュリティ自動化のヒントになれば幸いです。

今野 祐靖(執筆記事の一覧)

2024年4月中途入社 年間約300日ととのうサウナー